学习完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. Eclipse rap 富客户端开发总结(13) :Rap/Rcp保存按钮处理方式

    一.概述 在做项目的过程中,处理编辑区的保存机制的时候.发现,同样是扩展eclipse 自带的保存和全部保存按钮时候,rcp 工程下,保存按钮可以正常的灰显和可用,但是rap 的按钮就是始终呈现灰显的 ...

  2. MySQL集群(一)之主从复制

    前面学完了JDBC,接下来带大家感受一下MySQL集群!其实什么是MySQL集群?简单的说就是一群机器(服务器)的集合,它们连在一起来工作. 其实各种数据库都有自己的集群,常常的多: 我们要学习的就是 ...

  3. MySQL线程池的引入可以提高我们的MySQL的性能

    支持线程池的版本:MySQL 企业版本,MySQL percona的分支 MariDB 的版本.我们知道我们的MySQL 语句是不支持硬解析的,没有无SQL 解析 cache.每个连接对应一个线程,我 ...

  4. Centos7搭建kubernetes搭建

    安装前的准备工作: Kubernetes包提供了一些服务:kube-apiserver,kube-scheduler,kube-controller-manager,kubelet,kube-prox ...

  5. MX4拍摄视频转码方法

    问题 使用魅族4手机拍摄的视频,其视频编码是H.265 目前大多数设备不支持解码,表现为常用播放器无法正常播放视频,剪辑软件无法剪辑视频. 解决方案 使用软件进行转码,期间尝试软件如下: 爱剪辑 部分 ...

  6. DialogFragment的应用

    一.DialogFragment简单介绍: 1.基本概念 DialogFrament 指一个与fragment建立了关联的Dialog, 随fragment生, 随fragment死, 即Dialog ...

  7. 个人从源码理解JIT模式下angular编译AppModule的过程

    承接上文.笔者之前将一个angular项目的启动过程分为了两步: 创建平台得到 PlatformRef ,以及执行平台引用提供的方法编译根模块 AppModule .本文就将着眼于创建好的平台,从an ...

  8. Ubuntu 安装 SQL Server

    SQL Server现在可以在Linux上运行了!正如微软CEO Satya Nadella说的,"Microsoft Loves Linux",既Windows 10内置的Lin ...

  9. 零复制(zero copy)技术

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  10. hdu4632

    Palindrome subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65535 K (Java/ ...