手把手带你了解sass
sass的使用
减少重复的工作
1.变量的声明:
是以$开头给变量命名;
$height-color: #F30
2.变量的使用范围:
变量可以在多个地方存在,不一定限制在代码块中。但是如果定义在了代码块中,则只能在代码块中使用。
先在外面或者上面给属性命名,在使用的地方应用这些变量。
3.变量的命名:
命名:以下划线或者横杠都看自己的意愿,中划线更普遍。(大部分下划线和横杠是互通的,但是类名和ID名不一定。
4.sass的嵌套使用:
sass的嵌套:支持多层嵌套,避免重复书写相同的类名或者ID名。
注意:
父选择器标识符:&
1.连接伪元素:
&会直接被父级元素替换
article a {
color: blue;
:hover { color: red }
}
=>artical a {color:blue}
artical a :hover{color:red}
artical a{
color:blue;
&:hover{color:red}
}
如果使用伪元素需要用&来连接,不然就直接识别成后代元素,会和父元素有一个空格导致样式与预期不符。
2.群组选择器的嵌套
将重复的元素提出来:
.container{
h1,h2,h3{margin-bottom:10px}
}
=>
.container h1, .catainer h2, .container h3{margin-bottom:10px}
3.组合选择器>,+,~
1.>:选中元素的直接子元素(只有一个元素)
2.+:选中同层相邻元素(所有+后面相同的元素)
3.~:选中所有在~前相同层级的~后的元素
5.嵌套属性
nav{
border:{
style:solid;
width:1px;
color:#ccc
}
}
=>
nav{
border-style:solid;
border-width:1px;
border-color:#ccc;
}
6.导入sass文件
1.@import
css中也有该规则,但是只有执行到@import时才会去下载导入的css文件;加载过慢
sass无需发起额外的下载请求;@import时就解析成了css;
color.scss => @import "color"
注意:可以省略后缀名
2.使用部分sass文件
如果以下划线开头命名则不会单独编译输出css
3.默认变量
!default
4.注意
如果以css结尾
导入的是一个URL地址
导入的是url()
=>生成的文件是直接被浏览器解析了的,可能会造成额外下载
6.注释
静默注释://
不会暴露在浏览器中
普通注释:/* */
7.混合器
1.使用场景:
1.有大段样式代码需要重复使用=>将重复代码抽离出来成一个逻辑单元
2.能用通用的名字将这个混合器的功能描述出来;(语义化)
`rounded-corners
2.标识符:
@mixin @include
3.使用方法:
//相当于将这个样式封装起来了
@mixin rounded-centers{
-moz-border-radius:5px;
-webkit-border-radius:5px;
border-radius:5px;
}
//使用这个样式
notice{
background-color:green;
border:2px solid #ccc;
@include round-center
}
4.规则
1.如果混合器通过@include包含在父规则中时,会生成嵌套规则
2.可以使用&
5.给混合器传参
类似于function
@mixin link-colors($normal, $hover, $visited){
color:$normar;
&:hover{color:$hover}
&:visited{color:$visited}
}
a{
@include(red,blue,green)
}
a{
@include link-colors($normal:red,$hover:blue,$visited:green)
}
6.默认参数值
声明:$name:default-value
8.选择器继承
1.定义:选择器可以继承为另一个选择器的所有样式
2.语法:@extend
.error{
border:1px solid red;
background-color:#fdd;
}
.seriousError{
@extend .error;
border-width:3px;
}
后写的属性样式可以覆盖先写的;
3.继承何时选择
当一个元素拥有的类是属于另一个类时
继承比起混合器生成的代码更少,有利提高站点速度
当不同的规则被应用到同一个元素上时,先看选择器的权重,如果权重相同则后面的覆盖前面的
避免多后代时应用继承选择器.foo .bar{@extend .error}
手把手带你了解sass的更多相关文章
- [.Net] 手把手带你将自己打造的类库丢到 NuGet 上
手把手带你将自己打造的类库丢到 NuGet 上 序 我们习惯了对项目右键点击“引用”,选择“管理NuGet 程序包”来下载第三方的类库,可曾想过有一天将自己的打造的类库放到 NuGet 上,让第三者下 ...
- 手把手带你做一个超炫酷loading成功动画view Android自定义view
写在前面: 本篇可能是手把手自定义view系列最后一篇了,实际上我也是一周前才开始真正接触自定义view,通过这一周的练习,基本上已经熟练自定义view,能够应对一般的view需要,那么就以本篇来结尾 ...
- Android性能优化:手把手带你全面实现内存优化
前言 在 Android开发中,性能优化策略十分重要 本文主要讲解性能优化中的内存优化,希望你们会喜欢 目录 1. 定义 优化处理 应用程序的内存使用.空间占用 2. 作用 避免因不正确使用内 ...
- Android:手把手带你深入剖析 Retrofit 2.0 源码
前言 在Andrroid开发中,网络请求十分常用 而在Android网络请求库中,Retrofit是当下最热的一个网络请求库 今天,我将手把手带你深入剖析Retrofit v2.0的源码,希望你们会喜 ...
- [转帖]从零开始入门 K8s | 手把手带你理解 etcd
从零开始入门 K8s | 手把手带你理解 etcd https://zhuanlan.zhihu.com/p/96721097 导读:etcd 是用于共享配置和服务发现的分布式.一致性的 KV 存储系 ...
- 手把手带你阅读Mybatis源码(三)缓存篇
前言 大家好,这一篇文章是MyBatis系列的最后一篇文章,前面两篇文章:手把手带你阅读Mybatis源码(一)构造篇 和 手把手带你阅读Mybatis源码(二)执行篇,主要说明了MyBatis是如何 ...
- GitHub 热点速览 Vol.26:手把手带你做数据库
作者:HelloGitHub-小鱼干 摘要:手把手带你学知识,应该是学习新知识最友好的姿势了.toyDB 虽然作为一个"玩具"项目不能应用在实际开发中,但通过它你可以了解到如何制作 ...
- 手把手带你体验鸿蒙 harmonyOS
wNlRGd.png 前言 本文已经收录到我的 Github 个人博客,欢迎大佬们光临寒舍: 我的 GIthub 博客 学习导图 image.png 一.为什么要尝鲜 harmonyos? wNlfx ...
- Java开发不懂Docker,学尽Java也枉然,阿里P8架构师手把手带你玩转Docker实战
转: Java开发不懂Docker,学尽Java也枉然,阿里P8架构师手把手带你玩转Docker实战 Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一 ...
随机推荐
- 使用jQuery创建可删除添加行的动态表格,超级简单实用的方法
使用jQuery动态的添加和删除表格里面的行,不多说了直接上代码. <!DOCTYPE html> <html> <head> <meta charset=& ...
- uswgi
1.安装uwsgi注意: 1)在系统环境安装,非虚拟环境 2)使用对应python版本安装 3)要先安装python开发包 ###sudo apt-get install python3.6-dev ...
- Maven项目解决Remove '@override' annotation终极方案
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- LeetCode 60. 第k个排列(Permutation Sequence)
题目描述 给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列. 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" "1 ...
- CentOS 7下载
CentOS 7官方下载地址:https://www.centos.org/download/ 转载https://blog.csdn.net/yxwmzouzou/article/details/7 ...
- leetcode 198. House Robber 、 213. House Robber II 、337. House Robber III 、256. Paint House(lintcode 515) 、265. Paint House II(lintcode 516) 、276. Paint Fence(lintcode 514)
House Robber:不能相邻,求能获得的最大值 House Robber II:不能相邻且第一个和最后一个不能同时取,求能获得的最大值 House Robber III:二叉树下的不能相邻,求能 ...
- MySQL备份工具之mysqlhotcopy
mysqlhotcopy使用lock tables.flush tables和cp或scp来快速备份数据库.它是备份数据库或单个表最快的途径,完全属于物理备份,但只能用于备份MyISAM存储引擎和运行 ...
- 问题:anaconda: command not found
打开Terminal 1.使用命令:sudo apt install vim 安装vim文本编辑器2.使用命令:vim ~/.bashrc 修改环境变量 3.在文本最后添加命令:export PATH ...
- zabbix使用脚本监控
参照:http://www.cnblogs.com/zhongkai-27/p/9984597.html
- 浏览器从输入URL到渲染出页面发生了什么
总体来说分为以下几个过程: 1. DNS解析 2. TCP连接 3. 发送HTTP请求 4. 服务器处理请求并返回HTTP报文 5. 浏览器解析渲染页面 6. 连接结束 参考资料:[https:// ...