动态的 css——less

http://www.cnblogs.com/yjzhu/archive/2012/11/14/2770332.html
less 是一种样式语言,它将 css 赋予了动态语言的特性,如变量、 继承、 运算、 函数。less 既可以在客户端上运行(支持 ie6+,webkit,firefox),也可以借助 Node.js 或者 Rhino 在服务端运行。

less 做为 css 的一种形式的扩展,它并没有阉割 css 的功能,而是在现有的 css 语法上,添加了很多额外的功能,所以对于前端开发人员来所,学习 less 是一件轻而易举的事情。我们先看下用 less 写的一段 css:

@base: #f938ab;.box-shadow(@style, @c) when (iscolor(@c)) {box-shadow:         @style @c;-webkit-box-shadow: @style @c;-moz-box-shadow:    @style @c;
}
.box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) {.box-shadow(@style, rgba(0, 0, 0, @alpha));
}
.box { color: saturate(@base, 5%);border-color: lighten(@base, 30%);div { .box-shadow(0 0 5px, 30%) }
}

在没有学过 less 的情况下,我们并不知道这些代码是做啥用的,怎么生成我们所熟悉的 css 代码,以上代码经过 less 编译后:

.box {color: #fe33ac;border-color: #fdcdea;
}
.box div {box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);-moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
}

下面我们就一起来学习 less 吧。

我们知道如果要使用 jquery 就必须在页面上引进 jquery 库,同样的在使用 less 编写 css 代码时,也要引进 less 库——less.js。点击这里下载 less 库。

下载好后只要在页面中引入就可以了。

<link rel="stylesheet/less" type="text/css" href="style.less" media="all" />
<script type="text/javascript" src="less.js"></script>
要注意外部引进样式的方法有所改变,rel 属性值为 stylesheet/less,样式的后缀变为 .less 同时 less 样式文件一定要在 less.js 前先引入。

引入了 less 之后,正式开始学习 less。

less 语法

1、变量

less 的变量充许你在样式中对常用的属性值进行定义,然后应用到样式中,这样只要改变变量的值就可以改变全局的效果。和 javascript 中的全局变量有点类似。

甚至可以用变量名定义为变量。

@color: red;
@foot: 'color';.head{color: @color;
}.foot{color: @@foot;
}

输出:

.head {color: red;
}
.foot {color: red;
}

注意 less 中的变量为完全的“常量”,所以只能定义一次。

2、混合

混合就是定义一个 class,然后在其他 class 中调用这个 class。

.common{color: red;
}.nav{background: #ccc;.common;
}

输出:

.common {color: red;
}
.nav {background: #ccc;color: red;
}

Css 中的 class, id 或者元素属性集都可以用同样的方式引入。

3、带参数混合

在 less 中,你可以把 class 当做是函数,而函数是可以带参数的。

.border-radius (@radius) {
    border-radius: @radius;
    -moz-border-radius: @radius;
    -webkit-border-radius: @radius;
}

#header {
    .border-radius(4px);
}
.button {
    .border-radius(6px);  
}

最后输出:

#header {
    border-radius: 4px;
    -moz-border-radius: 4px;
    -webkit-border-radius: 4px;
}
.button {
    border-radius: 6px;
    -moz-border-radius: 6px;
    -webkit-border-radius: 6px;
}

我们还可以给参数设置默认值:

.border-radius (@radius: 5px) {
    border-radius: @radius;
    -moz-border-radius: @radius;
    -webkit-border-radius: @radius;
}

#header {
    .border-radius;  
}

最后输出:

#header {
    border-radius: 5px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
}
也可以定义不带参数属性集合,如果想要隐藏这个属性集合,不让它暴露到CSS中去,但是还想在其他的属性集合中引用,就会发现这个方法非常的好用:

.wrap () {
    text-wrap: wrap;
    white-space: pre-wrap;
    white-space: -moz-pre-wrap;
    word-wrap: break-word;
}

pre {
    .wrap 
}

输出:

pre {
    text-wrap: wrap;
    white-space: pre-wrap;
    white-space: -moz-pre-wrap;
    word-wrap: break-word;
}

混合还有个重要的变量@arguments。

@arguments 包含了所有传递进来的参数,当你不想处理个别的参数时,这个将很有用。

.border(@width:0,@style:solid,@color:red){
    border:@arguments;
}

.demo{
    .border(2px);
}

输出:

.demo {
    border: 2px solid #ff0000;
}
混合还有许多高级的应用,如模式匹配等。在这里就不介绍了,只讲些基础的东西。

4、嵌套规则

less 可以让我们用嵌套的方式来写 css。下面是我们平时写的 css:

#header h1 {
    font-size: 26px;
    font-weight: bold;
}
#header p {
    font-size: 12px;
}
#header p a {
    text-decoration: none;
}
#header p a:hover {
    border-width: 1px;
}

用 less 我们就可以这样写:

#header {
    h1 {
        font-size: 26px;
        font-weight: bold;
    }
    p {
        font-size: 12px;
        a {
            text-decoration: none;
            &:hover { border-width: 1px }
        }
    }
}

注意 & 符号的使用—如果你想写串联选择器,而不是写后代选择器,就可以用到 & 了。这点对伪类尤其有用如 :hover。

5、运算

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

.demo{
    color: #888 / 4;
}
输出:

.demo {
    color: #222222;
}
less 完全可以进行复杂四则运算,同样的复合运算也没有问题。

6、Color 函数

less 提供了一系列的颜色运算函数。颜色会先被转化成 HSL 色彩空间,然后在通道级别操作。

复制代码
lighten(@color, 10%);     // return a color which is 10% *lighter* than @color
darken(@color, 10%);      // return a color which is 10% *darker* than @color

saturate(@color, 10%);    // return a color 10% *more* saturated than @color
desaturate(@color, 10%);  // return a color 10% *less* saturated than @color

fadein(@color, 10%);      // return a color 10% *less* transparent than @color
fadeout(@color, 10%);     // return a color 10% *more* transparent than @color
fade(@color, 50%);        // return @color with 50% transparency

spin(@color, 10);         // return a color with a 10 degree larger in hue than @color
spin(@color, -10);        // return a color with a 10 degree smaller hue than @color

mix(@color1, @color2);    // return a mix of @color1 and @color2
复制代码
使用起来相当简单:

复制代码
@base: #f04615;

.class {
    color: saturate(@base, 5%);
    background-color: lighten(spin(@base, 8), 25%);
}
复制代码
还可以提取颜色信息:

hue(@color);        // returns the `hue` channel of @color
saturation(@color); // returns the `saturation` channel of @color
lightness(@color);  // returns the 'lightness' channel of @color
例如:

@color: #f36;

#header {
    background-color: hsl(hue(@color),45%,90%);
}
输出:

#header {
    background-color: #f1dae0;
}

7、Math 函数

less 提供了一组方便的数学函数,你可以使用它们处理一些数字类型的值。

round(1.67); // returns 2
ceil(2.4);   // returns 3
floor(2.6);  // returns 2
如果你想将一个值转化为百分比,你可以使用 percentage 函数:

percentage(0.5); // returns 50%

8、命名空间

有时候,你可能为了更好组织 css 或者单纯是为了更好的封装,将一些变量或者混合模块打包起来,你可以像下面这样在 #form 中定义一些属性集之后可以重复使用:

#form {
    .submit () {
        display: block;
        border: 1px solid black;
        background: gray;
        &:hover { background: green }
    }
    .register { ... }
    .login { ... }
}

你只需要在 #myform 中像这样引入 .submit:

#myform {
    color: orange;
    #form > .submit;
}

9、作用域

和其他编程语言类似,less 变量也有作用域。首先会从本地查找变量或者混合模块,如果没找到的话会去父级作用域中查找,直到找到为止。

复制代码
@var: red;

#page {
    @var: white;
    #header {
        color: @var; // white
    }
}

#footer {
    color: @var; // red  
}

10、注释

css 形式的注释在 less 中是依然保留的,同时 less 也支持双斜线的注释,但是编译成 css 的时候自动过滤掉。

最后 less 还有一些其他的特性就不介绍了,大家可以去官网上看下。

http://www.lesscss.net/

动态CSS - LESS学习总结相关推荐

  1. 关于CSS的学习内容三

    关于CSS的学习内容三 35.HTML5发展史 36.HTML5的浏览器兼容 37.HTML5语法 38.HTML新增语义化标签 39.Video和audio的应用 40.HTML5智能表单----- ...

  2. HTML和CSS的学习(1~20节)

    HTML与CSS的学习笔记 第一节:导学部分 1.html+css之拨云见日 入门学习HTML与CSS 切图流程(传统切图,智能切图) pc企业站的布局 pc游戏站的布局 2.html+css之溯本求 ...

  3. (HTML+css)学习小征程!!!

    (HTML+css)学习小征程! 一:第一章 初识!(拨云见日) 1.1 HTML和CSS定义: 1.2VSCode编辑器: (https://code.visualstudio.com/) 1.3h ...

  4. Web从入门到放弃-CSS的学习(五)

    一.CSS的简单介绍(要想知道复杂的,百度一搜一看一了解) HTML本质作用就是把数据呈现到网页上而已(数据展示的一个载体) 当下看到花里胡哨的网页都是在HTML的基础上通过CSS和CSS3实现的 w ...

  5. CSS部分学习(尚硅谷视频教程达姆老师)

    CSS部分学习 css部分 day1 day2 day3 day4 day5 day6 day7 day8 css部分 day1 1.Cascading style sheets2.样式表的组成规则选 ...

  6. java 动态代理深度学习(Proxy,InvocationHandler)

    http://hi.baidu.com/malecu/item/9e0edc115cb597a1feded5a0 http://www.iteye.com/topic/683613 http://bl ...

  7. html字体代码_第50天 HTML和css的学习

    第65次(html和css) 第65次(html和css) 学习主题:html和css 学习目标: 1 掌握html5新增标签的使用 2 掌握css入门 对应视频: http://www.itbaiz ...

  8. LESS是一个CSS预处理器,跨浏览器友好,提供诸如变量,函数, mixins 和操作等功能,可以构建动态CSS...

    什么是LESS? LESS是一个CSS预处理器,可以为网站启用可自定义,可管理和可重用的样式表. LESS是一种动态样式表语言,扩展了CSS的功能. LESS也是跨浏览器友好. CSS预处理器是一种脚 ...

  9. CSS入门学习笔记+案例(1)

    CSS入门学习 一.CSS简介 1.什么是CSS CSS:Cascading Style Sheet 层叠样式表 是一组样式设置的规则,用于控制页面的外观样式 2.为什么使用CSS 实现内容与样式的分 ...

最新文章

  1. PowerShell删除Exchange 2010邮件的正确姿势
  2. Spark写Redis+Spark资源配置总结
  3. Java EE6 CDI,命名组件和限定符
  4. jQuery框架学习第五天:事件与事件对象
  5. C语言实现控制台中光标随意移动
  6. Bootstrap响应式内嵌元素
  7. 释放内容化势能 聚划算《划算8点档》给出新思路
  8. mgr未同步 mysql_MySQL MGR如何修复数据不一致的节点
  9. 【PostgreSQL-9.6.8】序列
  10. 数据预处理第2讲:非线性变换
  11. SpringBoot 修改仓库
  12. html图片显示不出来
  13. 【九度】题目1419:文献排序
  14. iphone苹果二手手机购买前必看
  15. PHP中mysql查询全部过程_PHP到MySQL数据查询过程概述_MySQL
  16. kali linux 最新下载,kali新版本下载,Kali Linux 2019.4 开放下载
  17. 计算机科学与技术研究生推荐读物,2017年中山大学0812计算机科学与技术考研参考书目推荐...
  18. 软件测试基础知识bbst,海盗派测试分析MFQPPDCS海盗派.PDF
  19. DSF data model
  20. 【小社交】谁是下一个陌陌?陌生人社交网络大起底!

热门文章

  1. hadoop的同类技术_Hadoop 气数已尽:逃离复杂性,拥抱云计算
  2. servlet——登录练习(登录页面登录请求登录请求处理)
  3. lua io详细操作
  4. 电源两端并联一个电容的作用(
  5. Altium Designer将Gerber转换为PCB文件教程
  6. sdut 2506 完美网络(优先队列)
  7. 5.7 matlab数据插值与曲线拟合的比较
  8. BP神经网络(检测故障的实例)
  9. 提取图像的边界,用数字标记不同的目标边界
  10. R语言较为特殊的一些运算符