学习完css部分,相信大家对通过css进行DOM元素的样式操作已经非常熟悉,也可以通过css的语法进行页面显示效果的添加和修改。如果你们对css报以崇高敬意,感觉它拯救了你的整个网页的话,其实你正在犯一个错误。

在你熟练使用css进行页面效果操作的时候,具有编程思维的“CSS预处理”语言正在悄然出现。可以说,它从某种层度上颠覆了原始样式编写,并逐渐被各大型网络公司及前段框架所使用。为什么它会有这么大的魔力,它们都是谁?从这章文档开始,我给大家介绍一下相关的知识,也就是你们要学习的LESS和SASS。

先来说一下为什么会出现LESS、SASS。难道是css不够优秀了吗?不是。其实在程序员眼里,css没有编程的语言的思维。没有变量,没有分支及循环等编程语言最基本的特点,使用css就是在一行一行的在对你的样式进行描述,写起来相当费劲,所以开始被程序员嫌弃。很自然的,有人开始为css加入编程的元素,这被叫做“CSS预处理器”,它的基本思想是:用一种专门的编程语言,进行网页样式的设计,然后再通过相关的方法或者是工具编译成css文件,被项目正常使用。

LESS是一种动态样式语言,属于css预处理语言的一种,它使用类似css的语法,为css赋予了动态语言的特性,如变量、继承、运算、函数等,更方便css的编写和维护。并且LESS可以在 多种语言和环境在使用,包括浏览器端、桌面应用端、服务器端。

编写的LESS文件不能被浏览器直接使用,需要把LESS文件编译成css文件。方法很多,最简单的方法是通过集成工具处理,比较好用的一个工具就是:klola。工具的下载地址为:http://koala-app.com/index-zh.html。大家可以先去下载并安装。安装成功以后运行效果为:

在讲具体语法之前先给大家说一下注释,相比css,less文件编译成css文件的时候,有一个特点,通过/**/添加的注释会被编译到css文件中,但是通过//添加的注释则不会。讲完注释,咱们看一下和语法规则相关的部分。

1变量

LESS中允许使用变量,通过变量,可以定义在样式中频繁使用的数据。然后在需要使用该数据的的时候直接调用变量名称即可。LESS中定义变量的语法很简单:@变量名称。使用的时候也是在样式属性后直接追加变量。示例如下:

2Mixins

Mixins可以实现将一个定义好的样式类A直接引入到另外一个样式类B中。从而实现让样式类B继承样式类A中的所有样式属性。定义样式类的方法和定义一个函数格式类似,并且可以定义形参来接受参数。示例如下:

3LESS运算

LESS中提供了类似运算的算术操作,其中包括加、减、乘、除等。通过运算符,我们可以实现属性值或者颜色的运算,这样可以实现属性值之间的复杂关系。示例如下:

4LESS嵌套

在学习css的过程中,咱们学习了各种跟层级关系相关的选择器,比如,后代选择器、子代选择器、相邻选择器、通用兄弟选择器等等。在LESS里,不需要去记忆大量的选择器。因为,所有的层级关系都可以通过css的嵌套来实现。示例如下:

通过对比LESS的层级和HTML的层级,大家不难发现其中的关系,HTML中的嵌套关系完全可以LESS中模拟。这样可以省去了编写css层级选择器的麻烦。这里还有一个符号需要给大家说一下,那就是&符号,&表示上一级选择器。在这段代码里,表示给a标签添加hover伪类。

上面内容给大家介绍了LESS的由来及几个比较重要的语法。到目前为止咱们还没有做LESS的编译。下一个章节,我会给大家介绍LESS工具编译,命令行编译及开发工具编译配置等多种办法,帮助你将less文件转换成css文件。

随机推荐

  1. 201521123069 《Java程序设计》 第14周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自 ...

  2. 多线程面试题系列(6):经典线程同步 事件Event

    上一篇中使用关键段来解决经典的多线程同步互斥问题,由于关键段的"线程所有权"特性所以关键段只能用于线程的互斥而不能用于同步.本篇介绍用事件Event来尝试解决这个线程同步问题.首先 ...

  3. C#设计模式(6)-原型模式

    引言 上一篇介绍了设计模式中的抽象工厂模式-C#设计模式(3)-建造者模式,本篇将介绍原型模式: 点击这里查看全部设计模式系列文章导航 原型模式简介 原型模式:用原型实例指定创建对象的种类,并且通过拷 ...

  4. foreach嵌套循环

    最近几天被这个嵌套搞晕了,还好经过几天的努力终于解决了,特记录下,因为要传两个List集合到jsp页面,还都是在一起输出,发现不能把两个集合放在一个foreach,所以就写了两个foreach来接受, ...

  5. PowerDesigner连接MySQL和逆向工程图

    0.写在前面的话 最近想梳理公司项目的表间关系,从项目后台管理系统的操作入手,以及代码的hibernate注解入手,都不算特别尽人意,于是最后还是鼓捣了一下PowerDesigner的逆向工程图,这样 ...

  6. 如何使用fiddler抓取https请求(PC和移动端)

    最近做一个抓取移动端app接口,并执行评论,收藏的接口功能测试.怎么搞/(ㄒoㄒ)/~~ 按照老思路试一试,第一步还是要用fiddler来帮忙获取接口信息! 一.基本的抓取http请求设置: 1.cm ...

  7. ASP.Net开发WebAPI跨域访问(CORS)的精简流程

    1: Web.config里有一行: <remove name="OPTIONSVerbHandler" /> 这个要删除. 2: nuget安装Microsoft.A ...

  8. Java为什么把String设计成不可变的(immutable)

    在java中,String是字符串常量,可以从内存,同步机制,数据结构等方面分析 1:字符串中常量池的需要 String不同于普通基础变量类型的地方在于对象.java中的字符串对象都保存在字符串常量池 ...

  9. win7系统Myeclipse下切换SVN用户

     Eclipse的SVN插件Subclipse做得很好,在svn操作方面提供了很强大丰富的功能.但到目前为止,该插件对svn用户的概念极为淡薄,不但不能方便地切换用户,而且一旦用户的帐号.密码保存之后 ...

  10. Kafka快速上手(2017.9官方翻译)

    为了帮助国人更好了解.上手kafka,特意翻译.修改了个文档.官方Wiki : http://kafka.apache.org/quickstart 快速开始 本教程假定您正在开始新鲜,并且没有现有的 ...