十分钟入门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. How to build windows azure PowerShell Source Code

    Download any version source code of Windows Azure Powershell from https://github.com/Azure/azure-sdk ...

  2. X240s安装Win7 以及如何启用ExpressCache

    新买了一台X240S笔记本,尝试了带的Win8正版一个月后,实在无法适应Win8,干脆退回Win7完事,以下为安装过程, 第一步:制作启动U盘 首先,下载一个iso格式的Win7安装镜像文件,利用微软 ...

  3. “奥特曼攻打小怪兽”java学习打怪升级第一步

    ---恢复内容开始--- 练习:回合制对战游戏:奥特曼和小怪兽进行PK,直到一方的血量为0时结束战斗,输出谁胜利了! 不难看出场景中有两个对象:”奥特曼“这一对象抽象为”Ao"类:     ...

  4. redis连接数

    1.应用程序会发起多少个请求连接?1)对于php程序,以短连接为主.redis的连接数等于:所有web server接口并发请求数/redis分片的个数.2)对于java应用程序,一般使用JedisP ...

  5. POJ2155 Matrix二维线段树经典题

    题目链接 二维树状数组 #include<iostream> #include<math.h> #include<algorithm> #include<st ...

  6. 使用ContentProvider进行应用程序间的数据交互

    什么是ContentProvider: ContentProvider用来管理数据的访问规则.它允许你的应用程序向外界暴露需要被访问的数据. 是Android的四大组件之一. ContentProvi ...

  7. Beta版本冲刺Day5

    会议讨论: 628:配置java环境已经成功,Tomcat部署也成功了,Mysql还未进行配置.601:继续修改其他的页面外观. 528:继续完成其他的功能页面. 340:对一些页面进行了优化美观,并 ...

  8. Easyui表单,文本框,下拉菜单三级联动练习代码

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  9. 9.29判断变量x是奇数还是偶数

    方法一: package qqq; public class Jiou { public static void main(String[] args) { // TODO Auto-generate ...

  10. Tomcat-在发布项目时两次重复加载的问题介绍与解决

      前提: 如 1.存在某个应用:hello 2.该应用存放路径:D:\apache-tomcat-5.5.17\webapps\hello 3.Tomcat的server.xml部分配置信息如下: ...