Less入门
Posted 积少成多
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Less入门相关的知识,希望对你有一定的参考价值。
LESS 原理及使用方式
本质上,LESS 包含一套自定义的语法及一个解析器,用户根据这些语法定义自己的样式规则,这些规则最终会通过解析器,编译生成对应的 CSS 文件。LESS 并没有裁剪 CSS 原有的特性,更不是用来取代 CSS 的,而是在现有 CSS 语法的基础上,为 CSS 加入程序式语言的特性。下面是一个简单的例子:
变量
使用@
符号定义。例如:
/*变量声明*/ @base: #f938ab; @images: "../img"; @property: color; .box { /*变量引用*/ color: @base; } body { color: #444; /*变量引用*/ background: url("@{images}/white-sand.png"); } .widget { @{property}: #0ee; [email protected]{property}: #999; }
/*变量声明*/ .box { /*变量引用*/ color: #f938ab; } body { color: #444; /*变量引用*/ background: url("../img/white-sand.png"); } .widget { color: #0ee; background-color: #999; }
混合(Mixin)
混合就是前面定义的一个样式,后文可以直接引用。示例:
/*带参数*/ .roundedCorners(@radius: 5px) { -moz-border-radius: @radius; -webkit-border-radius: @radius; border-radius: @radius; } /* @arguments 在 Mixins 中具是一个很特别的参数, 当 Mixins 引用这个参数时,该参数表示所有的变量, 很多情况下,这个参数可以省去你很多代码。 */ .boxMargin(@up:0,@right:0,@down:0,@left:0){ margin: @arguments; } // 在另外的样式选择器中使用 #header { .roundedCorners; .boxMargin(1px,2px,3px,4px) } #content { .roundedCorners(); .boxMargin; } #footer { .roundedCorners(10px); }
/*带参数*/ /* @arguments 在 Mixins 中具是一个很特别的参数, 当 Mixins 引用这个参数时,该参数表示所有的变量, 很多情况下,这个参数可以省去你很多代码。 */ #header { -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; margin: 1px 2px 3px 4px; } #content { -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; margin: 0 0 0 0; } #footer { -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; }
嵌套
可以在一个css里有多个css块,以方便我们更好的组织代码,编写css模板。
#header { color: black; .navigation { font-size: 12px; } .logo { width: 300px; } } /* 有&时,解析的是同一个元素或此元素的伪类 没有&时, 解析是后代元素 */ #header { color: black; &-navigation { font-size: 12px; } &-logo { width: 300px; } &:hover { color: #ccc; } } div { color: black; &-navigation { font-size: 12px; } &-logo { width: 300px; } &:hover { color: #ccc; } }
#header { color: black; } #header .navigation { font-size: 12px; } #header .logo { width: 300px; } /* 有&时,解析的是同一个元素或此元素的伪类 没有&时, 解析是后代元素 */ #header { color: black; } #header-navigation { font-size: 12px; } #header-logo { width: 300px; } #header:hover { color: #ccc; } div { color: black; } div-navigation { font-size: 12px; } div-logo { width: 300px; } div:hover { color: #ccc; }
运算
任何数字、颜色或者变量都可以参与运算。下面是一组案例:
@init: #111111; @width:19px; @height:100%; @transition: @init*2; .switchColor { color: @transition; width: @width/2; height: @height; }
.switchColor { color: #222222; width: 9.5px; height: 100%; }
命名空间
有时候,你可能为了更好组织 CSS 或者单纯是为了更好的封装,将一些变量或者混合模块打包起来,一些属性集之后可以重复使用。
示例:
/*模块*/ #bundle { .button { display: block; border: 1px solid black; background-color: grey; &:hover { background-color: white } } .tab { /**/ } .citation { /**/ } } /*下面复用上面的一部分代码*/ #header a { color: orange; #bundle > .button; }
/*模块*/ #bundle .button { display: block; border: 1px solid black; background-color: grey; } #bundle .button:hover { background-color: #ffffff; } #bundle .tab { /**/ } #bundle .citation { /**/ } /*下面复用上面的一部分代码*/ #header a { color: orange; display: block; border: 1px solid black; background-color: grey; } #header a:hover { background-color: #ffffff; }
作用域
子类里面的优先,找不到才往父类里找。
示例:
@var: red; #hearder{ color: @var; } #page { color: @var; @var: white; #header { color: @var; } }
#hearder { color: #ff0000; } #page { color: #ffffff; } #page #header { color: #ffffff; }
注释
css仅支持块注释 //。less里块注释和行注释都可以使用:// /**/
导入
和css一样,你可以导入一个 .less
文件,此文件中的所有变量就可以全部使用了。如果导入的文件是 .less
扩展名,则可以将扩展名省略掉:
@import "ip"; // ip.less 输出效果 = ip.less + test.less
@import "typo.css"; //支持导入css
以上是关于Less入门的主要内容,如果未能解决你的问题,请参考以下文章
十分钟入门less(翻译自:Learn lESS in 10 Minutes(or less))
leetcode_1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold_[二维前缀和](代码片段