变量、嵌套、混合(mixin)、继承拓展、@import、comment

变量的意义

在sass里我们可以定义多个变量来存放颜色、边框等等的样式,这样就可以在下面想要使用样式的时候使用变量了

这样的优点就是便于维护,更改方便


变量的使用

可以通过$来定义变量,在变量名字中可以使用-和_来作为连接,并且-和_是可以互通的,就是用起来一模一样。

变量的值可以是字符串、数字、颜色等等,在变量里还可以使用其他变量,使用的时候直接写变量名就好了

例如

  1. $primary-color:#ff6600;
  2. $primary-border:1px solid $primary_color;
  3. div.box{
  4. background:$primary-color;
  5. }
  6. h1.page-header{
  7. border:$primary-border;
  8. }

---》

  1. div.box {
  2. background: #ff6600;
  3. }
  4. h1.page-header {
  5. border: 1px solid #ff6600;
  6. }

嵌套的使用

合理的使用嵌套语法,可以使我们编写代码更为快捷

假设我们想写这样的css:

  1. .nav {
  2. height: 100px;
  3. }
  4. .nav ul {
  5. margin: 0;
  6. }
  7. .nav ul li {
  8. float: left;
  9. list-style: none;
  10. padding: 5px;
  11. }

在sass里我们可以这样写

  1. .nav{
  2. height:100px;
  3. ul{
  4. margin:0;
  5. li {
  6. float:left;
  7. list-style:none;
  8. padding:5px;
  9. }
  10. }
  11. }

大家会发现,写出来的代码父和子之间都有空格隔开,如果我们需要给a加上伪类的话我们这样写

  1. .nav{
  2. height:100px;
  3. a{
  4. color:#fff;
  5. :hover{
  6. color:#ff6600;
  7. }
  8. }
  9. }

在里面就会出现这样的情况

  1. .nav a :hover {
  2. color: #ff6600;
  3. }

我们发现在a和:hover之间有了空格,这样是不好的,所以我们需要在写的时候在:hover之前把a加上,这样就需要用到在之类里引用父类选择器的方式,我们可以用&符号代替父类

例如:

  1. .nav{
  2. height:100px;
  3. a{
  4. color:#fff;
  5. &:hover{
  6. color:#ff6600;
  7. }
  8. }
  9. }

这样就好了,下面来个完整的代码:

  1. .nav{
  2. height:100px;
  3. ul{
  4. margin:0;
  5. li{
  6. float:left;
  7. list-style:none;
  8. padding:5px;
  9. }
  10. a{
  11. display:block;
  12. color:#000;
  13. &:hover{
  14. color:#f60;
  15. background:red;
  16. }
  17. }
  18. }
  19. & &-text{
  20. font-size:15px;
  21. }
  22. }

-----》

  1. .nav {
  2. height: 100px;
  3. }
  4. .nav ul {
  5. margin: 0;
  6. }
  7. .nav ul li {
  8. float: left;
  9. list-style: none;
  10. padding: 5px;
  11. }
  12. .nav ul a {
  13. display: block;
  14. color: #000;
  15. }
  16. .nav ul a:hover {
  17. color: #f60;
  18. background: red;
  19. }
  20. .nav .nav-text {
  21. font-size: 15px;
  22. }

嵌套属性

我们可以把一些个复合属性的子属性来嵌套编写,加快编写速度,例如

  1. body{
  2. font:{
  3. family:Helvitica;
  4. size:15px;
  5. weight:bold;
  6. }
  7. }
  8. .nav{
  9. border:1px solid red{
  10. left:none;
  11. right:none;
  12. }
  13. }
  14. .page-next{
  15. transition:{
  16. property:all;
  17. delay:2s;
  18. }
  19. }

-----》

  1. body {
  2. font-family: Helvitica;
  3. font-size: 15px;
  4. font-weight: bold;
  5. }
  6. .nav {
  7. border: 1px solid red;
  8. border-left: none;
  9. border-right: none;
  10. }
  11. .page-next {
  12. transition-property: all;
  13. transition-delay: 2s;
  14. }

mixin 混合

你可以把它想象成一个有名字的定义好的样式

每一个mixin都有自己的名字,类似于js里的函数定义方法如下

  1. @mixin 名字(参数1,参数2...){
  2. ...
  3. }

使用方法是在其他选择器css样式里通过@include引入,其实就相当于将mixin里的代码写入到这个选择器的css里,如下:

  1. @mixin alert {
  2. color:#f60;
  3. background-color:#f60;
  4. a{
  5. color:pink;
  6. }
  7. &-a{
  8. color:red;
  9. }
  10. }
  11. .alert-warning{
  12. @include alert;
  13. }

-----》

  1. .alert-warning {
  2. color: #f60;
  3. background-color: #f60;
  4. }
  5. .alert-warning a {
  6. color: pink;
  7. }
  8. .alert-warning-a {
  9. color: red;
  10. }

刚才是没有参数的mixin,mixin也可以拥有参数,需要注意的是:

  • 形参的名字前要加$
  • 传参的时候只写值的话要按顺序传
  • 传参的时候不想按顺序的话需要加上形参名字

例如:

  1. @mixin alert($color,$background) {
  2. color:$color;
  3. background-color:$background;
  4. a{
  5. color:darken($color,10%);//把颜色加深百分之十
  6. }
  7. }
  8. .alert-warning{
  9. @include alert(red,blue);
  10. }
  11. .alert-info{
  12. @include alert($background:red,$color:blue);
  13. }

------》

  1. .alert-warning {
  2. color: red;
  3. background-color: blue;
  4. }
  5. .alert-warning a {
  6. color: #cc0000;
  7. }
  8. .alert-info {
  9. color: blue;
  10. background-color: red;
  11. }
  12. .alert-info a {
  13. color: #0000cc;
  14. }

继承拓展 extend

如果我们有一个选择器想要拥有另一个选择所有的东西,不管是样式还是子元素等等,可以使用@extend来继承

大家需要注意的是,++b继承a的时候,a的子元素设置了样式,也会给b的子元素设置样式++,达到完全一样的情况,例如:

  1. .alert {
  2. padding:5px;
  3. }
  4. .alert a {
  5. font:{
  6. weight:bold;
  7. size:15px;
  8. }
  9. }
  10. .alert-info {
  11. @extend .alert;
  12. backgournd:skyblue;
  13. }

----》

  1. .alert, .alert-info {
  2. padding: 5px;
  3. }
  4. .alert a, .alert-info a {
  5. font-weight: bold;
  6. font-size: 15px;
  7. }
  8. .alert-info {
  9. backgournd: skyblue;
  10. }

partials

在以前咱们编写css的时候,一个css引入另一个css需要使用@import,其实这是不好的,会多发一次http请求,影响咱们站点的响应速度。

在sass里,咱们可以把小的sass文件分出去,叫做partials,在某个sass里通过@import ‘partials名’去引入,注意路径哟,这样的话就可以把partials里的代码引到咱们大的sass里一起编译

  • 需要注意的是 partials的文件名前要加_
_base.sass :
  1. body{
  2. margin:0;
  3. padding:0;
  4. }
style.sass :
  1. @import "base";
  2. .alert {
  3. padding:5px;
  4. }
  5. .alert a {
  6. font:{
  7. weight:bold;
  8. size:15px;
  9. }
  10. }
  11. .alert-info {
  12. @extend .alert;
  13. backgournd:skyblue;
  14. }

----------->

  1. body {
  2. margin: 0;
  3. padding: 0;
  4. }
  5. .alert, .alert-info {
  6. padding: 5px;
  7. }
  8. .alert a, .alert-info a {
  9. font-weight: bold;
  10. font-size: 15px;
  11. }
  12. .alert-info {
  13. backgournd: skyblue;
  14. }

这样的话我们就可以把模块化的思想引入到sass里了


comment注释

sass里的注释有三种

  • 多行注释
  • 单行注释
  • 强制注释

多行注释:压缩后不会出现在css里 /* */

单行注释: 不会出现在css里 //

强制注释:压缩后也会出现在css里 /*! */

2.sass变量、嵌套、混合(mixin)、继承拓展、@import、comment的更多相关文章

  1. sass(混合mixin的调用、@content)

    sass中使用@mixin声明混合,可以传递参数,参数名以$符号开始,多个参数以逗号分开,也可以给参数设置默认值.声明的@mixin通过@include来调用 1.无参数mixin scss.styl ...

  2. SASS - 混合(Mixin)

    SASS – 简介 SASS – 环境搭建 SASS – 使用Sass程序 SASS – 语法 SASS – 变量 SASS- 局部文件(Partial) SASS – 混合(Mixin) SASS ...

  3. Sass变量、嵌套

    声明变量定义变量的语法Sass 的变量包括三个部分: 声明变量的符号“$” 变量名称 赋予变量的值简单的示例,假设你的按钮颜色可以给其声明几个变量: $brand-primary : darken(# ...

  4. sass 变量的声明 嵌套

    sass 的默认变量一般是用来设置默认值,然后根据需求来覆盖的,覆盖的方式也很简单,只需要在默认变量之前重新声明下变量即可. $baseLineHeight: 2; $baseLineHeight: ...

  5. 如何设置 sass 全局变量,js如何使用 sass 变量

    关键词:sass全局变量 js引用sass变量 1 如何在样式中使用 scss 的声明的全局变量 假设我们有一个全局的 scss 变量文件/styles/_vars.sass,如下: $red: re ...

  6. sass的嵌套

    sass的嵌套包括两种: 1.选择器的嵌套.(最常用到) 指的是在一个选择器中嵌套另一个选择器来实现继承,从而增强了sass文件的结构性和可读性. 在选择器嵌套中,可以使用&表示父元素选择器 ...

  7. shell中eval命令妙用——变量嵌套替换

    eval命令妙用--变量嵌套替换 eval命令在Linux下的应用非常广泛,在写脚本的时候遇到一个变量嵌套的问题,用eval迎刃而解,略试不爽啊. var1="hello" i=1 ...

  8. 5. React 组件的协同使用 组件嵌套和Mixin

            组件是React的核心,构建大型项目时多个组件之间需要进行协同使用.可以从横向和纵向两个角度来实现组件的协同使用,纵向的协同使用就是组件嵌套,横向的协同使用就是Mixin(抽取公共方法 ...

  9. 关于CMD中延迟环境变量嵌套的实现方法

    在我昨天做的一个bat中(自动按日期重命名文件名)涉及到这方面的问题 以前涉及到这里时就想别的办法替代过去,今天好好扒出来说说: 实现变量嵌套的2种方法: 1,使用call实现变量嵌套 变量嵌套:即在 ...

随机推荐

  1. c语言的枚举(遍历枚举)与数据类型总结

    一.枚举的概念 枚举是C语言中的一种基本数据类型,并不是构造类型,它可以用于声明一组常数.当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型. 比如,你可以用一个枚举类型的变量来表示季节, ...

  2. c专家编程摘录

    C专家编程摘录 c操作符的优先级 有时一些c操作符有时并不会像你想象的那样工作. 下方表格将说明这个问题: 优先级问题 表达式 期望的情况 实际情况 . 优先级高于* *p.f (*p).f *(p. ...

  3. Echarts后台封装option对象

    该方法返回的keyword指向了前台负责图表显示的jsp页面 public String keyword() { if(this.dateNum == null || this.dateNum.equ ...

  4. 第三方登录,一般都是遵循OAuth2.0协议。

    1. QQ登录OAuth2.0协议开发流程 1.1 开发流程 申请接入,获取appid和appkey; 开发应用,设置协作者账号,上线之前只有协作者才能进行第三方登录 放置QQ登录按钮(这个自己可以用 ...

  5. JSON数据解析及gson.jar包

    从服务器端接收数据的时候,那些数据必须以浏览器能够理解的格式来发送. 服务器端的编程语言只能以如下 3 种格式返回数据: HTML XML JSON JSON一种简单的数据格式,比xml更轻巧. JS ...

  6. 使用CEF的JSON解析功能

    Cef提供了JSON解析功能,在cef_parser.h文件内有三个JSON相关的方法: CefParseJSON CefParseJSONAndReturnError CefWriteJSON 以最 ...

  7. java集合框架07——Map架构与源代码分析

    前几节我们对Collection以及Collection中的List部分进行了分析,Collection中还有个Set,因为Set是基于Map实现的,所以这里我们先分析Map,后面章节再继续学习Set ...

  8. MySQL Study之--MySQL schema_information数据库

    MySQL Study之--MySQL schema_information数据库       information_schema数据库是在mysql的版本号5.0之后产生的,一个虚拟数据库,物理上 ...

  9. Oracle之PLSQL

    PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用.PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)它是Ora ...

  10. Python 项目实践一(外星人入侵)第一篇

    python断断续续的学了一段实践,基础课程终于看完了,现在跟着做三个小项目,第一个是外星人入侵的小游戏: 一 Pygame pygame 是一组功能强大而有趣的模块,可用于管理图形,动画乃至声音,让 ...