CSS预处理器

1.基于CSS的另一种语言

2.通过工具编译成CSS

3.添加了很多CSS不具备的特性

4.能提升CSS文件的组织

提供功能:1.嵌套 反映层级和约束 2.变量和计算,减少重复戴拿 3.Extend 和 Mixin 代码片段

4.循环 适用于复杂有规律的样式 5.import CSS 文件模块化

知识点:

1.less(嵌套)

body{
padding:0;
margin:0;
} .wrapper{
background:white; .nav{
font-size: 12px;
}
.content{
font-size: 14px;
&:hover{
background:red;
}
}
}

2.sass 嵌套

body {
padding: 0;
margin: 0;
} .wrapper {
background: white;
} .wrapper .nav {
font-size: 12px;
} .wrapper .content {
font-size: 14px;
} .wrapper .content:hover {
background: red;
}

3.less 变量

@fontSize: 12px;
@bgColor: red; body{
padding:0;
margin:0;
} .wrapper{
background:lighten(@bgColor, 40%); .nav{
font-size: @fontSize;
}
.content{
font-size: @fontSize + 2px;
&:hover{
background:@bgColor;
}
}
}

 需要改动变量时,只需改动变量的值然后编译成 css 文件即可,一次定义,多次使用,方便维护

4.sass 变量

$fontSize: 12px;
$bgColor: red; body{
padding:0;
margin:0;
} .wrapper{
background:lighten($bgColor, 40%); .nav{
font-size: $fontSize;
}
.content{
font-size: $fontSize + 2px;
&:hover{
background:red;
}
}
}

 sass 和 css 不兼容,尽量避免混淆,@在css 中是有意义的,故使用 $.

5.less mixin

有一段代码想公共使用(复用)的情况下:

@fontSize: 12px;
@bgColor: red; .box{
color:green;
} .box1{
.box();
line-height: 2em;
}
.box2{
.box();
line-height: 3em;
} .block(@fontSize){
font-size: @fontSize;
border: 1px solid #ccc;
border-radius: 4px;
} body{
padding:0;
margin:0;
} .wrapper{
background:lighten(@bgColor, 40%); .nav{
.block(@fontSize);
}
.content{
.block(@fontSize + 2px);
&:hover{
background:red;
}
}
}

编译成css

.box {
color: green;
}
.box1 {
color: green;
line-height: 2em;
}
.box2 {
color: green;
line-height: 3em;
}
body {
padding: 0;
margin: 0;
}
.wrapper {
background: #ffcccc;
}
.wrapper .nav {
font-size: 12px;
border: 1px solid #ccc;
border-radius: 4px;
}
.wrapper .content {
font-size: 14px;
border: 1px solid #ccc;
border-radius: 4px;
}
.wrapper .content:hover {
background: red;
}

6. sass mixin

$fontSize: 12px;
$bgColor: red; @mixin block($fontSize){
font-size: $fontSize;
border: 1px solid #ccc;
border-radius: 4px;
} body{
padding:0;
margin:0;
} .wrapper{
background:lighten($bgColor, 40%); .nav{
@include block($fontSize);
}
.content{
@include block($fontSize + 2px);
&:hover{
background:red;
}
}
}

与 less 不同点:1. less 需要 @mixin 2.参数名称不一样 3.不需要class,直接指定其名字

编译成 css

body {
padding: 0;
margin: 0;
} .wrapper {
background: #ffcccc;
} .wrapper .nav {
font-size: 12px;
border: 1px solid #ccc;
border-radius: 4px;
} .wrapper .content {
font-size: 14px;
border: 1px solid #ccc;
border-radius: 4px;
} .wrapper .content:hover {
background: red;
}

 

7.less extend

解决重复代码问题,减少 css 体积

@fontSize: 12px;
@bgColor: red; .block{
font-size: @fontSize;
border: 1px solid #ccc;
border-radius: 4px;
} body{
padding:0;
margin:0;
} .wrapper{
background:lighten(@bgColor, 40%); .nav:extend(.block){
color: #333;
}
.content{
&:extend(.block);
&:hover{
background:red;
}
}
}

mixin 是把代码直接复制过来,extend 是把选择器提取出来,把公共样式写到一起  

编译成 css

.block,
.wrapper .nav,
.wrapper .content {
font-size: 12px;
border: 1px solid #ccc;
border-radius: 4px;
}
body {
padding: 0;
margin: 0;
}
.wrapper {
background: #ffcccc;
}
.wrapper .nav {
color: #333;
}
.wrapper .content:hover {
background: red;
}

8. sass extend

$fontSize: 12px;
$bgColor: red; .block{
font-size: $fontSize;
border: 1px solid #ccc;
border-radius: 4px;
} body{
padding:0;
margin:0;
} .wrapper{
background:lighten($bgColor, 40%); .nav{
@extend .block;
color: #333;
}
.content{
@extend .block;
&:hover{
background:red;
}
}
}

 编译成 css

.block, .wrapper .nav, .wrapper .content {
font-size: 12px;
border: 1px solid #ccc;
border-radius: 4px;
} body {
padding: 0;
margin: 0;
} .wrapper {
background: #ffcccc;
} .wrapper .nav {
color: #333;
} .wrapper .content:hover {
background: red;
}

 sass 中 div 没有换行,其余再无区别,在样式表中就可以完全完成样式变更的操作,更加集中地维护代码

9.less loop (循环)

高度有规律的情况(网格) 采用递归,出口就是 n <= 0 时,跳出循环

.gen-col(@n) when (@n > 0){
.gen-col(@n - 1);
.col-@{n}{
width: 1000px/12*@n;
}
} .gen-col(12);

编译成 css

.col-12 {
width: 1000px;
}
.col-11 {
width: 916.66666667px;
}
.col-10 {
width: 833.33333333px;
}
.col-9 {
width: 750px;
}
.col-8 {
width: 666.66666667px;
}
.col-7 {
width: 583.33333333px;
}
.col-6 {
width: 500px;
}
.col-5 {
width: 416.66666667px;
}
.col-4 {
width: 333.33333333px;
}
.col-3 {
width: 250px;
}
.col-2 {
width: 166.66666667px;
}
.col-1 {
width: 83.33333333px;
}

10. sass loop

@mixin gen-col($n){
@if $n > 0 {
@include gen-col($n - 1);
.col-#{$n}{
width: 1000px/12*$n;
}
}
} @include gen-col(12);

 这是类比上面 less 的写法,但 sass 还有更简便的写法,因为 sass 支持 for,故

@for $i from 1 through 12 {
.col-#{$i} {
width: 1000px/12*$i;
}
}

  编译成 css

.col-1 {
width: 83.33333px;
} .col-2 {
width: 166.66667px;
} .col-3 {
width: 250px;
} .col-4 {
width: 333.33333px;
} .col-5 {
width: 416.66667px;
} .col-6 {
width: 500px;
} .col-7 {
width: 583.33333px;
} .col-8 {
width: 666.66667px;
} .col-9 {
width: 750px;
} .col-10 {
width: 833.33333px;
} .col-11 {
width: 916.66667px;
} .col-12 {
width: 1000px;
}

11. less import

解决 css 模块化 问题

6-import-variable

@themeColor: blue;
@fontSize: 14px;

6-import-module1

.module1{
.box{
font-size:@fontSize + 2px;
color:@themeColor;
}
.tips{
font-size:@fontSize;
color:lighten(@themeColor, 40%);
}
}

6-import-module2

.module2{
.box{
font-size:@fontSize + 4px;
color:@themeColor;
}
.tips{
font-size:@fontSize + 2px;
color:lighten(@themeColor, 20%);
}
}

  less import(可以跨文件使用)

@import "./6-import-variable";
@import "./6-import-module1";
@import "./6-import-module2";

  编译成 css

.module1 .box {
font-size: 16px;
color: blue;
}
.module1 .tips {
font-size: 14px;
color: #ccccff;
}
.module2 .box {
font-size: 18px;
color: blue;
}
.module2 .tips {
font-size: 16px;
color: #6666ff;
}

 12.sass import

  6-import-variable

$themeColor: blue;
$fontSize: 14px;

 6-import-module1

.module1{
.box{
font-size:$fontSize + 2px;
color:$themeColor;
}
.tips{
font-size:$fontSize;
color:lighten($themeColor, 40%);
}
}

 6-import-module2

.module2{
.box{
font-size:$fontSize + 4px;
color:$themeColor;
}
.tips{
font-size:$fontSize + 2px;
color:lighten($themeColor, 20%);
}
}

 sass import(可以跨文件使用)

@import "./6-import-variable";
@import "./6-import-module1";
@import "./6-import-module2";

 编译成 css

.module1 .box {
font-size: 16px;
color: blue;
}
.module1 .tips {
font-size: 14px;
color: #ccccff;
}
.module2 .box {
font-size: 18px;
color: blue;
}
.module2 .tips {
font-size: 16px;
color: #6666ff;
}

   

CSS预处理器(less 和 sass)的更多相关文章

  1. CSS预处理器实践之Sass、Less大比拼[转]

    什么是CSS预处理器? CSS可以让你做很多事情,但它毕竟是给浏览器认的东西,对开发者来说,Css缺乏很多特性,例如变量.常量以及一些编程语法,代码难易组织和维护.这时Css预处理器就应运而生了.Cs ...

  2. Css预处理器实践之Sass、Less大比拼

    xwei | 2012-07-07 | 网页重构 什么是CSS预处理器? Css可以让你做很多事情,但它毕竟是给浏览器认的东西,对开发者来说,Css缺乏很多特性,例如变量.常量以及一些编程语法,代码难 ...

  3. CSS预处理器实践之Sass、Less比较

    什么是CSS预处理器? CSS可以让你做很多事情,但它毕竟是给浏览器认的东西,对开发者来说,Css缺乏很多特性,例如变量.常量以及一些编程语法,代码难易组织和维护.这时Css预处理器就应运而生了.Cs ...

  4. CSS预处理器的对比 — Sass、Less和Stylus

    本文根据Johnathan Croom的<sass vs. less vs. stylus: Preprocessor Shootout>所译,整个译文带有我们自己的理解与思想,如果译得不 ...

  5. 20190421-那些年使用过的CSS预处理器(CSS Preprocessor)

    写在前面的乱七八糟的前言: emmm,不得不说,早上七点是个好时间,公园里跳广场舞的大妈,街边卖菜刀看报的大爷,又不得不说,广州图书馆是个好地方,该有的安静,该有的人气,听着楼下小孩子的声音,看着周围 ...

  6. 前端CSS预处理器Sass

    前面的话   "CSS预处理器"(css preprocessor)的基本思想是,用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件.SASS是一种CSS的开发工 ...

  7. css预处理器sass使用教程(多图预警)

    css预处理器赋予了css动态语言的特性,如变量.函数.运算.继承.嵌套等,有助于更好地组织管理样式文件,以及更高效地开发项目.css预处理器可以更方便的维护和管理css代码,让整个网页变得更加灵活可 ...

  8. 关于前端CSS预处理器Sass的小知识!

    前面的话   "CSS预处理器"(css preprocessor)的基本思想是,用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件.SASS是一种CSS的开发工 ...

  9. CSS预处理器Sass、LESS 和 Stylus

    CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS 预处理器框架,分别是 Sass.Less CSS.Stylus. 首先我们 ...

随机推荐

  1. HandlerMapping执行过程。。。

    1.web.xml DispatcherServlet 类 寻址 doDispatch() 2.getHandler(requset) 点击,进入 3.HandlerMapping hm=xxxxxx ...

  2. static 关键字用法

    static a=0; 就是把a初始化为0:初始值为0而已 即使a是局部变量,每次进入此变量所在的函数,a值还是保持上次赋值: 在中断里建议在局部变量前加上static,以确保此变量值的寿命

  3. android中常见的设计模式有哪些?

    建造者模式 建造者模式最明显的标志就是Build类,而在Android中最常用的就是Dialog的构建,Notification的构建也是标准的建造者模式. 建造者模式很好理解,如果一个类的构造需要很 ...

  4. Android Google Map API使用的八个步骤

    本系列教程将分为两部分,第一部分是指导用户使用Mapview控件进行编程,其中包括了如何获得Google Map API,如何使用该API进行简单的开发,如何获得用户当前所在的位置.第二部分则包括如何 ...

  5. cesium-大规模人群运动测试

    环境:cesium1.57: 笔记本电脑:集成显卡+独显Navida 1060 测试内容:大规模人群运动(500人,可设置运动的路径),可行性及帧率 测试结果:21-23FPS,较为流畅:集显70%- ...

  6. MovieReview—Ghost in the Shell 2: Innocence(攻壳机动队2:无罪)

    Doll killing event            The movie was developed around a series of doll murders. Barthes and o ...

  7. UVA 211 The Domino Effect 多米诺效应 (回溯)

    骨牌无非两种放法,横着或竖着放,每次检查最r,c最小的没访问过的点即可.如果不能放就回溯. 最外面加一层认为已经访问过的位置,方便判断. #include<bits/stdc++.h> ; ...

  8. Hicharts图表的使用

    Hicharts图表的使用 引用 在4.0之后就不需要jQuery了,z这里是用ajax向后台发送数据 引入js或者CDN,这里采用的是引入js的方式 在Hicarts文件中的index中查看相应的图 ...

  9. 【转】json格式化、高亮库jsonFormater

    http://leo108.com/pid-1996.asp JsonFormater 基于jQuery的json格式化.高亮库 核心代码参考天马行空工作室,本人只做了模块化和一些代码优化. demo ...

  10. 使用notepad++远程编辑Linux文档

    上一篇中,我写了如何使用使用ftp服务器实现很方便的通信,这一篇我分享一个使用notepad++的一个NPPFTP插件远程编辑Linux中的文档的小技巧. 首先要确保你的Linux的ftp服务已经打开 ...