学习 Sass 的时候总会发现这三个东西很像,由于他们都是用来统一代码来达到复用的目的的。这篇文章将用一个小例子来比照他们的不同之处。
我们要做的就是两个一大一小的两个 div
,一个宽高100px,另一个宽高 300px。
<div class="box smallBox"></div><div class="box bigBox"></div>
CSS 代码可以写成这样:
.smallBox { width: 100px; height: 100px; box-shadow: 0px 0px 5px black; margin: 10px;}.bigBox { width: 300px; height: 300px; box-shadow: 0px 0px 5px black; margin: 10px;}
很显著这代码太过于复杂,很多代码都很相似的。
Mixin 可以传入参数,直接复制属性到每个选择器里。
@mixin box($width: 100px, $height: 100px) { width: $width; height: $height; box-shadow: 0px 0px 5px black; margin: 10px;}.smallBox { @include box(100px, 100px);}.bigBox { @include box(300px, 300px);}
生成的 CSS 如下,可以看到 Mixin 只不过是将一块代码做了复制。
Placeholder 与 Mixin 差不多,但是不能传入参数。而且他不是直接复制代码块,而是将共有的属性提到前面,而后使用这两个 div
的选择器一起去调用。
%box { box-shadow: 0px 0px 5px black; margin: 10px;}.smallBox { @extend %box; width: 100px; height: 100px;}.bigBox { @extend %box; width: 300px; height: 300px;}
生成的 CSS 代码如下:
可以看到这比 Mixin 要省很多代码,由于不会将代码块每次都做复制,所以一般推荐这种写法。
Sass 的函数主要用于属性值的复用,如一起变大,一起变小。如下面的的可以一起将原来的值一都变成 2 倍大。
@function px($value) { @return $value * 2 + px}.smallBox { width: px(50); height: px(50);}.bigBox { width: px(150); height: px(150);}
函数主要用于:
迪士尼正品自带线充电宝10000毫安两万大容量超薄小巧便携迷你超级快充草莓熊女可爱官方旗舰适用于华为苹果
罗马仕旗舰店正品充电宝自带双线快充10000毫安适用于小米oppo华为iPhone苹果手机超薄小巧便携迷你移动电源
倍思明电充电宝10000毫安超大容量自带线迷你快充移动电源超薄小巧便携适用华为小米苹果专用官方旗舰店正品
机乐堂充电宝超薄小巧便携自带线快充手机10000毫安适用小米苹果专用官方旗舰店正品迷你小型飞机可携带新款
倍思10000毫安充电宝充电器二合一超薄小巧便携插头20W快充超大容量移动电源适用小米华为苹果专用官方旗舰店
品胜充电宝自带插头20000毫安超大容量10000充电器二合一电霸自带线适用华为小米65W双向快充PD便携移动电源