sass各种知识点

sass学习笔记

Css扩展

嵌套规则

与less相同父选择器套子选择器

父选择器 &

与less相同 用于选择父元素

属性嵌套

.funky {
  font: {
    family: fantasy;
    size: 30em;
    weight: bold;
  }
} //避免重复书写

占位符选择器%foo


注释/**/ ,//

/**/会被输出 //不输出

$version: "1.2.3";
/* This CSS is generated by My Snazzy Framework version #{$version}. */  同过这种方法在注释中加变量

SassScript

变量$

用法

$width: 5em;
#main {
  $width: 5em !global; //通过!global声明为去全局变量
  width: $width;
}

#sidebar {
  width: $width;
}

数据类型

SassScript的6种数据类型

  • 数字,1, 2, 13, 10px
  • 字符串,有引号字符串与无引号字符串,”foo”, ‘bar’, baz
  • 颜色,blue, #04a3f9, rgba(255,0,0,0.5)
  • 布尔型,true, false
  • 空值,null
  • 数组 (list),用空格或逗号作分隔符,1.5em 1em 0 2em, Helvetica, Arial, sans-serif
  • maps, 相当于 JavaScript 的 object,(key1: value1, key2: value2)

字符串

通过#{$val}可以将原来的字符串去引号

数组

可以通过sass的方法对数组进行操作

  • nth可以访问数组中的每一项
  • append在数组中添加新值
  • @each可以便利数组中的每一项

数组分组

(1px 2px) (5px 6px)

运算

== ,!=可以对任何数据类型进行运算

数字运算

  • +,-,*,/,%
  • <,>,<=,>=关系运算符

函数

调用

p {
  color: hsl(0, 100%, 50%);
}

变量定义!default

$content: "First content";
$content: "Second content?" !default;
$new_content: "First time reference" !default;

#main {
  content: $content;
  new-content: $new_content;
} //设置变量默认值

@-Rules与指令

@import

导入文件

以下情况不会导入文件

  • 扩展名.css
  • 扩展名http://开头
  • 文件名url()
  • 在@import上有媒体查询

    @import “foo.css”;
    @import “foo” screen;
    @import “http://foo.com/bar“;
    @import url(foo);

会导入.sass,.scss的文件

同时导入多个文件

@import "rounded-corners", "text-shadow";

分音

如果需要导入scss,但是不需要编译为css只需要在文件名前面添加下划线 ,但是导入的的时候不需要加下划线

嵌套@import

.example {
  color: red;
}
#main {
  @import "example";
}
//css编译
#main .example {
  color: red;
}`

不能再混合指令和控制指令中嵌套@import

@media

媒体查询可以被嵌套在css中,编译时放到放到最外层

.sidebar {
  width: 300px;
  @media screen and (orientation: landscape) {
    width: 500px;
  }
}
//编译为css
.sidebar {
  width: 300px; }
  @media screen and (orientation: landscape) {
    .sidebar {
      width: 500px; } }

@extend

用于继承属性

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

同样可以继承伪类样式(元素的子类也可以)

.hoverlink {
  @extend a:hover;
}
.comment a.user:hover {
  font-weight: bold;
}
//css编译为
.comment a.user:hover, .comment .user.hoverlink {
  font-weight: bold; }

多重延伸

.error {
  border: 1px #f00;
  background-color: #fdd;
}
.attention {
  font-size: 3em;
  background-color: #ff0;
}
.seriousError {
  @extend .error;
  @extend .attention;
  border-width: 3px;
}

继续延伸

.error {
  border: 1px #f00;
  background-color: #fdd;
}
.seriousError {
  @extend .error;
  border-width: 3px;
}
.criticalError {
  @extend .seriousError;
  position: fixed;
  top: 10%;
  bottom: 10%;
  left: 10%;
  right: 10%;
}
//编译成css
.error {
  border: 1px #f00;
  background-color: #fdd;
}
.seriousError {
  @extend .error;
  border-width: 3px;
}
.criticalError {
  @extend .seriousError;
  position: fixed;
  top: 10%;
  bottom: 10%;
  left: 10%;
  right: 10%;
}

选择器列

#fake-links .link {
  @extend a;
}

a {
  color: blue;
  &:hover {
    text-decoration: underline;
  }
}
//编译成css
#fake-links .link {
  @extend a;
}

a {
  color: blue;
  &:hover {
    text-decoration: underline;
  }
}

@extend-Only选择器 将#或.好被替换成%

不会被编译到css中 用法和id,class选择器相同

!optional

可以让在未声明 一个选择器的时候 编译器不自动生成

@extend不能延伸@media以外的选择器

输出提示

@debug

@warn

@error


判断语句

@if

当 @if 的表达式返回值不是 false 或者 null 时,条件成立,输出 {} 内的代码:

p {
  @if 1 + 1 == 2 { border: 1px solid; }
  @if 5 < 3 { border: 2px dotted; }
  @if null  { border: 3px double; }
}

@if… @else if

$type: monster;
p {
  @if $type == ocean {
    color: blue;
  } @else if $type == matador {
    color: red;
  } @else if $type == monster {
    color: green;
  } @else {
    color: black;
  }
}

@w

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值