15 essential Sass mixins
Source:
15 个必备的Sass mixins
现在有很多成套的sass mixin库, 比如我个人很喜欢的 Bourbon和非常流行的 Compass. 但是有时候, 实际上是多数情况下, 可能从中选一些结合自己的mixin才是最适合自己的.
过于依赖一个工具总是不好的, 而且如果你想让sass的mixin通过@include来调用的话, 那么你就更应该试着写写自己的mixin了~
sass的mixin的应用范围是非常广泛的, 而以下这15个mixin则是每个开发者都应该有的:
box-sizing
sass就像所有的预处理器一样, 能够很好的处理浏览器前缀的. 下面这个mixin是用于处理box-sizing这个前缀的:
1 | @mixin box-sizing($type) |
用法很简单:
1 | div{ |
Opacity 除了浏览器前缀之外, 还让人无比反感但又经常使用的就是透明度的问题了, 尤其是老版本的IE. 下面这个mixin则可以帮助你解决这个问题:
1 | @mixin opacity($opacity) { |
用法也很简单:
1 | div { |
column-width
这又是一个mixin处理浏览器前缀的极好例子:
1 | @mixin column-width ( $value: 150px ) { |
用法很简单:
1 | div{ |
circle
一旦你为 border-radius做了mixin后, 你就可以在其他的mixin中使用它了, 下例就是典型:
1 | @mixin circle |
用法很简单:
1 | div { |
font-size
Mixin对于边试边调是极好的, 下例的font-size的mixin就可以通过简单的修改rem来调整字体大小了, 而rem也仅会在支持它的浏览器中起作用.
1 | @mixin font-size($size) { |
用法很简单:
1 | div { |
box-shadow
同样还是处理浏览器前缀问题的:
1 | @mixin box-shadow( $h: 10px , $v: 10px , $b: 0px , $s: 0px , $c: #000000 ) { |
用法很简单:
1 | div { |
xPos
你还可以使用mixin来简化代码, 下面例子就是让你把元素沿横轴定位时使用:
1 | @mixin xPos($x){ |
用法很简单:
1 | div { |
vertical-align
纵向居中一个元素是很费劲的一件事, 不过下面这个mixin则可以给你很大的帮助:
1 | @mixin vertical-align { |
用法很简单:
1 | div { |
flexbox
mixin在处理类似flexbox的问题时非常有效: .
1 | @mixin flexbox{ |
用法很简单:
1 | div { |
flex
一旦通过mixin设定 display 属性为 flex, 那么你就也需要一个mixin来设定 flex 属性了:
1 | @mixin flex($values) { |
用法很简单:
1 | div { |
flex-order
再加一个设定order的:
1 | @mixin flex-order($order){ |
用法很简单:
1 | div { |
flex-direction
mixin也是支持sass中的 @if, @else if, 以及 @else 等语句的, 可以用来把2个不同的mixin合并到一起:
1 | @mixin flex-direction($direction){ |
用法很简单:
1 | div { |
gradient
代码尽量要简单, 不过在必要的时候, mixin比较臃肿也是情有可原的.下面这个例子是为不同浏览器设定渐变效果的mixin, 只需要3个参数就能实现很好的渐变效果:
1 | @mixin gradient($start-color, $end-color, $orientation){ |
用法很简单:
1 | div { |
ghost-button
如果你想要紧随潮流的话, 你可以利用下面这个mixin来创建一个 ghost button, 上面的例子是我们几周前做的. 通过 &:hover 属性可以让我们指定其hover的状态:
1 | @mixin ghost-button($font, $font-size, $font-color, $border-size, $border-color, $padding, $transition-speed, $hover-color){ |
用法很简单:
1 | div { |
break-point
通过使用 @content 语句, 我们甚至可以把内容也加入include中去, 在此基础上建立断点. 当然你不应该仅仅根据设备尺寸来设定断点, 不过下面的例子中还是简单的分为了PC和手机端:
1 | @mixin break-point($point) |
用法很简单:
1 | div { |