作用域
作用域是编程中的标配,LESS中也是。如果你在你样式表的root级声明一个变量,它在整个文档中都是可以用的。然而,如果你在一个选择器,比如id或者class中,重新定义了这个变量,那么,它就只能在这个选择器中可用了——当然是重新定义后的新值。
@color: #00c; /* 蓝色 */ #header { @color: #c00; /* red */ border: 1px solid @color; /* 红色边框 */ } #footer { border: 1px solid @color; /* 蓝色边框 */ }
因为我们在#header中重新定义了color变量,变量的值将会是不同的而且只会在该选择器中有效。它之前或者之后的所有地方,如果没有被重新定义,都会保持那个原始的值。
作用域在Sass中稍有不同。在上面的代码中,当@color变量变为红色后,代码中,此处之后的该变量的值,将会被重写(成为红色)。
注释
这一部分比较基础。LESS中允许两种注释写法。标准的CSS注释,/* comment */,是有效的,而且能够通过处理并正确输出。当行注释,// comment,同样可以用但是不能够通过处理也不能被输出,然后,结果是,“无声的”。
导入
导入也相当符合标准。标准的 @import: ‘classes.less’; 处理的很好。然而,如果你想要导入其它的LESS文件,那么文件的扩展名是可选的,所以 @import ‘classes’; 也是可行的。如果你想要导入一些无需LESS处理的内容,你可以使用 .css 扩展 (比如, @import: ‘reset.css’;)。
字符串插入
字符串也是可以用于变量中的,然后通过@{name}来调用。
@base_url = 'http://www.qianduan.net</a>'; background-image: url("@{base_url}/images/background.png");
转义(Escaping)
可能偶尔会需要引入一个CSS中非法或者LESS无法识别的值。通常是一些IE的hack。要避免抛出异常并破坏LESS,你将需要避开它们。
.class { filter: ~"progid:DXImageTransform.Microsoft.Alpha(opacity=20)"; } /*实际上将会输出下面的代码: */ .class { filter: progid:DXImageTransform.Microsoft.Alpha(opacity=20); }
JavaScript 赋值
这是LESS中我最中意的部分:在样式表中使用Javascript——相当精彩。你可以使用表达式,也可以参考环境方向来使用反单引号。
@string: `'howdy'.toUpperCase()`; /* @string 变成 'HOWDY' */ /* 你也可以使用前面提到的插值: */ @string: 'howdy'; @var: ~`'@{string}'.topUpperCase()`; /* 变为 'HOWDY' */ /* 获取文档的信息 */ @height = `document.body.clientHeight`;
输出格式
然而LESS并没有输出设置,而Sass提供4中输出选项:nested, compact, compressed 和 expanded。
结语
这两个方法有很多共同点。对写代码的设计师来说它们都是很玄的工具,它们也可以帮助开发者更有效和快速的工作。如果你是Ruby或HAML的粉丝,那么Sass会是你的好助手。对我来说,一个PHP和JavaScript极客,我倾向于LESS,因为它便于引入和能够使用JavaScript的表达式以及文档属性。我怀疑我甚至接近真正理解在样式表中编程的可能行了,但是我仍坚持尝试。如果你在工作中有用到它们中的一个,或者两个都用,我很乐意听到关于它的更多内容,并看到你的成果。当然,技巧、诀窍、更正一直是很欢迎的。。
译注:翻译的有些仓促,如果有错误或者不妥的地方,欢迎指出。mixin这个单词,这里直译为“混入”了,不过感觉也不太合适,查了好久也没有见到非常合适的翻译,这里求达人指点。另外,不知道什么原因,lesscss.org貌似在贵国无法访问,大家可以直接访问LESS在git上的仓库,http://github.com/cloudhead/less.js,该项目的wiki也有和官方网站一样的文档,需要的话可以详细阅读下。——神飞
本文链接:http://www.blueidea.com/tech/web/2011/8577.asp
出处:前端观察
责任编辑:bluehearts
上一页 LESS介绍及其与Sass的差异 [4] 下一页
◎进入论坛网页制作、WEB标准化版块参加讨论,我还想发表评论。
|