相关文章推荐
虚心的海龟  ·  findFirst抛出java.lang.N ...·  1 年前    · 
神勇威武的消炎药  ·  python ...·  1 年前    · 

Sass 支持所有的 CSS3 @-Rules,以及 Sass 特有的 “指令”(directives)

1.@import

@import 的功能,允许其导入 SCSS 或 Sass 文件。被导入的文件将合并编译到同一个 CSS 文件中,另外,被导入的文件中所包含的变量或者混合指令 (mixin) 都可以在导入的文件中使用。

通常, @import 寻找 Sass 文件并将其导入,但在以下情况下, @import 仅作为普通的 CSS 语句,不会导入任何 Sass 文件。

  • 文件拓展名是 .css
  • 文件名以 http:// 开头;
  • 文件名是 url()
  • @import 包含 media queries。

如果不在上述情况内,文件的拓展名是 .scss .sass ,则导入成功。没有指定拓展名,Sass 将会试着寻找文件名相同,拓展名为 .scss .sass 的文件并将其导入。

@import "foo.scss";
@import "foo";

都会导入文件 foo.scss

2. @media

.sidebar {
  width: 300px;
  @media screen and (orientation: landscape) {
    width: 500px;
.sidebar {
  width: 300px; 
@media screen and (orientation: landscape) {
  .sidebar {
    width: 500px; 

@media 的 queries 允许互相嵌套使用,编译时,Sass 自动添加 and

@media screen {
  .sidebar {
    @media (orientation: landscape) {
      width: 500px;
@media screen and (orientation: landscape) {
  .sidebar {
    width: 500px; 

@media 甚至可以比如变量,函数,以及运算符,代替条件的名称或者值:

$media: screen;
$feature: -webkit-min-device-pixel-ratio;
$value: 1.5;
@media #{$media} and ($feature: $value) {
  .sidebar {
    width: 500px;
@media screen and (-webkit-min-device-pixel-ratio: 1.5) {
  .sidebar {
    width: 500px; 

 3. @extend 继承

 Sass 将一个选择器下的所有样式继承给另一个选择器

这个非常好用,通常会有两个类选择器的样式基本相同,第二个只是比第一个选择器多点样式,原来的方案要么写两遍,要么在一个html标签上写两个选择器。

使用 @extend 可以避免上述情况

.error {
  border: 1px #f00;
  background-color: #fdd;
.seriousError {
  @extend .error;
  border-width: 3px;
.error, .seriousError { border: 1px #f00; background-color: #fdd; }
.seriousError { border-width: 3px; }

Class 选择器并不是唯一可以被延伸 (extend) 的,Sass 允许延伸任何定义给单个元素的选择器,比如 .special.coola:hover 或者 a.user[href^="http://"]

同 class 元素一样,a:hover 的样式将继承给 .hoverlink

.hoverlink {
  @extend a:hover;
a:hover {
  text-decoration: underline;
a:hover, .hoverlink {
  text-decoration: underline; 

4.定义混合指令 @mixin

混合指令(Mixin)用于定义可重复使用的样式,避免了使用无语意的 class,比如 .float-left。混合指令可以包含所有的 CSS 规则,绝大部分 Sass 规则,甚至通过参数功能引入变量,输出多样化的样式。

混合指令的用法是在 @mixin 后添加名称与样式,比如名为 large-text 的混合通过下面的代码定义:

@mixin large-text {
  font: {
    family: Arial;
    size: 20px;
    weight: bold;
  color: #ff0000;

混合也需要包含选择器和属性,甚至可以用 & 引用父选择器:

@mixin clearfix {
  display: inline-block;
  &:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
  * html & { height: 1px }

5. 引用混合样式 @include

使用 @include 指令引用混合样式,格式是在其后添加混合名称,以及需要的参数(可选):

.page-title {
  @include large-text;
  padding: 4px;
  margin-top: 10px;
.page-title {
  font-family: Arial;
  font-size: 20px;
  font-weight: bold;
  color: #ff0000;
  padding: 4px;
  margin-top: 10px; 

也可以在最外层引用混合样式,不会直接定义属性,也不可以使用父选择器。

@mixin silly-links {
    color: blue;
    background-color: red;
@include silly-links;
  color: blue;
  background-color: red; 

混合样式中也可以包含其他混合样式,比如

@mixin compound {
  @include highlighted-background;
  @include header-text;
@mixin highlighted-background { background-color: #fc0; }
@mixin header-text { font-size: 20px; }

混合样式中应该只定义后代选择器,这样可以安全的导入到文件的任何位置

参数用于给混合指令中的样式设定变量,并且赋值使用。在定义混合指令的时候,按照变量的格式,通过逗号分隔,将参数写进圆括号里。引用指令时,按照参数的顺序,再将所赋的值对应写进括号:

@mixin sexy-border($color, $width) {
  border: {
    color: $color;
    width: $width;
    style: dashed;
p { @include sexy-border(blue, 1in); }
  border-color: blue;
  border-width: 1in;
  border-style: dashed; 

混合指令也可以使用给变量赋值的方法给参数设定默认值,然后,当这个指令被引用的时候,如果没有给参数赋值,则自动使用默认值:

@mixin sexy-border($color, $width: 1px) {
  border: {
    color: $color;
    width: $width;
    style: dashed;
p { @include sexy-border(blue); }
h1 { @include sexy-border(blue, 2px); }
  border-color: blue;
  border-width: 1px;
  border-style: dashed; 
  border-color: blue;
  border-width: 2px;
  border-style: dashed; 

混合指令也可以使用关键词参数,上面的例子也可以写成:

p { @include sexy-border($color: blue); }
h1 { @include sexy-border($color: blue, $width: 2in); }

虽然不够简明,但是阅读起来会更方便。关键词参数给函数提供了更灵活的接口,以及容易调用的参数。关键词参数可以打乱顺序使用,如果使用默认值也可以省缺,另外,参数名被视为变量名,下划线、短横线可以互换使用。

有时,不能确定混合指令需要使用多少个参数,比如一个关于 box-shadow 的混合指令不能确定有多少个 'shadow' 会被用到。这时,可以使用参数变量  声明(写在参数的最后方)告诉 Sass 将这些参数视为值列表处理:

@mixin box-shadow($shadows...) {
  -moz-box-shadow: $shadows;
  -webkit-box-shadow: $shadows;
  box-shadow: $shadows;
.shadows {
  @include box-shadow(0px 4px 5px #666, 2px 6px 10px #999);
.shadowed {
  -moz-box-shadow: 0px 4px 5px #666, 2px 6px 10px #999;
  -webkit-box-shadow: 0px 4px 5px #666, 2px 6px 10px #999;
  box-shadow: 0px 4px 5px #666, 2px 6px 10px #999;

参数变量也可以用在引用混合指令的时候 (@include),与平时用法一样,将一串值列表中的值逐条作为参数引用:

@mixin colors($text, $background, $border) {
  color: $text;
  background-color: $background;
  border-color: $border;
$values: #ff0000, #00ff00, #0000ff;
.primary {
  @include colors($values...);
.primary {
  color: #ff0000;
  background-color: #00ff00;
  border-color: #0000ff;

基本也就这些常用,如果发现错误解决不了,我的建议就是以前你怎么写的css你就怎么写肯定没错。当然有空去探个真相才是王道。 

Sass 支持所有的 CSS3 @-Rules,以及 Sass 特有的 “指令”(directives)1.@import@import的功能,允许其导入 SCSS 或 Sass 文件。被导入的文件将合并编译到同一个 CSS 文件中,另外,被导入的文件中所包含的变量或者混合指令 (mixin) 都可以在导入的文件中使用。通常,@import寻找 Sass 文件并将其导入,但在以下情况下,@import仅作为普通的 CSS 语句,不会导入任何 Sass 文件。文件拓展名是.css; ...
Jerry 之前的文章.scss 文件里的特殊符号 - % 百分号和 $美元符号,介绍了 scss 文件里两个特殊符号,百分号 % 和美元符号 $ 的用法。 本文介绍另一个特殊符号 @ 的用法。 使用预处理器的优点之一是它们能够处理复杂、冗长的代码并对其进行简化。 这就是 mixins 派上用场的地方! @mixin border-radius($radius) { -webkit-border-radius: $radius; -moz-border-radius: $radius;   定义和使用:   使用 @media 查询,你可以针对不同的媒体类型定义不同的样式。   @media 可以针对不同的屏幕尺寸设置不同的样式,特别是如果你需要设置设计响应式的页面,@media 是非常有用的。   当你重置浏览器大小的过程,页面也会根据浏览器的宽度和高度重新渲染页面。   实例:如果文档宽度小于 300 像素则修改背...
yarn add @atolye15/stylelint-config --dev # Or with npm: npm install @atolye15/stylelint-config --save-dev 将您的stylelint配置设置为: " extends " : " @atolye15/stylelint-config " 只需在配置添加"rules"键,然后在其添加替代项即可。 例如,要将indentation更改为制表符并关闭number-leading-zero规则: " extends " : " @atolye15/stylelint-config " ,
Sass MediaScreen 用于检查设备组(移动设备,平板电脑,笔记本电脑,台式机)或设备名称(iPhone 5,iPhone X,iPhone 11 Pro Max,iPad Pro 12.9等)的Mixins。 可扩展,使用非常简单。 有用的网址 请勿在浏览器DevTools检查适应性,因为在设备的横向方向上出的侧面。 最好在真实设备或模拟器(例如xCode Simulator)进行检查。 使用优化媒体查询。 没有它,就会生成很多相同的@media ...代码,尤其是为了方便起见,在每个选择器分别使用mixin @include device()时。 Gulp包装器 。 $ yarn add sass-mediascreen $ npm install sass-mediascreen $ curl -O https://r
Sass是成熟、稳定、强大的CSS预处理器,而SCSS是Sass3版本当引入的新语法特性,完全兼容CSS3的同时继承了Sass强大的动态功能。 CSS书写代码规模较大的Web应用时,容易造成选择器、层叠的复杂度过高,因此推荐通过SASS预处理器进行CSS的开发,SASS提供的变量、嵌套、混合、继承等特性,让CSS的书写更加有趣与程式化。 变量用来存储需要在CSS...