近两年移动市场不断扩大,HTML5也逐渐升温,为了使我们前端工作更有效率,各种框架层出不穷,本章将介绍LESSCSS框架。LESSCSS是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS的语法,为CSS的赋予了动态语言的特性,如变量、继承、运算、函数等,更方便CSS的编写和维护。

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

因为LESSCSS的语言特性比较多,所以我们将分开介绍,本文将介绍LESS的引入方式及其语法中的变量部分。

一、引入方式:

1

2

<link rel="stylesheet/less" type="text/css" href="css/style.css">

<script src="js/less.js" type="text/javascript"></script>

link中rel的值必须跟上/less,href链接的文件后缀可以是css也可以是less文件。

script是less这个js文件,如果想要正常使用LESS的话必须引入,这里还需要注意一点的是如果您需要在IE6、7、8中使用,请先在引入less.js前先引入es5-shim。

还需注意的是引入文件的位置也是有讲究的,js要在css文件下方,这样才能去编译我们的LESSCSS。

二、LESS语法:

作为CSS的一种扩展,LESSCSS不仅向下兼容CSS的语法,而且连新增的特性也是使用CSS的语法。这样的设计使得学习LESS很轻松,而且你可以在任何时候回退到CSS。

A、变量

LESS中的变量允许你在样式中的某个地方对常用的值进行定义,然后应用到样式中,这样只要改变你定义的变量参数值就可以达到改变全局的效果,我们先来看一段代码:

LESS写法:

1

2

3

4

5

6

7

@color: #999;

@fontSzie : 24px;

@line-h :1 ;

body{

background-color: @color;

font-size: @fontSzie;

}

编译成CSS:

1

2

3

4

body{

background-color: #999;

font-size:24px;

}

LESS变量还具有计算功能,如:

LESS写法:

1

2

3

4

5

@line-h :1 ;

@line-he : @line-h + 1;

body{

line-height:@line-he;

}

编译成CSS:

1

2

3

body{

line-height:2;

}

LESS可以在定义变量值时使用其它的变量:

LESS写法:

1

2

3

@color: red;

@rgb: "color";

Body {color: @@rgb;}

在@rgb中的color引用的就是它上边的@color变量。

编译成CSS:

1

body {color: red;}

在LESS中如果对同一个变量定义两次的话,在当前作用域中最后一次定义的将被使用。这与CSS的机制类似,最后一次定义的值会成为这个属性的值。

LESS写法:

1

2

3

4

5

6

7

8

9

10

@var: 0;

.class1 {

@var: 1;

.class {

@var: 2;

three: @var;

@var: 3;

}

one: @var;

}

编译成CSS:

1

2

3

4

5

6

.class1 .class {

three: 3;

}

.class1 {

one: 1;

}

在使用变量的方法的时候还需要注意一点的是:

变量是“按需加载”(lazy loaded)的,因此不必强制在使用之前声明。

下面是一个有效的LESS代码片段:

1

2

3

4

5

lazy-eval {

width: @var;

}

@var: @a;

@a: 9%;

同时LESS变量还很灵活,下面这个片段也是有效的:

1

2

3

4

5

6

.lazy-eval-scope {

width: @var;

@a: 9%;

}

@var: @a;

@a: 100%;

而以上两段代码都会编译成以下CSS:

1

2

3

.lazy-eval-scope {

width: 9%;

}

以上我们看到的变量都是存的属性值,此处不要有误区,变量很灵活,灵活在它的存储方式上,我们也可以用来存CSS属性。

例如:

1

2

3

4

5

6

7

8

@backg : background;

#player_btn{

@backg: #d6d6d6;

@backg: -webkit-linear-gradient(#fff, #d6d6d6);

@backg:-moz-linear-gradient(top, #fff, #d6d6d6);

@backg:-o-linear-gradient(top, #fff, #d6d6d6);

@backg:linear-gradient(to bottom, #fff, #d6d6d6);

}

变量可以用像 @{name} 这样的结构,以类似ruby和php的方式嵌入到字符串中:

1

2

@base-url: "http://assets.fnord.com/";

background-image: url("@{base-url}/images/bg.png");

同时,变量也可以存放选择器,例如:

1

2

3

4

@name: blocked;

.@{name} {

color: black;

}

Media也可以放在变量中,例如:

1

2

3

4

5

6

@singleQuery: ~"(max-width: 500px)";

@media screen, @singleQuery {

set {

padding: 3 3 3 3;

}

}

被编译为:

1

2

3

4

5

@media screen, (max-width: 500px) {

set {

padding: 3 3 3 3;

}

}

变量必须包含完整的media query。这样写会导致报错:@media screen and @partial {。

在1.4.0中,在开启严格运算模式的情况下,你也可以在media query的条件中插入变量。如@media screen, (max-width: @width) {。

以上为LESS语法中的变量部分,对于现在一站多平台兼容的市场需求下,此变量还是非常实用的。

下期将为大家介绍LESS语法中的混合部分。

less语言特性(一) —— 变量的更多相关文章

  1. C# 3.0新语言特性和改进(一)

    引言 关于C#3.0的特性,园子里已经有了一大把,可能大家都很熟悉了,虽然本人开发中使用过,但自己还是需要记录一下,总结一下.同时也是后面写Linq知识的基础.希望有兴趣的朋友,可以看看. C# 3. ...

  2. 【转】浅思OC的语言特性

    算了算,学习IOS已经有一段时间了.今天花了点时间思考一下OC的语言特性,让自己的心不要那么浮躁,注重基础,回归本源. OC做为一门面向对象语言,自然具有面向对象的语言特性,如封装.继承.多态.他具有 ...

  3. Pro ASP.NET MVC –第四章 语言特性精华

    C#语言有很多特性,并不是所有的程序员都了解本书我们将会使用的C#语言特性.因此,在本章,我们将了解一下作为一个好的MVC程序员需要了解C#语言的特性. 每个特性我们都只是简要介绍.如果你想深入了解L ...

  4. 浅思OC的语言特性

    算了算,学习IOS已经有一段时间了.今天花了点时间思考一下OC的语言特性,让自己的心不要那么浮躁,注重基础,回归本源. OC做为一门面向对象语言,自然具有面向对象的语言特性,如封装.继承.多态.他具有 ...

  5. java基础学习总结三(jdk7新特性、变量(局部变量和成员变量)、常量以及运算符)

    一:jdk7新特性 可以表示二进制数值,以0b开头,中间可以使用下划线_分隔符.如下: @Test /** * 测试jdk新特性 */ public void testJdk7(){ int a=0b ...

  6. XAML 名称范围 (x:) 语言特性

    本节介绍为 Windows 运行时实现的 XAML 语言特性的参考信息. 本部分内容 主题 描述 x:Class 属性 配置 XAML 编译,在标记和代码隐藏之间连接分部类.代码分部类在一个独立的代码 ...

  7. C++ 语言特性的性能分析

    转载:http://www.cnblogs.com/rollenholt/archive/2012/05/07/2487244.html      大多数开发人员通常都有这个观点,即汇编语言和 C 语 ...

  8. C# 动态语言特性,dynamic 关键字研究

    1       动态语言简介 支持动态特性的语言现在大行其道,并且有继续增长的趋势.比如 Ruby 和 Python, 还有天王级的巨星 --- JavaScript. 现在一个程序员说自己对 Jav ...

  9. 理解Javascript的动态语言特性

    原文:理解Javascript的动态语言特性 理解Javascript的动态语言特性 Javascript是一种解释性语言,而并非编译性,它不能编译成二进制文件. 理解动态执行与闭包的概念 动态执行: ...

随机推荐

  1. 新唐的开发环境的搭建,驱动以及BSP

    https://www.keil.com/demo/eval/arm.htm#DOWNLOAD1,MDK-ARM的IDE集成开发环境:mdk512.exehttp://www.keil.com/fid ...

  2. Struts2(五)数据校验

    一.概述 在提交表单数据时,如果数据需要保存到数据库,空输入等可能会引发一些异常,为了避免引起用户的输入引起底层异常,通常在进行业务逻辑操作之前,先执行基本的数据校验. 下面通过两种方式来阐述Stru ...

  3. cnBlogs博客推荐

      数据结构和算法若可以称为为编程的细胞结构,那设计模式就是编程的灵魂气脉. 一个从是编程的微观演绎,一个是编程的宏观设计.这个从技术和艺术的结合体,毫无疑问是在世界末日之前的很伟大的一项发明. 设计 ...

  4. IE(兼容问题)错误:缺少标识符 字符串或数字的解决

    在IE上遇到一个问题,缺少标识符 字符串或数字的解决. 问题是我的html页面在Firefox.chorme中运行正常,而在IE中老是报“缺少标识符 字符串或数字”的错误,原因: 这就是IE和Fire ...

  5. sublime--package control的配置与插件安装

    自动配置: 准备一个安装好的 sublime text .这里我的是版本3: 1. 快捷键:ctrl + ~:调出控制台,因为我的是版本3,所以在控制台中输入下边这段代码: import urllib ...

  6. nginx upstream 实现负载均衡

    如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...

  7. 黄金票据(Golden Ticket)的原理与实践

    0.黄金票据是什么? 在与认证过程中,经过client与AS的通信会得到TGT,带着TGT想TGS请求,得到票据ticket,用这个ticket可以来访问应用服务器.如果这段有什么疑问,欢迎参考Ker ...

  8. Unity3D Android动态反射加载程序集

    这种办法在iOS下是不让用的,只能在Android下用.用起来也很方便了. 1.先创建一个c#工程,引用到的UnityEngine.dll在Unity的安装目录里找吧 2.将编译的dll放入Unity ...

  9. C语言常用基础位操作

    1.使用下面的代码将最右边的1改变为0,假如没有1则结果为0(e.g.,01011000=>01010000): x &  (x-1) 此代码可以用来判断一个无符号的整数是否为2的幂,假 ...

  10. asp.net 实现pdf、swf等文档的浏览

    一.pdf的浏览 可以借助于pdf.js插件完成,使用pdf.js的好处是不需要安装额外的插件(比如flash),是纯web的解决方案.插件的下载链接:http://mozilla.github.io ...