美文网首页
Sass 混合宏、继承、占位符

Sass 混合宏、继承、占位符

作者: 肆意木 | 来源:发表于2018-09-07 16:07 被阅读6次

1. 混合宏

@mixin mt($var){
  margin-top: $var;  
}

.block {
  @include mt(5px);

  span {
    display:block;
    @include mt(5px);
  }
}

.header {
  color: orange;
  @include mt(5px);

  span{
    display:block;
    @include mt(5px);
  }
}

总结:编译出来的 CSS 清晰告诉了大家,他不会自动合并相同的样式代码,如果在样式文件中调用同一个混合宏,会产生多个对应的样式代码,造成代码的冗余,这也是 CSSer 无法忍受的一件事情。不过他并不是一无事处,他可以传参数。

个人建议:如果你的代码块中涉及到变量,建议使用混合宏来创建相同的代码块。

2. 继承

.mt{
  margin-top: 5px;  
}

.block {
  @extend .mt;

  span {
    display:block;
    @extend .mt;
  }
}

.header {
  color: orange;
  @extend .mt;

  span{
    display:block;
    @extend .mt;
  }
}

总结:使用继承后,编译出来的 CSS 会将使用继承的代码块合并到一起,通过组合选择器的方式向大家展现,比如 .mt, .block, .block span, .header, .header span。这样编译出来的代码相对于混合宏来说要干净的多,也是 CSSer 期望看到。但是他不能传变量参数。

个人建议:如果你的代码块不需要专任何变量参数,而且有一个基类已在文件中存在,那么建议使用 Sass 的继承。

3. 占位符

%mt{
  margin-top: 5px;  
}

.block {
  @extend %mt;

  span {
    display:block;
    @extend %mt;
  }
}

.header {
  color: orange;
  @extend %mt;

  span{
    display:block;
    @extend %mt;
  }
}

总结:编译出来的 CSS 代码和使用继承基本上是相同,只是不会在代码中生成占位符 mt 的选择器。那么占位符和继承的主要区别的,“占位符是独立定义,不调用的时候是不会在 CSS 中产生任何代码;继承是首先有一个基类存在,不管调用与不调用,基类的样式都将会出现在编译出来的 CSS 代码中。”


image.png

补充:本文非原创,只是记录下来方便自己查阅。

相关文章

  • Scss中的混合宏、继承和占位符

    Sass中的混合宏、继承和占位符 一、混合宏 1.不带参数的混合宏 @mixin border-radius {-...

  • Sass 混合宏、继承、占位符

    1. 混合宏 总结:编译出来的 CSS 清晰告诉了大家,他不会自动合并相同的样式代码,如果在样式文件中调用同一个混...

  • 混合宏 VS 继承 VS 占位符

    a) Sass 中的混合宏使用 总结:编译出来的 CSS 清晰告诉了大家,他不会自动合并相同的样式代码,如果在样式...

  • 详解scss的继承、占位符和混合宏

    1、继承和占位符 两者都是通过@extend来引用。 1.1 继承 一个已经存在的css样式类,可以被其他样式类继...

  • 在 Sass 中使用 Keyframe

    一:定义混合宏 SASS中使用 Keyframe 首先定义一个混合宏,由 Keyframes 、 animatio...

  • 莹莹

    占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符...

  • 莹莹

    占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符...

  • 及时止损哪有那么容易

    占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符 晚上清理微博时,发现了我以前发的微博 心情如同标题 ...

  • golang fmt

    占位符 普通占位符 布尔占位符 整数占位符 指针 其它标记

  • sass学习6——混合器

    sass混合器用来实现大段样式的重用,用@mixin标识符定义。 通过@include来使用混合器。@includ...

网友评论

      本文标题:Sass 混合宏、继承、占位符

      本文链接:https://www.haomeiwen.com/subject/iklcgftx.html