scss 的基本使用

使用变量

SASS通过$符号去声明一个变量,来存储需要复用的信息

$variable-color: #333;
.main {
  color: $variable-color;
}

编译后产生的CSS代码

.main {
  color: #333; 
  }
嵌套

以嵌套的方式使用CSS,但是过度的使用嵌套会让产生的CSS难以维护

.main {
  ul {
    margin: 0;
    padding: 0;
  }
  li { display: inline-block; }
  a {
    display: block;
    padding: 6px;
  }
}

编译后产生的CSS代码

.main ul {
  margin: 0;
  padding: 0;
 }
.main li {
  display: inline-block;
}
.main a {
  display: block;
  padding: 6px;
 }
引入

SASS能够将代码分割为多个片段,SASS会通过这些下划线来辨别哪些文件是SASS片段,并且不让片段内容直接生成为CSS文件,从而只是在使用@import指令的位置被导入,CSS原生的@import会通过额外的HTTP请求获取引入的样式片段,而SASS的@import则会直接将这些引入的片段合并至当前CSS文件,并且不会产生新的HTTP请求。

// _reset.scss
html, body, ul, ol, div {
  margin:  0;
  padding: 0;
}
// base.scss
@import 'reset';
body {
  background-color: #000;
}

编译后产生的CSS代码

html, body, ul, ol, div {
  margin: 0;
  padding: 0; }

body {
  background-color: #000; }
混合(mixin)

用来分组那些需要在页面中复用的CSS声明(添加浏览器兼容性前缀的时候非常有用),可以通过向Mixin传递变量参数来让代码更加灵活。

@mixin border-radius(radius) {
          border-radius: radius;
      -ms-border-radius: radius;
     -moz-border-radius: radius;
  -webkit-border-radius: radius;
}

.main {
  @include border-radius(10px);
}

编译后产生的CSS代码

.main {
  border-radius: 10px;
  -ms-border-radius: 10px;
  -moz-border-radius: 10px;
  -webkit-border-radius: 10px; }
继承

通过@extend指令在选择器之间复用CSS属性,并且不会产生冗余的代

.layout {
  display: flex;
  flex-wrap: wrap;
}
.main{
  @extend .layout;
}

.nav{
  @extend .layout;
  border-color: green;
}

编译后产生的CSS代码

.main, .nav {
  display: flex;
  flex-wrap: wrap;
 }

.nav{
  border-color: green; 
}
CSS扩展

如果在父级选择器不存在的场景使用&,Scss预处理器会报出错误信息。

// 第一种
a {
  font-weight: 700;
  text-decoration: none;
  &:hover { text-decoration: underline; }
  body.layout & { font-size: 14px; }
}
// 第二种
#main {
  color: black;
  a {
    font-weight: 700;
    &:hover { color: #000; }
  }
}
// 第三种
#main {
  color: black;
  &-sidebar { border: 1px solid; }
}

编译后产生的CSS代码

// 第一种
a {
  font-weight: 700;
  text-decoration: none;
}
a:hover {
  text-decoration: underline;
}
body.layout a {
  font-size: 14px;
}

// 第二种
#main {
  color: black;
}
#main a {
  font-weight: 700;
}
#main a:hover {
  color: #000;
}
// 第三种
#main {
  color: black;
}
#main-sidebar {
  border: 1px solid;
}
嵌套属性

CSS许多属性都位于相同的命名空间(例如font-family、font-size、font-weight都位于font命名空间下)

.main{
  // 命令空间后带有冒号:
  font: {
    family: fantasy;
    size: 16px;
    weight: 700;
  }
}

编译后产生的CSS代码

.main{
  font-family: fantasy;
  font-size: 16px;
  font-weight: 700; }

SASS与Stylus的不同之处在于,SASS不允许@extend嵌套选择器:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值