Less语法

深藏阁楼爱情的钟 2022-09-28 13:04 324阅读 0赞

参考: http://www.imooc.com/article/16455

变量、注释和运算

在less文件中,当一个值需要反复使用时,可以通过@符号定义变量。已经被赋值的变量以及其他的常量(如像素、颜色等)都可以参与运算。在less中和大多数编程语言一样,可以使用“//”作为注释,注释的内容不会被编译到CSS文件中去。如以下less代码:

@charset “utf-8” ; /*CSS的注释编译时会保留*/ @box_width : 300px ; //定义并初始化变量 . box { width : @box_width + 100 ; //使用变量,并进行运算 height : @box_width - 2 * 50 ; //注意变量和数字之间要留空格,否则编译不通过 background : yellow ; }

编译后的CSS代码如下:

@charset “utf-8” ; /*CSS的注释编译时会保留*/ . box { width : 400px ; height : 200px ; background : yellow ; }

4、混合与嵌套

如下less代码,box3的样式里面引用了box的所有样式,并且额外的还设置了左外边距为100px。混合就是把一个样式的选择器作为值写在另一个样式里。

. box3 { //引用box的全部样式并且使得左边距为100px . box ; margin - left : 100px ; }

编译后的CSS代码如下:

. box3 { width : 400px ; height : 200px ; background : yellow ; margin - left : 100px ; }

除了这种最简单的混合外,less还支持带参数的混合以及有默认参数值的混合。如下面的例子所示:

//带参数的混合 . border_width1 ( @b_width ){ border : solid blue @b_width ; } . test_mix1 { . border_width1 ( 5px ); } //参数有默认值的混合 . border_radius ( @radius : 5px ){ border - radius : @radius ; - webkit - border - radius : @radius ; - moz - border - radius : @radius ; } . test_radius { . border_radius (); //此处即为默认值,若要修改默认值也可在此处进行修改 width : 100px ; height : 20px ; background : pink ; }

编译后的CSS文件如下:

. test_mix1 { border : solid #0000ff 5px; } . test_radius { border - radius : 5px ; - webkit - border - radius : 5px ; - moz - border - radius : 5px ; width : 100px ; height : 20px ; background : pink ; }

有的时候,需要一次性将所有的参数全部传进去,此时使用@arguments可以更加方便。

//@arguments代表传进所有的参数 . border_arg ( @c : red , @w : 3px , @x : solid ){ border : @arguments ; } . test_arg { . border_arg ( 40px ); //查看CSS文件的变化,默认值传进来了,线粗改为40px }

css文档编译后如下:

. test_arg { border : 40px 3px solid ; }

在HTML文档中,标签之间经常会有嵌套的情况存在,在less中也可以进行嵌套。有下列HTML标签:

使用less为其添加样式,可以使用嵌套。

//嵌套 . list { width : 600px ; margin : 30px auto ; padding : 0 ; list - style : none ; li { //嵌套在list下的li height : 30px ; line - height : 30px ; background : pink ; margin - bottom : 3px ; padding : 0 10px ; } a { //也可以嵌套在li里面,但是嵌套层次太多影响CSS的效率 float : left ; //&代表上一层选择器 &: hover { color : red ; } } span { float : right ; } }

编译后的CSS如下所示:

. list { width : 600px ; margin : 30px auto ; padding : 0 ; list - style : none ; } . list li { height : 30px ; line - height : 30px ; background : pink ; margin - bottom : 3px ; padding : 0 10px ; } . list a { float : left ; } . list a : hover { color : red ; } . list span { float : right ; }

两者相比较而言,less的确省去了很多的代码量。

5、匹配模式

在开发前端页面的过程中,经常会有样式相近重复率高的情况出现。比如编写一个三角箭头小图标,颜色、大小、箭头朝向在不同的地方各不相同。如果一个一个地去写样式就非常麻烦。less中的匹配模式,就可以统一模板,在需要的时候,根据情况调用即可。

//匹配模式:三角形小图标的例子 . triangle ( top , @width : 5px , @color : white ){ //匹配三角形朝上的情况 border - color : transparent transparent @color transparent ; border - width : @width ; } . triangle ( bottom , @width : 5px , @color : white ){ //匹配三角形朝下的情况 border - color : @color transparent transparent transparent ; border - width : @width ; } . triangle ( left , @width : 5px , @color : white ){ //匹配三角形朝左的情况 border - color : transparent @color transparent transparent ; border - width : @width ; } . triangle ( right , @width : 5px , @color : white ){ //匹配三角形朝右的情况 border - color : transparent transparent transparent @color ; border - width : @width ; } . triangle ( @_ , @width : 5px , @color : white ){ //无论什么情况都要执行的代码,第一个参数是固定的格式 width : 0 ; height : 0 ; overflow : hidden ; border - style : solid ; } . sanjiao { . triangle ( left , 10px , black ); }

上面的less中通过3个参数,将颜色、线条和朝向都构造成了相应的匹配模式,最后调用了黑色、线条为10px、朝左的箭头。css样式表中如下:

. sanjiao { border - color : transparent #000000 transparent transparent; border - width : 10px ; width : 0 ; height : 0 ; overflow : hidden ; border - style : solid ; }

6、避免编译

有些情况下,我们不需要less中的某些内容被自动编译,而是保留下来原样放到CSS中,此时可以使用 ~‘ ’ :

//避免编译 . test_avoid { width : ~ ‘(300px-100px)’ ; }

css中的代码如下:

. test_avoid { width : ( 300px - 100px ); }

上述就是less中的基本内容,总之less可以极大的减少css代码的编写量,易学易用,可以像编程一样对HTML中标签进行样式设计。

作者: Run_er

链接:http://www.imooc.com/article/16455

来源:慕课网

发表评论

表情:
评论列表 (有 0 条评论,324人围观)

还没有评论,来说两句吧...

相关阅读