less给网站换肤

来源:互联网 发布:新浪微博mac客户端有么 编辑:程序博客网 时间:2024/04/28 18:47

LESSCSS是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS的语法,为CSS的赋予了动态语言的特性,如变量、继承、运算、函数等,更方便CSS的编写和维护。

LESSCSS可以在多种语言、环境中使用,包括浏览器端、桌面客户端、服务端。

根据less可以预处理css语言的这一特性,就可以想到less可以实现一种功能,即“换肤”功能。


我最近做的网站就需要“换肤”功能,那当然我就采取less咯。
我主要就用到了less中的部分语法,变量以及一些函数
想要了解更多可以查看http://www.1024i.com/demo/less/index.html
简单介绍less用法以及使用:

  1. 变量
@background: #e2e9f9; #top {     background: @background; } 编译为: #top {    background: #e2e9f9; }

2.嵌套规则

 @color:red; @fontSize:12px; #top {     color: @color;     h1 {        font-size: @fontSize;    } } 编译为: #top {     color: red; } #top h1 {     font-size: 12px; }

3 . 运算
任何数字、颜色或者变量都可以参与运算.

@base: 5%;@filler: @base * 2;@other: @base + @filler;color: #888 / 4;background-color: @base-color + #111;height: 100% / 2 + @filler;

4.混合

.rounded-corners (@radius: 5px) {    -webkit-border-radius: @radius;    -moz-border-radius: @radius;    -ms-border-radius: @radius;    -o-border-radius: @radius;    border-radius: @radius;}#header {    .rounded-corners;}编译为:#header {    -webkit-border-radius: 5px;    -moz-border-radius: 5px;    -ms-border-radius: 5px;    -o-border-radius: 5px;    border-radius: 5px;}

5.函数
Less 内置了多种函数用于转换颜色、处理字符串、算术运算等

@the-border: 1px;@base-color: #111;@red:        #842210;#header {    color: (@base-color * 3);    border-left: @the-border;    border-right: (@the-border * 2);}#footer {    color: (@base-color + #003300);    border-color: desaturate(@red, 10%);//降低一定数值的颜色饱和度。}编译为:#header {    color: #333;    border-left: 1px;    border-right: 2px;}#footer {    color: #114411;    border-color: #7d2717;}一些颜色运算:saturate(@color, 10%);  //增加一定数值的颜色饱和度。desaturate(@red, 10%);  //降低一定数值的颜色饱和度。lighten(@color, 10%);   //增加一定数值的颜色亮度。darken(@color, 10%);    //降低一定数值的颜色亮度。fadein(@color, 10%);    //降低颜色的透明度(或增加不透明度)adeout(@color, 10%);    //增加颜色的透明度(或降低不透明度)ade(@color, 50%);   //给颜色(包括不透明的颜色)设定一定数值的透明度。

下面主要介绍我是如何利用less给网站换肤的

  1. 编写less库,取名为xxx.less
    主要是改变背景色和字体颜色,把需要改变的元素都提取出来,写成一个函数,方便调用,定义背景色和字体颜色两个变量,变量分别有一个默认值。
@charset 'utf-8';.change(@background: #e2e9f9,@color: #337ab7){        background: @background;        #daohang/* ,#ul */ {            background: @background;        }        #ul li a:hover{            color:saturate(@color,20%);        }        #column h3  {            color: @color;            & span {                color: @color;            }        }        .top{            color: @color;            border-top-color: @color;            & .btn{                background: @color;            }        }        #contentList ul li span,.moreBtn {            background: @color ;        }        .titleH2,.back{            background: fadeout(@color,30%);        }        .footer{            background: darken(@color, 10%);        }}

2.设置几个皮肤样式,存储成xxx.less文件
在开始引入库文件,语法为import url(xxx.less),然后分别给不同的皮肤设置不同的颜色,调用change函数,第一个参数是背景色,第二个参数是字体颜色,style是要给body添加的类名,根据后台传过来的皮肤类型,调用相应的class属性,皮肤类型用0,1,2…表示,所以给bodyclass类添加相应的名称style0,style1,style2…

@charset "utf-8";@import url(xxx.less);.style0{    .change();  //默认  经典蓝}.style1{    .change(#f5e2c9,#9f754d);   //咖啡棕}.style2{    .change(#e5d3ed,#b88bcb); //紫色}
document.body.className='style'+datas.skin;//datas.skin表示获取的皮肤类型

代码部分就是这些,当然还差引入文件的步骤,在head里面引入设置皮肤的.less文件,然后还需引入编译less的js文件,点击下载less.js
注意:less.js文件一定要放在你写的.less文件下面,并且.less的type类型是type=”text/less”

当然这种方法是在线编译成css,所以可能性能不是很好,一可以先编译成css文件放入到项目中再发布,这样只需在head标签内引入css文件即可.

好了,这些步骤进行完了,换肤的功能也就大概就实现了,想要性能更好一些可以把皮肤存入缓存,下一篇将介绍H5的本地存储功能。

1 0
原创粉丝点击