十分钟入门less(翻译自:Learn lESS in 10 Minutes(or less))

  注:本文为翻译文章,因翻译水平有限,难免有缺漏不足之处,可查看原文

  我们知道写css代码是非常枯燥的,尤其是写重复颜色、样式的代码,这需要我们付出很多努力来保持css代码可维护,但是它本不应该是这样的。

  很幸运地是,web开发社区已经解决了这个问题,我们在现在已经有了类似与less、sass和stylus这样的预处理器。它们有很多优于一般的css之处,如下所示:

  • 变量---以至于我们可以在样式表中定义和轻松地改变值。
  • 动态计算值。在css中我们有calc。
  • Mixins---使得我们重用和结合样式。它甚至还支持传递参数。
  • 函数---它给我们大量方便的功能来操作颜色、转换图片等等。

  不足之处在于如果你使用他们其中的一种预编译器,你需要把它编译成普通的css这样他才能在你的浏览器中工作。

第一部分:Getting Started

  Less 它需要Node.js或者一个web 浏览器来运行。你也可以在你的站点引用less.js,这样它就可以实时地编译所有的.less样式表,但是这是很慢的,并且我们不推荐。推荐的方式是提前编译你的less样式表成为.css文件来使用。有很多免费的地方可以帮你编译less文件,但是在这篇文章中我将使用node.js。

   如果你安装了node,并且你知道什么是终端,就打开它,使用npm安装它:

npm install -g less

  这将可以使得你的less文件编译成css文件像下面这样:

lessc style.less > style.css

  通过上面这行代码,我们的代码将会被转换为普通的css文件与styles.css中。

第二部分:变量

  less的一个主要特点就是可以创造变量,像一门标准的编程语言,它可以存储任何类型的变量,比如:颜色,选择器,尺寸,字体名字等等。less的思想在于使得css有了编程语法成为可能。

  现在我们定义了个变量,一个背景颜色和一个字体颜色,它们都包含16进制码。观察下面的两个版本:

  less如下所示:

@background-color: #ffffff;
@text-color: #1A237E; p{
background-color: @background-color;
color: @text-color;
padding: 15px;
} ul{
background-color: @background-color;
} li{
color: @text-color;
}

  编译后css如下:

p {
background-color: #ffffff;
color: #1a237e;
padding: 15px;
}
ul {
background-color: #ffffff;
}
li {
color: #1a237e;
}

  在上面的例子中,背景颜色为白色,字体为黑色。如果,我们想要改变所有的颜色,我们可以轻松地改变变量的值,而不需要手工的修改每一处。

第三部分:Mixins

  less可以是我们使用一个存在的class或者id引用到其他的选择器中,例子如下:

  less文件:

#circle{
background-color: #4CAF50;
border-radius: 100%;
} #small-circle{
width: 50px;
height: 50px;
#circle
} #big-circle{
width: 100px;
height: 100px;
#circle
}

  css文件:

#circle {
background-color: #4CAF50;
border-radius: 100%;
}
#small-circle {
width: 50px;
height: 50px;
background-color: #4CAF50;
border-radius: 100%;
}
#big-circle {
width: 100px;
height: 100px;
background-color: #4CAF50;
border-radius: 100%;
}

  另一个非常酷的事情是mixins可以接收变量,在下面的例子中我们文circles中的width和height添加了一个参数,并且有一个默认值25px。下面的代码将会创造一个一个25x25的小圆和一个100x100的大圆。

  less文件:

#circle(@size: 25px){
background-color: #4CAF50;
border-radius: 100%; width: @size;
height: @size;
} #small-circle{
#circle
} #big-circle{
#circle(100px)
}

  css文件:

#small-circle {
background-color: #4CAF50;
border-radius: 100%;
width: 25px;
height: 25px;
}
#big-circle {
background-color: #4CAF50;
border-radius: 100%;
width: 100px;
height: 100px;
}

  (补充:这里使用了参数的mixins之后,我们发现和上一个例子相比,这里仅仅是添加了类,而原来被添加的类没有被保存,而上一个例子中,被添加的类也被保存了,请注意。)

第四部分:嵌套和作用域

  嵌套可以用于结构化我们的样式表,这样可以和我们的HTML结构相匹配,从而减少了冲突。下面是一个无序列表和它的子元素的例子:

  less文件:

ul{
background-color: #03A9F4;
padding: 10px;
list-style: none; li{
background-color: #fff;
border-radius: 3px;
margin: 10px 0;
}
}

  css文件:

ul {
background-color: #03A9F4;
padding: 10px;
list-style: none;
}
ul li {
background-color: #fff;
border-radius: 3px;
margin: 10px 0;
}

  就像在编程语言中一样,在less中的变量接收他们的值决定于作用域。如果值在特定的作用域中不存在,那么LESS将会到上级的作用域中寻找直到它找到了最近的声明。(补充:这里我认为less中存在的是块级作用域)

  下面这个例子,转换成css,我们的li就将会有白色的字体,因为我们提前定义了@text-color在ul的规则中。

  less文件:

@text-color: #000000;

ul{
@text-color: #fff;
background-color: #03A9F4;
padding: 10px;
list-style: none; li{
color: @text-color;
border-radius: 3px;
margin: 10px 0;
}
}

  css文件:

/* line 3, text.less */
ul {
background-color: #03A9F4;
padding: 10px;
list-style: none;
}
/* line 9, text.less */
ul li {
color: #ffffff;
border-radius: 3px;
margin: 10px 0;
}

第五部分:操作

  你可以对于数值和颜色做简单的数学操作。如果说我们想要将两个div紧挨着,第二个div是第一个的两倍宽,并且有一个不同的背景,less知道如何测量并且不会弄混他们。

  less文件:

@div-width: 100px;
@color: #03A9F4; div{
height: 50px;
display: inline-block;
} #left{
width: @div-width;
background-color: @color - 100;
} #right{
width: @div-width * 2;
background-color: @color;
}

  css文件:

div {
height: 50px;
display: inline-block;
}
#left {
width: 100px;
background-color: #004590;
}
#right {
width: 200px;
background-color: #03a9f4;
}

第六部分:函数

  less同样也有函数! 它看起来更像一门编程语言了,不是吗? 我们看看淡出的效果吧,看看一个函数是如何减少颜色的透明度的。

  less文件:

@var: #004590;

div{
height: 50px;
width: 50px;
background-color: @var; &:hover{
background-color: fadeout(@var, 50%)
}
}

  css文件:

div {
height: 50px;
width: 50px;
background-color: #004590;
}
div:hover {
background-color: rgba(0, 69, 144, 0.5);
}

  根据上面的代码,当我们的div被划过是,它就会变得半透明。还有大量的有用的函数来操作颜色、检测图片的大小、甚至嵌入资源到样式表中像data-uri一样。在这里看全部的函数。

  

  进一步阅读

  你现在对less知道的足够多去开始深入学习了! 每一个css文件都是一个有效的less样式表,所以你现在可以清理哪些旧的、笨拙的css文件了。 当你学得更多,你将能够写出更加好的代码。下面就是我们推荐你下一步需要阅读的:

  • 所有的语法:link
  • less函数参考:link
  • 在浏览器中在线编辑和编译:link

The only place success comes before work is in the dictionary.

      ---成功在努力之前这回事只能在字典里看到。

  

十分钟入门less(翻译自:Learn lESS in 10 Minutes(or less))的更多相关文章

  1. 转载:Python十分钟入门

    Python十分钟入门:http://python.jobbole.com/23425/

  2. 快速入门:十分钟学会PythonTutorial - Learn Python in 10 minutes

    This tutorial is available as a short ebook. The e-book features extra content from follow-up posts ...

  3. (转)十分钟入门pandas

    本文是对pandas官方网站上<10 Minutes to pandas>的一个简单的翻译,原文在这里.这篇文章是对pandas的一个简单的介绍,详细的介绍请参考:Cookbook . 习 ...

  4. Python学习总结(一)—— 十分钟入门

    一.Python概要 1.1.语言简介 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,具有20多年的发展历史,成熟且稳定. 用任何编程语言来开发程序,都是为了让计算机干活,比如下 ...

  5. 十分钟入门流处理框架Flink --实时报表场景的应用

    随着业务的发展,数据量剧增,我们一些简单报表大盘类的任务,就不能简单的依赖于RDBMS了,而是依赖于数仓之类的大数据平台. 数仓有着巨量数据的存储能力,但是一般都存在一定数据延迟,所以要想完全依赖数数 ...

  6. Sass初学者超强十分钟入门

    ruby安装 因为sass依赖于ruby环境,所以装sass之前先确认装了ruby.先导官网下载个ruby 在安装的时候,请勾选Add Ruby executables to your PATH这个选 ...

  7. 十分钟入门 Less

    这篇文章来自 Danny Markov, 是我最喜欢的博主之一,实际上我最近翻译的一些文章全是出自他手.在查看本文之前你也可以 查看原文. 我们都知道写 CSS 代码是有些枯燥无味的,尤其是面对那些成 ...

  8. JavaSE学习总结(四)——Java面向对象十分钟入门

    面向对象编程(Object Oriented Programming,OOP)是一种计算机模拟人类的自然思维方式的编程架构技术,解决了传统结构化开发方法中客观世界描述工具与软件结构的不一致性问题.Ja ...

  9. VUE -- 十分钟入门 Less

    这篇文章来自 Danny Markov, 是我最喜欢的博主之一,实际上我最近翻译的一些文章全是出自他手.在查看本文之前你也可以 查看原文. 我们都知道写 CSS 代码是有些枯燥无味的,尤其是面对那些成 ...

随机推荐

  1. Sql 2012 远程数据库连接

    新装好的数据库,各种远程连接设置都设置好后.发现还是连接不上. 这时候,问题可能出在端口上,远程连接的时候需要指明端口.动态端口一般都会变.在本机连接时候,会自动选择端口.在远程访问时候,就必须要指明 ...

  2. SQLite剖析之体系结构

    1.通过官方的SQLite架构文档,理清大体的系统层次:Architecture of SQLite 2.阅读SQLite Documentation中Technical/Design Documen ...

  3. matlab 功率谱分析

    matlab 功率谱分析 1.直接法:直接法又称周期图法,它是把随机序列x(n)的N个观测数据视为一能量有限的序列,直接计算x(n)的离散傅立叶变换,得X(k),然后再取其幅值的平方,并除以N,作为序 ...

  4. app状态监听广播

    手机中的应用在安装.更新和卸载时都会发送广播 清单文件 <?xml version="1.0" encoding="utf-8"?> <man ...

  5. Windows去除快捷箭头

    美化桌面 bat代码: reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shel ...

  6. RHEL7挂载ISO做本地yum

    测试环境,网络yum源没有本地yum源下载速度快!Yum比起RPM装包的好处就是可以自己处理依赖关系,也就是自己安装相关的依赖包,用起来也是很方便,但是删包的时候也会删除依赖包,这里要非常小心 01. ...

  7. 53-whereis 查找文件

    查找文件 whereis [options] file 参数 file 是whereis需要查找的文件,这些文件属于原始代码,二进制文件或是帮助文件 选项 -b               只查找二进 ...

  8. 2-ls 显示目录内容

    ls list directory contents 显示目录内容 [语法]: ls [选项] [参数] [功能介绍] ls指令用来显示目录列表,在Linux系统中有着较高的使用率.ls指令的输出信息 ...

  9. redis的主从复制,读写分离,主从切换

    当数据量变得庞大的时候,读写分离还是很有必要的.同时避免一个redis服务宕机,导致应用宕机的情况,我们启用sentinel(哨兵)服务,实现主从切换的功能. redis提供了一个master,多个s ...

  10. 对TCP/IP网络协议的深入浅出归纳

    前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没弄清楚.后来 我花了一些时间去了解这些网络协议,现在对TCP/IP网 ...