首页 > 代码库 > Less入门
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; background-@{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入门
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。