sass的核心知识及使用
sass的官方链接地址:htpp://sass-lang.com
参考链接地址:http://www.haorooms.com/post/sass_css
1. 基础语法
1.1 变量
SASS允许使用变量,所有变量以$开头
$blue : blue;
div {
color:$blue;
}
如果变量需要镶嵌在字符串中,就必须要写在 #{} 中
$side:left;
.rounded {
border-#{$side}-radius:5px;
}
1.2 计算功能
SASS允许在代码中使用计算式:
body {
margin:(14px/2);
top:50px+100px;
right:$var*10%
}
1.3 嵌套
SASS允许选择器嵌套,比如下面的css代码:
div h1 {
color:red;
}
//可以写成:
div {
h1 {
color:red;
}
}
//属性也可以嵌套,比如 border-color 属性,可以写成:
p {
border:{
color:red;
}
}
//注意:border后面必须加上冒号
在嵌套的代码块内,可以使用 & 引用父元素,比如 a:hover 伪类,可以写成:
a {
&:hover {
color:red
}
}
1.4 注释
SASS 共有两种注释风格。
//注释,只保留在SASS源文件中
/*注释*/,会保留到编译后的 css 文件中
/*!
重要注释!,即使是压缩模式编译,也会保留这行注释
*/
2. 代码的重用
2.1 继承
SASS允许使用一个选择器,继承另一个选择器,比如 class1 :
.class1 {
border:1px solid #ddd;
}
class2 要继承 class1,就要使用 @extend 命令:
.class2 {
@extend .class1;
font-size:120%;
}
2.2 mixin
mixin有点像C语言中的宏(marco),是可以重用的代码块。 使用 @mixin 命令,定义一个代码块:
@mixin left {
float:left;
margin-left:10px;
}
使用 @include 命令,调用这个 mixin:
div {
@include left;
}
mixin的请打之处,在于可以指定参数和缺省值:
@mixin left($value:10px){
float:left;
margin-right:$value;
}
使用的时候,根据需要加入参数:
div {
@include left(20px);
}
下面是一个 mixin 的实例,用来生成浏览器前缀:
@mixin rounded($vert,$horz,$radius:10px){
border-#{$vert}-#{$horz}-radius:$radius;
-moz-border-#{$vert}-#{horz}-radius:$radius;
-webkit-border-#{$vert}-#{$horz}-radius:$radius;
}
使用的时候,可以像下面这样调用:
#navbar li {
@include rounded(top,left);
}
//或者
#footer {
@include rounded(top,left,5px);
}
2.3 颜色函数
SASS提供了一些内置的颜色函数,以便生成系列颜色:
lighten(#cc3,10%);//#d6d65c
darken(#cc3,10%);//#a3a3a3
grayscale(#ccs);//#808080
complement(#cc3);//#33c
2.4 插入文件
@import 命令,用来插入外部文件:
@import "path/filename.scss";
如果插入的是 .css 文件,则等同于css的import命令。
@import "foo.css";
3.高级用法
3.1 条件语句
@if可以用来判断:
p {
@if 1+1==2{border:1px solid;}
@if 5<3 {border:2px dotted;}
}
配套的还有 @else 命令:
@if lightness($color) > 30% {
background-color:#000;
}@else{
background-color:#fff;
}
3.2 循环语句
SASS 支持 for 循环:
@for $i from 1 to 10 {
.border-#{$i}{
border:#{$i}px solid blue;
}
}
SASS 也支持 while 循环:
$i:6;
@while $i>0 {
.item-#{$i} {width:2em * $i;}
$i:$i - 2;
}
each 命令,作用与 for 类似:
@each $member in a,b,c,d {
.#($member) {
background-image:url("/image/#{$member}.jpg");
}
}
3.3 自定义函数
SASS 允许用户编写自己的函数:
@function double($n){
@return $n * 2;
}
#sidebar {
width:double(5px);
}
4. 使用
可以在屏幕上显示 .scss 文件转化的 css 代码
sass test.scss
如果要将显示结果保存成文件,后面再跟一个 .css 文件名
sass test.scss test.css
SASS提供了四中编译风格:
nested:嵌套缩进的 css 代码,它是默认值
expanded:没有缩进的,扩展的 css 代码
compact:简洁格式的 css 代码
compressed:压缩后的 css 代码
生产环境中,一般使用最后一个选项:
sass --style compressed test.scss test.css
也可以让 SASS 监听某个文件或者目录,一旦源文件有变动,就自动生成编译后的版本:
//watch a file
sass --watch input.scss:output.css
//watch a directory
sass --watch app/sass:public/stylesheets
SASS的官方网站,提供一个在线转换器,可以用来练习和测试。
用别人的只是点,借花献佛,markdown 不错,用着很顺手。
sass的核心知识及使用的更多相关文章
- 网络基础知识、ASP.NET 核心知识(1)*
为什么要写网络? 我原本的计划是这样的,连续两天梳理ASP.NET开发的核心知识.说到这呢,有人问了.“不是说好了做ASP.NET笔记吗?为啥要写网络基础知识?是不是傻?” 原因是这样的.作为网站开发 ...
- Vuex核心知识(2.0)
Vuex 是一个专门为 Vue.js 应该程序开发的状态管理模式,它类似于 Redux 应用于 React 项目中,他们都是一种 Flux 架构.相比 Redux,Vuex 更简洁,学习成本更低.希望 ...
- Python 编程核心知识体系(REF)
Python 编程核心知识体系: https://woaielf.github.io/2017/06/13/python3-all/ https://woaielf.github.io/page2/
- Cookie详解、ASP.NET核心知识(7)
无状态的http协议 1.回顾http协议 Http协议是请求响应式的,有请求才有响应,是无状态的,不会记得上次和网页“发生了什么”. 关于http协议的这种特点,黑兔在前面的这三篇博文中进行了详细的 ...
- 《Maven实战》关联实际工作的核心知识
通读了<Maven实战>这本书,由于在实际的工作中,对其有一定的操作上的经验.因此,再回头去通读这本书,就能够更加精准的把握里面的核心知识了. 以下我主要从两点去介绍之—— 1> m ...
- Linux(1)- 服务器核心知识、Linux入门、VMware与centeos安装、远程连接linux、linux基本命令使用
一.服务器核心知识 1.电脑和电脑的硬件组成 现在的人们几乎无时无刻不在使用着电脑!不管是桌上型电脑(桌机).笔记型电脑(笔电).平板电脑,还是智慧型手机等等,这些东西都算是电脑.虽然接触这么多,但是 ...
- HTML中DOM核心知识有哪些(带实例超详解)
HTML中DOM核心知识有哪些(带实例超详解) 一.总结: 1.先取html元素,然后再对他进行操作,取的话可以getElementById等 2.操作的话,可以是innerHtml,value等等 ...
- Java并发编程核心知识体系精讲
第1章 开宗明义[不看错过一个亿]本章一连串设问:为什么学并发编程?学并发编程痛点?谁适合学习本课?本课程包含内容和亮点?首先4大个理由告诉你为什么要学,其实源于JD岗位要求就不得不服了.其次5个痛点 ...
- 开发技术--Python核心知识A
开发|Python核心知识A A篇,主要介绍Python基础中列表,元祖,字典,集合,字符串,I/O,条件与循环,异常处理的底层知识与使用的注意事项. 希望大家对于Python会有新的收获,本篇不同于 ...
随机推荐
- 高并发 Nginx+Lua OpenResty系列(3)——模块指令
Nginx Lua 模块指令 Nginx共11个处理阶段,而相应的处理阶段是可以做插入式处理,即可插拔式架构:另外指令可以在http.server.server if.location.locatio ...
- Unity Shader 菲涅尔环境反射
菲涅尔反射描述了一种光学现象,当光照到物体表面时,一部分发生反射,另一部分则进入物体内部,发生折射或散射:相比直接的反射和折射计算,菲涅尔反射更接近真实情况. 可用下面的等式近似计算这种反射效果: F ...
- 短视频技术详解:Android端的短视频开发技术
在 <如何快速实现移动端短视频功能?>中,我们主要介绍了当前短视频的大热趋势以及开发一个短视频应用所涉及到的功能和业务.在本篇文章中,我们主要谈一谈短视频在Android端上的具体实现技术 ...
- maven中引入oracle驱动报错Missing artifact com.oracle:ojdbc14:jar
maven中央库中查找ojdbc14 ,复制依赖,maven项目中引入ojdbc14 来回折腾,加仓库镜像,各种修改setting.xml 文件 就是不行,后来看到一位网友博客,MMP Oracle ...
- spring cloud 系列第4篇 —— feign 声明式服务调用 (F版本)
源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.feign 简介 在上一个用例中,我们使用ribbon+restTem ...
- Mysql事务隔离级别和锁机制
一.Spring支持四种事务隔离级别: 1.ISOLATION_READ_UNCOMMITTED(读未提交):这是事务最低的隔离级别,它充许令外一个事务可以看到这个事务未提交的数据. 2.ISOLAT ...
- Appium+python自动化(十三)- 与Capability完美懈垢之解读(超详解)
简介 Capability又叫Appium Desired Capabilities,前边写了那么多实例代码,小伙伴可以发现一些规律,就是有一部分代码总是重复的出现在你的视线中.这部分就是对Capab ...
- 高性能微服务网关.NETCore客户端Kong.Net开源发布
前言 项目地址:https://github.com/lianggx/Kong.Net 你的支持使我们更加强大,请单击 star 让更多的 .NETCore 认识它. 拥抱开源的脚步,我们从来都是一直 ...
- kubernetes实战篇之docker镜像的打包与加载
系列目录 前面我们讲到了使用nexus搭建docker镜像仓库,操作还是有点复杂的,可能有的童鞋仅仅是想尝试kubernetes功能,并不想在搭建仓库上花费过多时间,但是又想在不同的主机之间传递镜像. ...
- eclipse中一个项目引用另一个项目,运行报:java.lang.NoClassDefFoundError
项目右击-properties-Java Build Path -Porjects-add.选中了某个项目. 项目用tomcat启动时,报错:java.lang.NoClassDefFoundErro ...