10 分钟入门 Less 和 Sass
Less 和 Sass
第一章 Less和Sass简介
Less和Sass都为动态样式表的语言,即css框架,通过简洁明了的语法定义,使得编写CSS的工作变得非常简单。
第二章 Less
本质上,LESS 包含一套自定义的语法及一个解析器,用户根据这些语法定义自己的样式规则,这些规则最终会通过解析器,编译生成对应的 CSS 文件。LESS 并没有裁剪 CSS 原有的特性,更不是用来取代 CSS 的,而是在现有 CSS 语法的基础上,为 CSS 加入程序式语言的特性。
2.1 配置
在服务器配置less非常简单,只需要安装less的编译器:
npm install -g less
打开lessc --help
,我们可以看到使用方法:
lessc [option option=parameter ...] <source> [destination]
,实际上,我们编译一个less文件的时候,可以直接输出指令
lessc styles.less styles.css
而在客户端使用则更加便捷,我们可以直接引入名为less.js的编译器,对所写代码进行编译
<link rel="stylesheet/less" type="text/less" href="styles.less" />
<script src="https://cdn.bootcss.com/less.js/2.7.2/less.js"></script>
注意,一定要在自己写完的样式之后引入less编译器
当然,我们的less通常用于持续化继承工具中进行使用,例如glup和webpack,这些工具可以帮助我们自动构建less为css
2.2 变量
Less中的变量充许你在样式中的某个地方对常用的值进行定义,然后应用到样式中,这样只要改变你定义的变量参数值就可以达到改变全局的效果:
@color: #4d926f;#header {color: @color;}h2 {color: @color;}
编译后的效果
#header {color: #4d926f;
}
h2 {color: #4d926f;
}
同时,对于变量,我们还可以做运算
@nice-blue: #5B83AD;
@light-blue: @nice-blue + #111;#header { color: @light-blue; }
我们不仅可以定义属性值为变量,同时可以定义属性为常量;类似其他语言中的动态变量.
@color :blue;
@blue : 'color' ;
@height:10px;
@width:100px;
#header {height: @height; width: @width; color: @@blue;
}
在一个less文件中,我们可以使用@import
导入其他 less 文件
@color : blue;
@import '02.less';
div{color:@color;background:@background;
}
@background:yellow;
2.3 混入
在 LESS 中我们可以定义一些通用的属性集为一个 class,然后在另一个 class 中去调用这些属性.
.border{border:1px solid red;
}
@color :blue;
@blue : 'color' ;
@height:10px;
@width:100px;
#header {height: @height; width: @width; color: @@blue; .border;
}
在混入的同时,我们可以把这个类看作一个可以传递参数的函数调用
.border(@yourcolor){border:1px solid @yourcolor;
}
@color :blue;
@blue : 'color' ;
@height:10px;
@width:100px;
#header {height: @height; width: @width; color: @@blue; .border(yellow);
}
当然,对于函数,我们也可以定义默认值
.border(@yourcolor:red){border:1px solid @yourcolor;
}
@color :blue;
@blue : 'color' ;
@height:10px;
@width:100px;
#header {height: @height; width: @width; color: @@blue; .border;
}
2.4 套嵌
我们平时在写css的时候,通常会多次运用选择器选择子元素进行样式控制
<div id="header"><a>学习less</a>
</div>
#header {display: inline;float: left;
}
#header a {font-size: 26px;font-weight: bold;
}
Less允许我们运用套嵌描述子元素样式,写法类似dom的层级关系
#header{width: @width * 5;height: @height;.border;a:first-child{color:@color;};a:last-of-type{color:blue;}
}
对于伪类选择器,我们发现编译后的样式不正确
#header{display: inline;float: left;a{font-size: 26px;font-weight: bold;:hover{color:yellow;}}
}
这时,我们只需要用&
符号,让属性连写
#header{display: inline;float: left;a{font-size: 26px;font-weight: bold;&:hover{color:yellow;}}
}
2.5 函数
Less 提供了多种函数用于控制颜色变化、处理字符串、算术运算等等
http://www.1024i.com/demo/less/reference.html
http://lesscss.cn/functions/
2.6 循环
less给我们提供了控制循环的API loop
,类似于if...else
语句,我们可以使用loop
帮助我们完成css的编译
比如说
.loop(@counter) when (@counter > 0) {.loop((@counter - 1)); // next iterationwidth: (10px * @counter); // code for each iteration
}div {.loop(5); // launch the loop
}
对于我们曾经自己写过的boolstrap,尝试控制循环:
.loop(@n , @i: 1 ) when (@i <= @n) {.col-md-@{i} {width: (@i * 100% / @n); }.loop( @n , (@i + 1) );
}
@media(max-width:992px){.loop(12);
}
注意
.loop
是函数名,可以随意定义,when相当于if判断
第三章 Sass
世界上最成熟、最稳定、最强大的专业级CSS扩展语言!(...)
http://sass-lang.com/
学习完了less,sass对我们来说也会很简单
3.1 安装sass
在windows上如果想要使用sass,我们需要配置ruby环境,首先安装ruby,配置项选择添加到环境变量中
安装完毕,在控制台输入ruby -v
可以查看安装的ruby版本号
安装完ruby后,就可以继续安装sass了
控制台输入gem install sass
,sass会自动安装在你的全局环境中.
3.2 使用sass
sass提供两种风格的书写格式,一种为默认的sass风格,另外一种为scss风格,
其中,scss风格更像是我们采用的css书写样式
sass
#sidebarwidth: 30%background-color: #faa
scss
#sidebar {width: 30%;background-color: #faa;
}
另外,scss风格对空白不敏感,而sass则对空白,例如换行和空格敏感
SASS提供四个编译风格的选项:
- nested:嵌套缩进的css代码,它是默认值。
- expanded:没有缩进的、扩展的css代码。
- compact:简洁格式的css代码。
- compressed:压缩后的css代码。
我们使用默认值即可.
ul {margin: 0;padding: 0;list-style: none;
}li {display: inline-block;}a {display: block;padding: 6px 12px;text-decoration: none;
}
尝试使用不同风格的sass样式进行编译;
在使用express时,sass默认风格是sass,我们只需要略作更改,改做scss即可
sass test.scss
可以在命令行输出编译后的结果
sass test.scss test.css
可以将结果输出为css文件.
sass在线编译器 http://www.sassmeister.com/
3.3 变量
和less类似,sass也支持变量
$blue : #1875e7;
$width: 10px;
$height : 100px;
div{height:$height;width:$width;color : $blue;
}
同样,变量也支持嵌套书写
$side : left;
.rounded{border-#{$side}-radius: 5px;
}
注意外边写的是#
号,括号内写$side;
sass同样也可以支持@import
引入
@import '02.sass';
div{height:$height;width:$width;color : $blue;
}
$blue : #1875e7;
$width: 10px;
$height : 100px;
我们生成的css文件会有一个编译目录和sass.map文件,sass文件相当于源文件,css相当于编译后的文件,当检查到页面问题的时候,你看到的是css,但是需要修改的是sass文件,这个map就是两个文件的对应关系表。
3.4 计算
和less一致,sass也支持计算
#header{margin-top : (14px / 2);width : 100px + 50px;color : #FFF - #211;
}
3.5 套嵌
Sass同样支持选择器套嵌
#header {display: inline;float: left;
}
#header a {font-size: 26px;font-weight: bold;
}
#header{display: inline;float: left;a{font-size: 26px;font-weight: bold;}
}
对于伪类选择器,我们依旧用&
符号链接
#header{display: inline;float: left;a{&:hover{color:yellow;}font-size: 26px;font-weight: bold;}
}
3.6 代码继承
Sass允许一个选择器,继承另一个选择器,使用@extend
继承父类属性
.class1{background:yellow;
}
.class2{@extend .class1;width : 100px;height : 10px;
}
3.7 代码混用
类似less,sass也支持代码混用,并支持传入参数,只是需要用到@mixin
和@include
命令
@mixin color($v : yellow){background: $v;
}
#header {@include color(red);
}
3.8 函数
http://sass-lang.com/documentation/Sass/Script/Functions.html
3.9 控制结构
for循环
Sass支持 if,for,while,each作为控制结构用于数据输出;
http://sass-lang.com/documentation/file.SASS_REFERENCE.html#control_directives__expressions
@media(max-width:992px){@for $i from 1 through 12 {.col-md-#{$i}{width : $i*100%/12;float : left;}}
}
10 分钟入门 Less 和 Sass相关推荐
- 教程 | 10分钟入门简笔画(哆啦A梦篇)
多啦A梦主题曲 - 腾讯视频 从小就喜欢小叮当这个形象,不知道为什么后来改成了多啦A梦. 多啦A梦之歌,时常萦绕在耳旁: 心中有许多愿望,能够实现有多棒,只有哆啦a梦可以带着我实现梦想 可爱圆圆胖脸庞 ...
- 10分钟入门 ANSA API
扫描下方二维码关注我的微信公众号 - CAE软件二次开发Lab阅读全文! 文章目录 10分钟入门 ANSA API Script Editor (脚本编辑器) Modules(模块) 在ANSA中 ...
- 微信小程序怎么在wxml中插入多个图片_白云工商带你10分钟入门微信小程序开发...
10分钟入门微信小程序开发 程序开发难吗? No!来白云工商带你10分钟入门微信小程序开发! 英语不好能学好程序开发吗? 当然能,程序开发常见的也就那几个单词,只要热爱,非常简单! 欣赏 首先,来欣赏 ...
- 教程 | 10分钟入门简笔画(彩色小插画)
你好,色彩. BY:铃铛子 马克笔的笔触感觉: BY:铃铛子 由于大家写字的时候,为了笔锋,会起笔停顿一下,落笔再停顿一下,但是运行马克笔的时候不要这样,起笔确定了就画线,落笔除非必要,否则不停顿. ...
- 教程 | 10分钟入门简笔画12(创意小插画)
我的一家 很多宝宝说想学创作,今天跟大家分享简笔画中的联想小插画. 所谓联想小插画,就是想到哪里画到哪里.首先确定一个主题,抓住主要元素,然后用装饰性字体.元素.花边来丰富画面.我尝试创作了一张My ...
- 教程 | 10分钟入门禅绕画 3
禅绕装饰画是一种意识流装饰画,也是一种有趣随性的涂鸦,笔触可以天马星空随意走动. 禅绕画的构图技巧:重复.对称.均衡.重叠.勾线.肌理等.所有技巧的组合可以使得画面节奏和谐.疏密有度.节奏韵律恰如其分 ...
- 10分钟入门Pandas(添加一些个人见解)
pandas十分钟入门(codedog翻译) 原文下载地址:https://download.csdn.net/download/qq_35189715/11392455 github地址:https ...
- SQL人的优势:实战大数据开发10分钟入门
金色的九月,即将开启收获的篇章. 一早醒来,魔都湛蓝的天空,暑气未消的阳光,一扫前几日狂风暴雨的阴霾.品着自己煮的咖啡,吃上一口朱家角寄来的苏荷月饼,人生真赞! 这个礼拜将32G内存和M.2 SSD都 ...
- Webpack 10分钟入门
可以说现在但凡开发Single page application,webpack是一个不可或缺的工具. WebPack可以看做是一个模块加工器,如上图所示.它做的事情是,接受一些输入,经过加工产生一些 ...
最新文章
- 【Spring注解系列12】@Value与@PropertySource注解
- 某省HW中遇到的提权
- 职场智慧之如何提升自己在公司的价值
- Pell数列(信息学奥赛一本通-T1202)
- springcloud2.0以上版本_eureka控制台显示_找不到${spring.cloud.client.ipAddress}_没有显示成IP地址---springcloud工作笔记165
- 一点一点学习Ubuntu
- 在opencv3中的机器学习算法
- 14c语言合并两个字符串,C语言的标识符和字符数据、字符串数据.ppt
- 71计算机组装与维修期中,《计算机维修》期中考试卷
- 药品计算机培训计划,_计算机培训学习计划范文
- Simulink之PWM整流器
- Java日志框架的使用
- 神秘海域:顶级工作室“顽皮狗”成长史(上)
- css创意立体字特性
- 银行账户管理系统(一)
- JSPServlet(5)——实现简单的留言簿功能
- 原生js实现动态数据表格
- 开源Linux面板-1Panel
- VS 和VC 的区别
- [thread 38768 also had an error]
热门文章
- c语言 炸弹文件,炸弹超人游戏c语言简板
- float php 运算_PHP面试经典题目
- java多因子认证,Milvus 实战|生物多因子认证系列 (二):人脸识别
- MySQL利用磁盘缓存写入_MySQL写入缓冲区在数据库中的作用( Change Buffer )
- linux mint 自动更新设置,如何升级到Linux Mint 19.1
- Android自定义滑动进度条,Android自定义View实现圆形水波进度条
- caioj:1682: 【贪心】买一送一
- HDU 1757 A Simple Math Problem(矩阵快速幂)
- Google Go:初级读本
- CLR via C# 3 读书笔记(4):第1章 CLR执行模型 — 1.4 执行程序集代码