Coder Social home page Coder Social logo

scss's Introduction

语法嵌套规则

语法嵌套规则

css中重写选择器是非常恼人的。尤其是html结构嵌套非常深的时候,scss的选择器嵌套可以避免重复输入父选择器,可以有效的提高工作效率,减少样式覆盖可能造成的异常问题。这也是我们最常用的功能。

.container {
    width: 1200px;
    margin: 0 auto;
    .header {
        .img {
            width: 100px;
            height: 60px;
        }
    }
}

编译为

.container {
    width: 1200px;
    margin: 0 auto;
}
.container .header .img {
    width: 100px;
    height: 60px;
}

属性嵌套

有些 css属性遵循相同的命名空间(相同的开头),比如font-family,font-size,font-weight都是以font作为属性的命名空间。为了方便管理这样的属性,也为了避免重复输入。

.container {
  font: {
    family: fantasy;
    size: 30em;
    weight: bold;
  }
}

编译为

.container {
  font-family: fantasy;
  font-size: 30em;
  font-weight: bold;
}

父选择器 &

在嵌套 css 规则时,有时候需要使用嵌套外层的父选择器,例如,当给某个元素设定 hover 样式的时候,可以使用 & 代表嵌套规则外层的父选择器, scss 在编译是会把 & 替换为父选择器名

.container {
  a {
    color: #333;
    &:hover {
      color: #f00;
    }
  }
}

编译后

.container {
    color: #333;
}
.container a:hover {
    color: #f00;
}

换个思路,也可以使用 & 进行选择器名称拼接

.main {
  color: red;
  &--active {
    border: 1px solid red;
  }
}

编译后

.main {
    color: red;
}
.main--active {
    border: 1px solid red;
}

scss的两种注释

多行注释 /*.....*/

多行注释会编译到 .css 文件中,compressed(压缩)模式下除外,将!作为多行注释的第一个字符表示压缩输出模式下也保留这个信息。

/*
* 我是
* 多行
* 注释
 */
body {
  color: red;
}

编译为

/*!
* 我是
* 多行
* 注释 
*/body{color:red}

单行注释

单行注释不会编译到 .css 文件

// 我是单行注释
body {
  color: black;
}

//编译成 css

body {
    color: black;
}

变量

使用

原生 css 中的变量,使用--变量名:变量值定义,var(--变量名)进行使用。

:root {
    --color: #F00;
}

scss中的变量,以美元符号 $ 开头,赋值方法与 css 属性的写法一样

$color: #F00;
p {
  color: $color;
}

编译为

p {
    color: #F00;
}

5条变量规则

下文的 mixinfunction 命名也遵循1234条规范:

  1. 变量以美元符号 $ 开头,后面跟变量名;
  2. 变量名是不以数字开头的可包含字母、数字、下划线、横线(连接符);
  3. 通过连接符 - 与下划线 _ 定义的同名变量为同一变量;
  4. 变量一定要先定义,后使用;
  5. 写法同 css, 即变量和值之间用冒号 : 分隔;

2中变量作用域

  1. 变量作用域分为 全局作用域局部作用域
    • 全局变量: 声明在最外层的变量,可在任何地方使用;
    • 局部变量: 嵌套规则内定义的变量只能在嵌套规则内使用。
  2. 将局部变量转换为全局变量可以添加 !global 声明。

scss's People

Contributors

jisoo998125 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.