其他分享
首页 > 其他分享> > 记录Sass的一些用法

记录Sass的一些用法

作者:互联网

Sass变量的定义(永远不要使用@extend!)

$fontSize:12px;
 
body{
 
font-size:$fontSize;
 
}

特殊变量:如果变量嵌套在字符串中,则需要写在 #{} 符号里面,如:

$top:top;
div{
  margin-#{$top}:10px
}

变量的调用

.btn-primary{
background-color:$btn-primary-bg;
color:$btn-primary-color;
border:1px solid $btn-primary-border;
}

 

not(:last-child) //选中除了最后一个元素并为其加上样式

.layout:not(:last-child){
    margin:0 0 0 10px;
}

mixin的使用(永远不要使用@extend)

@mixin foo {
    color: red;
    font-weight: bold;
    line-height: 2;
}

.#{unique-id()}-#{$i} {
    @include foo;
    content: "ibf#{&}jaslbw";
}

sass中的&用法(这里表示父元素)

/*伪类嵌套*/
.clearfix{
 &:before,
 &:after{
   content:"";
   display: table;
 }
 &:after {
   clear:both;
   overflow: hidden;
 }
}

媒体查询中的嵌套(这里&代表main)

.main {
    float: left;
    width: 45em;
 
    @media (max-width: 480px) { 
    & { float: none; width: 100%; }
   }
}

&的另一个妙用

.dashboard {
  &-container {
    margin: 30px;
  }
  &-text {
    font-size: 30px;
    line-height: 46px;
  }
}
编译后

.dashboard-container {
margin: 30px;
}
.dashboard-text {
font-size: 300px;
line-height: 46px;
}

@content

在sass3.2.0中引入, 可以用来解决css3中 @meidia 或者 @keyframes 带来的问题。它可以使@mixin接受一整块样式,接收的样式从@content开始

//sass 样式             
@mixin max-screen($res){
  @media only screen and ( max-width: $res )
  {
    @content;
  }
}
  
@include max-screen(480px) {
  body { color: red }
}
  
//css 编译后样式
@media only screen and (max-width: 480px) {
  body { color: red }
}


使用@content解决@keyframes关键帧的浏览器前缀问题
// 初始化变量
$browser: null;
// 设置关键帧
@mixin keyframes($name) {
    @-webkit-keyframes #{$name} {
        $browser: '-webkit-'; @content;
    }
    @-moz-keyframes #{$name} {
        $browser: '-moz-'; @content;
    }
    @-o-keyframes #{$name} {
        $browser: '-o-'; @content;
    }
    @keyframes #{$name} {
        $browser: ''; @content;
    }
}
  
// 引入
@include keyframes(scale) {
    100% {
        #{$browser}transform: scale(0.8);
    }
}
  
// css编译后
@-webkit-keyframes scale {
    -webkit-transform: scale(0.8);
}
@-moz-keyframes scale  {
   -moz-transform: scale(0.8);
}
@-o-keyframes scale  {
    -o-transform: scale(0.8);
}
@keyframes scale  {
    transform: scale(0.8);
}

高级用法

1)函数 function
 sass允许用户编写自己的函数,以@function开始

$fontSize: 10px;
@function pxTorem($px) {
    @return $px / $fontSize * 1rem;
}
div {
    font-size: pxTorem(16px);
}
// css编译后样式
div {
    font-size: 1.6rem;
}
  
 2)if条件语句&&三目判断
语法为 if($condition, $if_true, $if_false)。 三个参数分别表示: 条件,条件为真的值,条件为假的值
if(true, 1px, 2px) => 1px
if(false, 1px, 2px) => 2px

@if语句可以用来判断

// sass样式
$type: monster;
div {
    @if $type == ocean {
        color: blue;
    } @else if $type == matador {
        color: red;
    } @else if $type == monster {
        color: green;
    } @else {
        color: black;
    }
}
// css编译后样式
div {
    color: green;
}
3)循环语句
for循环有两种形式,分别为:@for $var from <start> through <end> 和 @for $var from <start> to <end>。 $var 表示变量,start表示开始值,end表示结束值,两种形式的区别在于 through 包括 end 的值,to 不包括 end 值。

// sass样式
@for $i from 1 to 4 {
    .item-#{$i} {width: 2em * $i;}
}
// css编译后样式
.item-1 {
    width: 2em;
}
.item-2 {
    width: 4em;
}
.item-3 {
    width: 6em;
}
  

 

while循环 


// sass样式
$i: 2;
@while $i > 0 {
    .item-#{$i} {width: 2em * $i;}
    $i: $i - 1;
}
// css编译后样式
.item-2 {
  width: 4em;
}
.item-1 {
  width: 2em;
}
  

 

@each循环:语法为@each $var in <list or map>。 其中$var表示变量,而list和map表示数据类型,sass3.3.0新加入多字段循环和map数据循环

单字段list数据循环

//sass 样式
$animal-list: puma, sea-slug, egret;
@each $animal in $animal-list {
  .#{$animal}-icon {
    background-image: url('/images/#{$animal}.png');
  }
}
//css 编译后样式
.puma-icon {
  background-image: url('/images/puma.png');
}
.sea-slug-icon {
  background-image: url('/images/sea-slug.png');
}
.egret-icon {
  background-image: url('/images/egret.png');
}
  



多字段list数据循环


//sass 样式
$animal-data: (puma, black, default),(sea-slug, blue, pointer);
@each $animal, $color, $cursor in $animal-data {
  .#{$animal}-icon {
    background-image: url('/images/#{$animal}.png');
    border: 2px solid $color;
    cursor: $cursor;
  }
}
//css 编译后样式
.puma-icon {
  background-image: url('/images/puma.png');
  border: 2px solid black;
  cursor: default;
}
.sea-slug-icon {
  background-image: url('/images/sea-slug.png');
  border: 2px solid blue;
  cursor: pointer;
}
  

 

多字段map数据循环


//sass 样式
$headings: (h1: 2em, h2: 1.5em, h3: 1.2em);
@each $header, $size in $headings {
  #{$header} {
    font-size: $size;
  }
}
//css 编译后样式
h1 {
  font-size: 2em;
}
h2 {
  font-size: 1.5em;
}
h3 {
  font-size: 1.2em;
}

 

标签:Sass,记录,color,keyframes,用法,样式,font,width,size
来源: https://www.cnblogs.com/MrSlow/p/15777802.html