自己大概在一年前开始使用LESS编写样式,现在感觉不用LESS都不会写样式了。现在写静态页面完全离不开LESS与Zen Coding,我可以不用什么IDE,但这两个工具却必须要,当然也强烈推荐看到这篇文章的朋友去试试LESS与Zen Coding(Zen Coding现在改名叫Emmet)。

在使用LESS的过程中,自己慢慢积累了一些常用的LESS函数,经过自己的实践,感觉还是很不错,会让你少写很多的css hack,这也就少了很多的粘贴,复制。效率能提高不少。下图是helper.less的代码结构:

//这是compat命名空间下的所有方法
#compat {
.mixin (@type) when (@type = clearfix) {
*zoom: 1;
&:before,
&:after {
content: "\20";
display: table;
line-height: 0;
}
&:after {
clear: both;
}
} .mixin(@type) when (@type = inline-block) {
display:inline-block;;
*display:inline;
*zoom:1;
} .mixin(@type, @v) when(@type = opacity) {
@msv: unit(percentage(@v));
opacity: @v;
filter:alpha(opacity=@msv);
} .mixin(@type) when (@type = opacity) {
@v: 0.5;
@msv: unit(percentage(@v));
opacity: @v;
filter:alpha(opacity=@msv);
} .mixin(@type, @color, @alpha) when (@type = rgba-bgc) {
@r: red(@color);
@g: green(@color);
@b: blue(@color); @color2: rgba(@r, @g, @b, @alpha);
@ie: argb(@color2); background-color: rgba(@r, @g, @b, @alpha);
filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=@ie,EndColorStr=@ie);
} .mixin(@type, @color, @alpha) when(@type = rgba-bdc) {
@r: red(@color);
@g: green(@color);
@b: blue(@color); border-color: rgba(@r, @g, @b, @alpha);
} .mixin(@type) when(@type = hide-text) {
white-space: nowrap;
text-indent: 100%;
overflow: hidden;
} .mixin(@type) when(@type = wto) {
white-space:nowrap;
text-overflow:ellipsis;
overflow:hidden;
} .mixin(@type, @fontName, @fontFileURL) when (@type = font-family) {
@font-face {
font-family: "@{fontName}";
src: url("@{fontFileURL}.eot"); /* IE9 Compat Modes */
src: url('@{fontFileURL}.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url("@{fontFileURL}.woff") format('woff'), /* Modern Browsers */
url("@{fontFileURL}.ttf") format('truetype'), /* Safari, Android, iOS */
url("@{fontFileURL}.svg#YourWebFontName") format('svg'); /* Legacy iOS */
}
}
}

下面是我们的具体Demo例子:

//导入函数库
@import "helper"; //导入配置
@import "config"; //demo1: 定义一个常用的.clearfix
.clearfix {
#compat > .mixin(clearfix);
} //demo2: 定义自己的字体(使用font-icon)
#compat > .mixin(font-family, myFontFamily, 'http://l.com/font/myFontFamily'); //demo3: 定义自己的字体,但参数通过config.less配置
#compat > .mixin(font-family, @fontFamilyName, @fontFileURL); //demo4: 一步搞定颜色十六进制到rgba的转换
.rgbaTest {
#compat > .mixin(rgba-bgc, #000, 0.27);
} //demo5: 常用的opacity
.opcity27 {
#compat > .mixin(opacity, .27);
} //下面是编译后生成的css
.clearfix {
*zoom: 1;
}
.clearfix:before,
.clearfix:after {
content: "\20";
display: table;
line-height: 0;
}
.clearfix:after {
clear: both;
}
@font-face {
font-family: "myFontFamily";
src: url("http://l.com/font/myFontFamily.eot");
src: url('http://l.com/font/myFontFamily.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url("http://l.com/font/myFontFamily.woff") format('woff'), /* Modern Browsers */
url("http://l.com/font/myFontFamily.ttf") format('truetype'), /* Safari, Android, iOS */
url("http://l.com/font/myFontFamily.svg#YourWebFontName") format('svg');/* IE9 Compat Modes */
/* Legacy iOS */
}
@font-face {
font-family: "lessTest";
src: url("http://www.jagus720.com/font/fontTest.eot");
src: url('http://www.jagus720.com/font/fontTest.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url("http://www.jagus720.com/font/fontTest.woff") format('woff'), /* Modern Browsers */
url("http://www.jagus720.com/font/fontTest.ttf") format('truetype'), /* Safari, Android, iOS */
url("http://www.jagus720.com/font/fontTest.svg#YourWebFontName") format('svg');/* IE9 Compat Modes */
/* Legacy iOS */
}
.rgbaTest {
background-color: rgba(0, 0, 0, 0.27);
filter: progid:DXImageTransform.Microsoft.gradient(startColorStr=#45000000, EndColorStr=#45000000);
}
.opcity27 {
opacity: 0.27;
filter: alpha(opacity=27);
}

写在最后,使用这样的一个LESS工具库的好处:

1. 由于这些工具方法都是函数,所以在编程中函数有什么优点,他都有,在一些IDE中(如IDEA)甚至会给出相应的提示

2. 使用类似的工具库后,我们编写的LESS原文件,代码更优雅,更好阅读,更容易维护

3. LESS的编译可以使用Koala(请Google或Baidu之)或grunt的相应插件

当然,这个helper.less本身写的还是很一般,如里面的percentage模块就很不好,但也没想到更好的方法。大家如果有什么建议,请留言,非常感觉!

点击下载helper.less及示例

自己的一个LESS工具函数库的更多相关文章

  1. 如何持续集成/交付一个开源.NET函数库到Nuget.org

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:这是一个简单的入门向导,涉及到GitHub.AppVeyor和Nuget.org. 最 ...

  2. 封装一个Ajax工具函数

    /*封装一个ajax工具函数*/ window.$ = {}; /*通过$定义一个ajax函数*/ /* * 1. type   string   请求的方式  默认是get * 2. url     ...

  3. 从零开始学习jQuery (九) jQuery工具函数

    一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些许秘籍. 我们经常要使用脚本处理各种业务逻辑, 最常见的就 ...

  4. labview从入门到出家5(进阶篇)--程序调试以及labview函数库的运用

    跟了前面几章的操作流程,相信大家对labview有了一定的认识.其实只要了解了labview的编程思路,再熟悉地运用各个变量,函数以及属性,那么我们就可以打开labview的大门了.跟其他编程语言一样 ...

  5. 为开发者准备的 Android 函数库(2016 年版)

    转载:http://www.androidchina.net/5922.html第三方函数库(译者注:包括第三方提供的 SDK,开源函数库)以惊人的方式助力着 Android 开发,借助这些其他开发人 ...

  6. 开发常用的 Android 函数库

    第三方函数库(译者注:包括第三方提供的 SDK,开源函数库)以惊人的方式助力着 Android 开发,借助这些其他开发人员辛勤工作的成果,我们开发起来更轻松和快捷.目前存在成千上万的函数库,如何选择正 ...

  7. linux 函数库使用

    程序函数库可分为3种类型:静态函 数库(static libraries).共享函数库(shared libraries)和动态加载函数库(dynamically loaded libraries) ...

  8. Android 为开发者准备的最佳 Android 函数库(2016 年版)

    本文是翻译自 CloudRAIL 的官方博客(https://cloudrail.com/best-android-libraries-for-developers/),本文中分享的 Android ...

  9. [js高手之路] 跟GhostWu一起封装一个字符串工具库-架构篇(1)

    所谓字符串工具库就是利用javascript面向对象的知识封装一个常用的字符串处理方法库,首先给这个库起个名字,好吧就叫ghostwu.js. 看下ghostwu.js的整体架构: ; (functi ...

随机推荐

  1. MAC 如何设置文件夹权限为777

    1. cd 你的文件夹路径的上一级目录. 2. sudo chmod -R 777 你的文件夹名. 3. 输入密码. 4.成功

  2. Ubuntu rsync同步

    >服务器端:Ubuntu 9.10 - 192.168.1.3客户端:Ubuntu 10.04 - 192.168.1.73 我们先来设置一下服务器端的配置 1.ubuntu系统安装完之后,rs ...

  3. IntelliJ IDEA:Getting Started with Spring MVC, Hibernate and JSON实践

    原文:IntelliJ IDEA:Getting Started with Spring MVC, Hibernate and JSON实践 最近把编辑器换成IntelliJ IDEA,主要是Ecli ...

  4. Adb connection Error:远程主机强迫关闭了一个现有的连接 解决方法

    用真机调试程序的时候,eclipse 的 Console 总是出现如下的错误"Adb connection Error:远程主机强迫关闭了一个现有的连接". 问题出现的原因:这是 ...

  5. Data Flow ->> Term Lookup

    Term Lookup是和Term Extraction相反的一个组件.Term Extraction是为了找出term,Term Lookup是利用我们关心的term list来找出某个文本里面包含 ...

  6. RAID

    RAID(is short for redundant arrays of independent disks) 独立/廉价磁盘冗余阵列.基本思想:把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使 ...

  7. python中写shell(转)

    python中写shell,亲测可用,转自stackoverflow To run a bash script, copy from stackoverflow def run_script(scri ...

  8. USACO Section 2.4: Bessie Come Home

    因为题目给了边的信息,所以比较适用bell-man的方法 /* ID: yingzho1 LANG: C++ TASK: comehome */ #include <iostream> # ...

  9. redis 2.4异常

    最近公司redis服务出现了异常,记录下教训: redis异常后:观察redis服务,可以看到redis cpu占用100% 用strace命令查看redis进程,显示如下: open("/ ...

  10. C and C++ : Partial initialization of automatic structure

    Refer to: http://stackoverflow.com/questions/10828294/c-and-c-partial-initialization-of-automatic-st ...