Less css实战
[1- Less简介]:
css是一个标记语言,毫无逻辑,在语法更新的时候,每当新属性提出的时候,浏览器的兼容问题就是我们的绊脚石。
而Less Sass以及其他css预处理语言的出现很棒的解决了css的短板,我们在less语言中可以使用函数,混合(mixin),变量(varible),继承等,就好比在css中使用js。
在大型的项目中使用less等预处理语言可以方便程序员以更少的代码完成更多的样式。
[2-如何使用Less]:
如果你还没接触过 LESS CSS ,可以阅读下面两篇文章:
- Using Less.js to Simplify Your CSS3
- How to Build a Responsive Frankenstein Framework With LESS
- Less中文手册
[3-10个基础less案例]:(笔者这里的less采取的是在浏览器端解析less的方式)
1 <link rel="stylesheet/less" href=xxx.less"> 2 <script src="less.min.js"></script>
[3-01]圆角半径:
CSS3中圆角半径(border-radius)的特效要实现,就需要设置参数(各个方向的圆角半径宽度),当然四个角度的宽度一样的话可以设置为一个参数。
[html]:
1 <div class="father"> 2 <div class="box3"></div> 3 <div class="box2"></div> 4 <div class="box1"></div> 5 </div>
[css]:
1 //mixins 2 .border-radius-custom(@topleft:5px,@topright:5px,@bottomright:5px,@bottomleft:5px){ 3 -webkit-border-radius: @arguments; 4 -moz-border-radius: @arguments; 5 -ms-border-radius:@arguments; 6 } 7 @box1:box1; 8 @box2:box2; 9 @box3:box3; 10 @3d:perserve-3d; 11 12 .@{box1} { 13 transform: translateZ(500px) translateY(-350px); 14 -webkit-perspective:0; 15 opacity: 0.7; 16 17 box-shadow: 2px 2px 10px 2px #000; 18 background-color: #723232; 19 width: 150px; 20 height: 150px; 21 .border-radius-custom(); 22 } 23 .@{box2} { 24 transform: translate(-0px,-200px); 25 -webkit-perspective:0; 26 perspective: 0; 27 background-color: #723232; 28 opacity: 0.7; 29 box-shadow: 2px 2px 10px 2px #bbb; 30 width: 200px; 31 height: 200px; 32 .border-radius-custom(); 33 } 34 .@{box3} { 35 -webkit-perspective:0; 36 background-color: #723232; 37 opacity: 0.7; 38 box-shadow: 2px 2px 2px #bbb; 39 width: 250px; 40 height: 250px; 41 //.backgroundColor(); 42 .border-radius-custom(); 43 } 44 .father { 45 transform-style: @3d; 46 width: 400px; 47 height: 250px; 48 margin: 0 auto; 49 }
[最终实现]:

[3-02]方块阴影:
div的阴影也是我们在日常css编辑中常使用的特效,box-shadow需要 x:水平偏移,y:垂直偏移,blur:模糊度,alpha:阴影颜色(可以使用rgba(),也可以直接使用颜色)
[html]:
1 <div class="father"> 2 <div class="box1"></div> 3 <div class="box2"></div> 4 <div class="box3"></div> 5 </div>
[less]:
1 .box-shadow(@x:1px,@y:2px,@blur:3px,@alpha:red){ 2 -webkit-box-shadow: @arguments; 3 -moz-box-shadow: @arguments; 4 box-shadow:@arguments 5 } 6 @father:father; 7 @box1:box1; 8 @box2:box2; 9 @box3:box3; 10 .@{father} { 11 position: relative; 12 width: 500px; 13 height: 500px; 14 background-color: #ccc; 15 margin: 0 auto; 16 } 17 .@{box1} { 18 position: absolute; 19 top:0; 20 width: 200px; 21 height: 200px; 22 background-color: blue; 23 //border: 1px solid #000; 24 .box-shadow(2px,2px,5px,#000); 25 } 26 .@{box2} { 27 position: absolute; 28 top:0; 29 width: 150px; 30 height: 150px; 31 background-color: green; 32 .box-shadow(2px,2px,10px,#000); 33 34 } 35 .@{box3} { 36 position: absolute; 37 top:0; 38 width: 100px; 39 height: 100px; 40 background-color: red; 41 .box-shadow(2px,2px,10px,#000); 42 43 }
[最终特效]:

[3-02]元素的过渡效果(transition):
初次接触css3的时候就被transition这个属性吸引到了,它可以实现css的过渡,有prop,ease,time等众多参数,简直就是个简易版的动画生成器;
[html]:
1 <div class="test"> 2 3 </div>
[less]:
1 @test:test; 2 .transition(@prop:all,@time:1s,@ease:linear) { 3 -webkit-transition: @arguments; 4 -moz-transition: @arguments; 5 -o-transition: @arguments; 6 transition: @arguments; 7 } 8 .@{test} { 9 width: 500px; 10 height: 500px; 11 background-color: #000; 12 .transition(all,5s,ease-in); 13 } 14 .@{test}:hover{ 15 opacity: 0; 16 }
[最终效果]:



[3-04]旋转特效(transform):
transition实现了元素的过渡效果,而transform这个属性就实现了我们css3中的2D转换。比如旋转(rotate),平移(translate),缩放(scale)等;
[html]:
1 <div class="father"> 2 </div>
[less]:
1 .transform(@rotate:50deg,@scale:1,@skew:1deg,@translate:50px){ 2 transform: rotate(@rotate) scale(@scale) skew(@skew) translate(@translate); 3 } 4 .father{ 5 width: 50px; 6 height: 500px; 7 background-color: red; 8 } 9 .father:hover { 10 .transform(); 11 }
[最终效果]:


[3-05]渐变效果(gradients):
css的渐变背景效果也是多参的,所有利用less的mixin实现了多参方法用来实现该效果非常方便;
[html]:
1 <div class="test"></div> 2 </body>
[css]:
1 .test{ 2 width: 500px; 3 height: 500px; 4 .gradient(); 5 } 6 .gradient(@origin:left,@start:red,@stop:purple) { 7 background-color:red ; 8 background: -webkit-linear-gradient(@origin,@start,@stop); 9 background: -moz-linear-gradient(@origin,@start,@stop); 10 background: -ms-linear-gradient(@origin,@start,@stop); 11 background: -o-linear-gradient(@origin,@start,@stop); 12 background: linear-gradient(@origin,@start,@stop); 13 }
[最终效果]:

[3-06]quick gradient(快速渐变):
只设置两个参数 1 origin 2 alpha 实现单个颜色的(透明度的)渐变
[html]:
1 <div class="test"></div>
[less]:
1 @test:test; 2 .quick-gradient(@origin:left,@alpha:0.2) { 3 background: -webkit-linear-gradient(@origin,rgba(0,0,0,0),rgba(0,0,0,@alpha)); 4 background: -moz-linear-gradient(@origin,rgba(0,0,0,0),rgba(0,0,0,@alpha)); 5 background: -ms-linear-gradient(@origin,rgba(0,0,0,0),rgba(0,0,0,@alpha)); 6 background: -o-linear-gradient(@origin,rgba(0,0,0,0),rgba(0,0,0,@alpha)); 7 background: linear-gradient(@origin,rgba(0,0,0,0),rgba(0,0,0,@alpha)); 8 } 9 .@{test} { 10 width: 300px; 11 height:300px; 12 background-color: #000; 13 .quick-gradient(); 14 }
[3-07-01]图片倒影(box-reflect):
之前学习css3的时候没有太留意这个属性 ,学习的过程中遇到后觉得挺有意思而且也属于常用的属性;其原理类似于使用渐变和对称实现倒影;
[html]:
1 <img src="imgs/1.jpg" alt="" width="500" height="300px">
[less]:
1 .reflect() { 2 -webkit-box-reflect: below 0 linear-gradient(transparent, white); 3 } 4 img { 5 .reflect(); 6 }
[最终效果]:

[3-07-02]:倒影(渐变):
[html]:
1 <div class="test"></div>
[less]:
1 .gradient(@origin: left,@start: red,@stop: purple) { 2 background: -webkit-linear-gradient(@origin,@start,@stop); 3 }; 4 .reflect() { 5 -webkit-box-reflect:below 10px -webkit-linear-gradient(transparent,white 40%,rgba(0,0,0,.8)); 6 } 7 .test{ 8 width: 400px; 9 height: 200px; 10 .gradient(); 11 .reflect(); 12 }
[最终效果]:

Color Math 颜色计算:
01 颜色互补方案(Complementary Color Scheme):
Less 和 Sass 最出色的就是多了个颜色计算函数,我们可以使用这种css预处理语言特有的功能实现调色板的特殊效果;
[html]:
1 <div class="test"> 2 <div class="son"></div> 3 <div class="son"></div> 4 <div class="son"></div> 5 <div class="son"></div> 6 <div class="son"></div> 7 </div>
[less]:
这里我们创建一个基本颜色(@base)然后通过色彩旋转以及加亮变暗方法扩展到5个色板,为了使用互补色我们使用spin将颜色旋转180deg;
1 @base: #663333; 2 @complement1: spin(@base, 180); 3 @complement2: darken(spin(@base, 180), 5%); 4 @lighten1: lighten(@base, 15%); 5 @lighten2: lighten(@base, 30%); 6 7 .son:nth-child(1) { 8 background-color: @base; 9 } 10 .son:nth-child(2) { 11 background-color: @complement1; 12 } 13 .son:nth-child(3) { 14 background-color: @complement2; 15 } 16 .son:nth-child(4) { 17 background-color: @lighten1; 18 } 19 .son:nth-child(5) { 20 background-color: @lighten2; 21 }
[最终效果]:

02 颜色微调:Subtle Color Scheme:
互补色很有用,但是在网页设计中另一个更有用的就是颜色微调;
[code]:
1 /* Mixin */ 2 @base: #663333; 3 @lighter1: lighten(spin(@base, 5), 10%); 4 @lighter2: lighten(spin(@base, 10), 20%); 5 @darker1: darken(spin(@base, -5), 10%); 6 @darker2: darken(spin(@base, -10), 20%); 7 8 /* Implementation */ 9 .one {color: @base;} 10 .two {color: @lighter1;} 11 .three {color: @lighter2;} 12 .four {color: @darker1;} 13 .five {color: @darker2;}
[css]:
1 /* Compiled CSS */ 2 .one {color: #663333;} 3 .two {color: #884a44;} 4 .three {color: #aa6355;} 5 .four {color: #442225;} 6 .five {color: #442225;}
[最终效果]:


浙公网安备 33010602011771号