自己大概在一年前开始使用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. mysql使用过程中碰到的问题

    start job failed to start mysql ubuntu 原因时我将var整个目录的组权限设置为www-data了, 试了网上的办法都不行(有个妥协方法是重新安装, 但很不好), ...

  2. JavaWeb项目开发案例精粹-第4章博客网站系统-002辅助类及配置文件

    1. <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5&qu ...

  3. Java-马士兵设计模式学习笔记-观察者模式-OOD 封装Listener

    一.概述 childe类中的是关联监听者dad的,若要再增加监听者,会很不方便,且要修改代码.好的方法是封装监听者类,用addListener()方法动态添加监听者 二.代码 1.Test.java ...

  4. Java-J2SE学习笔记-查找一个String中,subString的出现次数

    1.查找一个String中,subString的出现次数 2.代码 package Test; public class TestStringContain { public static void ...

  5. swift:用UITabBarController、UINavigationController、模态窗口简单的搭建一个QQ界面

    搭建一个QQ界面其实是一个很简单的实现,需要几种切换视图的控制器组合一起使用,即导航控制器.标签栏控制器.模态窗口.其中,将标签栏控制器设置为window的rootViewController,因为Q ...

  6. Linux SHELL脚本

    在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具.Shell不仅仅是命令的收集,而且是一门非常棒的编程语言.可以通过使用shell使大量的任务自动化,shell ...

  7. 感知机(python实现)

    感知机(perceptron)是二分类的线性分类模型,输入为实例的特征向量,输出为实例的类别(取+1和-1).感知机对应于输入空间中将实例划分为两类的分离超平面.感知机旨在求出该超平面,为求得超平面导 ...

  8. 《Linux shell变量总结回顾》RHEL6(转)

    文章版权:http://www.cnblogs.com/linux-super-meng/ 环境变量路径: [root@localhost ~]# set   //查看到的是局部变量和全局变量2种 [ ...

  9. Linux之Samba的配置

    Samba的配置   对于linux与windows共享,和平共处,我们可以用Samba软件 Samba是一套免费的开源软件,可以在linux或其他类unix操作系统上实现windows域控制器,文件 ...

  10. vm上安装ubuntu

    图解演示环境版本: 本机系统: WIN7 虚拟机:VMware Workstation 8 (英文版) 安装目标:Ubuntu Desktop 12.04 LTS  (请点击这里)先下载好iso镜像文 ...