less语言特性(一) —— 变量
近两年移动市场不断扩大,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语言特性(一) —— 变量的更多相关文章
- C# 3.0新语言特性和改进(一)
引言 关于C#3.0的特性,园子里已经有了一大把,可能大家都很熟悉了,虽然本人开发中使用过,但自己还是需要记录一下,总结一下.同时也是后面写Linq知识的基础.希望有兴趣的朋友,可以看看. C# 3. ...
- 【转】浅思OC的语言特性
算了算,学习IOS已经有一段时间了.今天花了点时间思考一下OC的语言特性,让自己的心不要那么浮躁,注重基础,回归本源. OC做为一门面向对象语言,自然具有面向对象的语言特性,如封装.继承.多态.他具有 ...
- Pro ASP.NET MVC –第四章 语言特性精华
C#语言有很多特性,并不是所有的程序员都了解本书我们将会使用的C#语言特性.因此,在本章,我们将了解一下作为一个好的MVC程序员需要了解C#语言的特性. 每个特性我们都只是简要介绍.如果你想深入了解L ...
- 浅思OC的语言特性
算了算,学习IOS已经有一段时间了.今天花了点时间思考一下OC的语言特性,让自己的心不要那么浮躁,注重基础,回归本源. OC做为一门面向对象语言,自然具有面向对象的语言特性,如封装.继承.多态.他具有 ...
- java基础学习总结三(jdk7新特性、变量(局部变量和成员变量)、常量以及运算符)
一:jdk7新特性 可以表示二进制数值,以0b开头,中间可以使用下划线_分隔符.如下: @Test /** * 测试jdk新特性 */ public void testJdk7(){ int a=0b ...
- XAML 名称范围 (x:) 语言特性
本节介绍为 Windows 运行时实现的 XAML 语言特性的参考信息. 本部分内容 主题 描述 x:Class 属性 配置 XAML 编译,在标记和代码隐藏之间连接分部类.代码分部类在一个独立的代码 ...
- C++ 语言特性的性能分析
转载:http://www.cnblogs.com/rollenholt/archive/2012/05/07/2487244.html 大多数开发人员通常都有这个观点,即汇编语言和 C 语 ...
- C# 动态语言特性,dynamic 关键字研究
1 动态语言简介 支持动态特性的语言现在大行其道,并且有继续增长的趋势.比如 Ruby 和 Python, 还有天王级的巨星 --- JavaScript. 现在一个程序员说自己对 Jav ...
- 理解Javascript的动态语言特性
原文:理解Javascript的动态语言特性 理解Javascript的动态语言特性 Javascript是一种解释性语言,而并非编译性,它不能编译成二进制文件. 理解动态执行与闭包的概念 动态执行: ...
随机推荐
- SaltStack salt 命令
salt 是服务端远程批量操作多台客户端需要使用到的命令,常见用法如下: salt '*' # 指定对所有客户端主机进行操作 salt 'minion01' # 指定对单台客户端主机进行操作 salt ...
- Splash wait() 方法
wait()方法用于控制页面的等待时间,如下,实现访问淘宝并等待2秒,随后返回淘宝页面的源代码: function main(splash) splash:go("https://www.t ...
- U3D之Editor扩展学习
Unity3D提供了强大的编辑器扩展机制,在项目开发中,如果可以将一些繁琐的工作放在编辑器扩展中进行,则会大大提高效率.本文对编辑器扩展进行了一些总结,希望对有兴趣编写编辑器扩展的开发人员有所帮助.当 ...
- MVC的路由设置【转】
转,MVC的路由设置. 后端获取路由里面action的参数,函数需要设置相同的参数名称才行. routes.MapRoute( "Default", "{controll ...
- 简述项目中优化sql的方法,从哪些方面,sql语句性能如何分析?
查询速度慢的原因很多,常见如下几种 : .没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) .I/O吞吐量小,形成了瓶颈效应. .没有创建计算列导致查询不优化. .内存不足 .网络 ...
- Foxmail邮箱最新应用指南 --如何使用「邮件标签」?
Foxmail邮箱最新应用指南--如何使用「邮件标签」? 最近看到很多的朋友收发电子邮件,现在我们帮助讲解下foxmail的标签功能,可以帮助我们整理我们的邮箱,让重要信息浮出水面. 1.鼠标右键邮件 ...
- jquery.flot.js简介
JQuery图表插件之Flot Flot是一个Jquery下图表插件,具有简单使用,交互效果,具有吸引力外观特点.目前支持 Internet Explorer 6+, Chrome, Firefox ...
- Esper学习之十二:EPL语法(八)
今天的内容十分重要,在Esper的应用中是十分常用的功能之一.它是一种事件集合,我们可以对这个集合进行增删查改,所以在复杂的业务场景中我们肯定不会缺少它.它就是Named Window. 由于本篇篇幅 ...
- 【css系列】创建网页加载进度条
一.最简单或者明显的方式是使用定时器 1.在网页中加入布局覆盖真实网页内容 2.使用定时器确定加载所用时间的长短,其实并不是真正的加载进度实现 <!DOCTYPE html> <ht ...
- JSP中使用Spring注入的Bean时需要注意的地方
遇到问题 遇到一个问题:在JSP中,使用Spring注入的Bean对象时,未能正确地获取到想要的对象. 郁闷的是,它也没报错. 研究问题 使用DEBUG功能(好久不在JSP里写Java代码了,都忘了J ...