|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
CSS非常容易编写。你可以象写html代码一样轻松地编写CSS。
破洛洛文章简介:利用Css预处置器独一真正必要进修的只要语法,SASS是Ruby言语写的,可是二者的语法没有干系。不懂Ruby,还是可使用。你必要的只是一个像CudeKit的使用来察看和编译你所撰写的文件。Less就更不必了,只必要挪用一个js便可(在客户端运转),大概借助Node.js(服务器运转
甚么是CSS预处置器?
Css可让你做良多事变,但它究竟是给扫瞄器认的器材,对开辟者来讲,Css缺少良多特征,比方变量、常量和一些编程语法,代码难易构造和保护。这时候Css预处置器就应运而生了。Css预处置器界说了一种新的言语将Css作为方针天生文件,然后开辟者就只需利用这类言语举行编码事情了。预处置器一般能够完成扫瞄器兼容,变量,布局体等功效,代码加倍简便易于保护。“我应当选择哪一种css预处置器?”是比来网上的一年夜抢手话题,良多工资此争辩不休。比拟已往我们对是不是应当利用Css预处置器的话题,这已是很年夜的前进了。今朝对照盛行的两种预处置器是Sass和Less。
至于他们谁更优异一些:冗长的谜底是:Sass
稍长一点的谜底:Sass比其他任何预处置器言语都好,但假如你正在利用Less,这也很酷!这能够证实你正在利用预处置器来写匡助本人写更好的代码。
十分长的谜底:请持续往下看
利用之前必要进修的常识–Ruby,js,命令行等等
利用Css预处置器独一真正必要进修的只要语法,SASS是Ruby言语写的,可是二者的语法没有干系。不懂Ruby,还是可使用。你必要的只是一个像CudeKit的使用来察看和编译你所撰写的文件。Less就更不必了,只必要挪用一个js便可(在客户端运转),大概借助Node.js(服务器运转)。
得胜者:无。
对css3的匡助
Css3供应了良多新特征,好比突变、动画、圆角等等,可是在利用这些初级特征的时分,我们常常必要编写(-moz-、-webkit-、-ms-…)。不管Sass和Less,你都能够用本人的夹杂来编写。可是在项目中当我们必要修正这些烦琐的前缀时,我们怎样不必前往每行代码而且更新它们?你也许也不会更老手工夹杂的文件。可是在Sass中,我们可使用开源的Css框架,会主动更新并主动处置扫瞄器前缀。我们只必要坚持更新,外加偶然按一下编译键,它就会匡助我们主动处置一切的前缀成绩,绝不吃力。(-moz-、-webkit-、-ms-…)。不管Sass和Less,你都能够用本人的夹杂来编写。可是在项目中当我们必要修正这些烦琐的前缀时,我们怎样不必前往每行代码而且更新它们?你也许也不会更老手工夹杂的文件。可是在Sass中,我们可使用开源的Css框架,会主动更新并主动处置扫瞄器前缀。我们只必要坚持更新,外加偶然按一下编译键,它就会匡助我们主动处置一切的前缀成绩,绝不吃力。
得胜者:Sass。
逻辑/轮回
Less能够做进攻型夹杂,这类夹杂只在前提为真的情形下失效。好比你想依据文本色彩来设置背景致,当文本性对照浅的时分背景致很深,文本性对照深的时分背景致很浅。那末你就得把夹杂分红两部分,以确保有一种情形前提为真,使夹杂失效。- .set-bg-color(@text-color)when(lightness(@text-color)>=50%){background:black;}.set-bg-color(@text-color)when(lightness(@text-color)<50%){background:#ccc;}
复制代码 然后就能够失掉想要的背景:- .box-1{color:#BADA55;.set-bg-color(#BADA55);}
复制代码 Less摹拟轮回和递回:- .loopingClass(@index)when(@index>0){.myclass{z-index:@index;}//递回.loopingClass(@index-1);}//中断轮回.loopingClass(0){}//输入.loopingClass(3);
复制代码 天生的css代码:- .myclass{z-index:3;}.myclass{z-index:2;}.myclass{z-index:1;}
复制代码 但这也就是Less全体的逻辑和轮回处置才能了,而Sass具有真实的言语处置才能。包含if/then/else、for轮回、while轮回,函数等等。
真实的For轮回:- @for$ifrom1through3{.item-#{$i}{width:100px*$i;}}
复制代码 Css:- .item-1{width:100px;}.item-2{width:200px;}.item-3{width:300px;}
复制代码 比方Compass框架有一个叫“background”的夹杂,它会给你一切你必要的和想要的,而且兼容一切扫瞄器的代码。
简便易懂的代码:- .bam{@includebackground(image-url("foo.png"),linear-gradient(topleft,#333,#0c0),radial-gradient(#c00,#fff100px));}
复制代码 如今轮到这个怪物了(不幸的是,我们必要它,看看我们会失掉的Css代码吧):- .bam{background:url(/foo.png),-webkit-gradient(linear,0%0%,100%100%,color-stop(0%,#333333),color-stop(100%,#00cc00)),-webkit-gradient(radial,50%50%,0,50%50%,100,color-stop(0%,#cc0000),color-stop(100%,#ffffff));background:url(/foo.png),-webkit-linear-gradient(topleft,#333333,#00cc00),-webkit-radial-gradient(#cc0000,#ffffff100px);background:url(/foo.png),-moz-linear-gradient(topleft,#333333,#00cc00),-moz-radial-gradient(#cc0000,#ffffff100px);background:url(/foo.png),-o-linear-gradient(topleft,#333333,#00cc00),-o-radial-gradient(#cc0000,#ffffff100px);background:url(/foo.png),-ms-linear-gradient(topleft,#333333,#00cc00),-ms-radial-gradient(#cc0000,#ffffff100px);background:url(/foo.png),linear-gradient(topleft,#333333,#00cc00),radial-gradient(#cc0000,#ffffff100px);}
复制代码 得胜者:Sass
承继
当你声明一个包容一些款式的类以后,你想要别的一个和它只要少量分歧的类,在less中你能够如许写- .module-a{color:#333;}.module-b{.module-a();/*把module-a一切的css代码拷贝到这里*/border:1pxsolidred;}
复制代码 如许.module-b便承继了.module-a的一切属性天生的Css代码:- .module-a{color:#333;}.module-b{color:#333;border:1pxsolidred;}
复制代码 这在实质上就是承继,在Sass中也能够做一样的事变。但Sass的"@extend"更好一些,在"@extend"中.module-a的款式不单单是被复制到.module-b(能够扩大)中,在Css中对.module-a的界说被修正为.module-a,.module-b(如许做选择器的效力更高)。
Sass代码- .box-1{color:#BADA55;.set-bg-color(#BADA55);}0
复制代码 终极编译Css代码- .box-1{color:#BADA55;.set-bg-color(#BADA55);}1
复制代码 了局是Sass重写的选择器效力更高得胜者:Sass
变量
变量前缀:less利用"@",sass利用"$"。在css中@标记有承继的意义,而美圆标记没有。我们能够说这个是团体喜欢。可是没有搅浑观点的Sass在这里更有上风。不外Sass的变量局限有些乖僻,假如你在部分情况中重写了一个全局变量,全局变量的值会被改动。- .box-1{color:#BADA55;.set-bg-color(#BADA55);}2
复制代码 得胜者:Less
媒体查询
我们入手下手利用媒体查询的体例是在主款式表的底部到场针对媒体查询的媒体代码块。如许做很有效,可是它会招致呼应的款式和原本的款式作风摆脱。CSS代码:- .box-1{color:#BADA55;.set-bg-color(#BADA55);}3
复制代码 经由过程Sass大概Less,我们能够用嵌套把他们写到一同:- .box-1{color:#BADA55;.set-bg-color(#BADA55);}4
复制代码 经由过程Sass,我们乃至能够更牛逼一点,用一种更酷的写法:- .box-1{color:#BADA55;.set-bg-color(#BADA55);}5
复制代码 然后,我们能够经由过程这类手艺使代码加倍简便和语义化- .box-1{color:#BADA55;.set-bg-color(#BADA55);}6
复制代码 必要Sass3.2的情况(安装办法,在StartCommandPromptwithRuby中输出“geminstallsass–pre”)
运算
在年夜多半情形下,数学运算都是很类似的。可是sass和less在处置单元的合适另有些分歧。比方less会假定第一个单元是你想要的,疏忽后一个:- .box-1{color:#BADA55;.set-bg-color(#BADA55);}7
复制代码 可是在Sass中,你会失掉一个明白的毛病提醒:不兼容的单元"px"和"em"。我想是不是应当提醒毛病是值得商讨的,可是比拟之下我更但愿失掉毛病,出格是当我在处置难以清查的变量的时分。sass同意我们利用未知单元,可是less不成以。同时它们另有一些其他的分歧的地方,好比sass怎样为有单元的值做乘法,但这些都过于复杂,不值得持续会商。
成功者:Sass
综上,固然Sass比less稍难上手,但假如要利用Css预处置器的话,多花点工夫在Sass下面是值得的。
英文原文:http://css-tricks.com/sass-vs-less/
参考材料:http://sass-lang.com/
</p>
业界越来越关注DIV+CSS的标准化设计,大到各大门户网站,小到不计其数的个人网站。 |
|