mixin文件
_mixin.scss
文件中除了定义了一些@mixin
,还定义了一些%
和@function
,总的来说就是定义了一些平常可应用到的实际功能。
三者的调用方式分别为:
-
@mixin
通过@include
来调用; -
%
通过@extend
来调用; -
@function
则是返回一个值。
@mixin
和%
的区别在于,调用%
解析后的css是联合申明的。详细解说请参考:sass揭秘之@mixin,%,@function。
某些代码既定义了@mixin
,也定义了%
,开发者可以根据自己的需求或喜好调用。@mixin
如果定义了多个参数,我们可以针对有默认值的参数进行hash方式的传参,具体参考下面的代码。
center-block
@include center-block;
@include center-block(false);
@extend %center-block;
clearfix
@include clearfix;
@include clearfix(false);
@extend %clearfix;
hidden-clip
@include hidden-clip;
@include hidden-clip(false);
@extend %hidden-clip;
ellipsis
ellipsis-lines定义了多行省略,只支持老版本的flex-box
@include ellipsis;
@include ellipsis(false);
@extend %ellipsis;
@include ellipsis-lines(2); // line num
word-break
@include word-break;
@include word-break(false);
@extend %word-break;
disabled
可传入三个变量$textColor
, $bgColor
, $borderColor
分别表示文本色,背景色,边框色
@include disabled;
@include disabled($borderColor: #ccc); // 设置边框颜色
@extend %disabled;
ir
图片替换文字
@include ir;
@include ir(false);
@extend %ir;
fixed
变量$pos
可设置length值,也可以是bottom或all关键词
@include fixed(44px); // top值为44px
@include fixed(all); // top和bottom都为0
@extend %fixed-bottom;
@extend %fixed-top;
justify
左右对齐
@include justify ;
@include justify(false);
@extend %justify;
retina one px
// ios9 0.5px
@include retina-one-px {
.demo {border-width: 0.5px;}
}
// 使用linear-gradient实现
// 安卓4.3- 不支持background-size的百分比
// 参数$direction(可取值top/right/bottom/left/v/h/all,v表示top&bottom,h表示left&right,all表示四边,默认为top), $color(边框颜色,默认为全局变量$colorBorder)
@include retina-one-px-bg(v);
// 使用border及transform实现
// 通过before 和 after 生成,请注意层级问题
// 参数$direction(可取值top/right/bottom/left/all,默认为top), $color(边框颜色,默认为全局变量$colorBorder)
@include retina-one-px-border(bottom);
// 使用上面第三种方案实现
@extend %border-tb;
@extend %border-all;
equal
等分实现,分为table方法和flex方法
参数$child
,默认为li
,可传入参数$child
,默认为'li'
,注意这个参数要加引号,因为用于子元素选择器
@include equal-table;
@include equal-flex('.item'); // 子元素的class为`.item`
line equal gap
用于单行等分,间距固定,item等分剩余宽度。可传入三个变量$gap
, $child
, $lr
分别表示间距大小,子元素选择器,容器左右边缘是否留间隙
@include line-equal-gap;
@include line-equal-gap($child: '.item', $ir: false);
line equal item
用于单行等分,item固定宽度,间距等分剩余宽度。可传入一个变量$ir
表示容器左右边缘是否留间隙
@include line-equal-item;
@include line-equal-item(false);
center
实现水平或垂直居中,分为translate方法和flex方法
参数$direction
,默认为both
水平垂直都居中,可传入x/y
两种值,表示水平或垂直方向
@include center-translate(x);
@include center-flex;
arrow
triangle arrow
参数$direction
, $borderWidth
, $borderColor
,分别表示方向、大小、颜色
@include triangle;
@include triangle($borderWidth: 8px);
v arrow
参数$direction
, $borderWidth
, $size
,,分别表示方向,箭头粗细, 大小
箭头颜色采用currentColor
@include v-arrow;
@include v-arrow($direction: left);
parent state
父元素状态
.parent{
.child{
@include parent-state(":hover"){
color: #f00;
}
}
}
// css
.parent:hover .child {
color: #f00;
}
object wrap
用于img或video等占位高度,可传入两个参数$percent
, $child
分别为object的高宽比,object元素
$child
参数请使用单引号,因为用于子元素选择器
@include object-wrap($child: '.item-img');
@include object-wrap(75%);
animation fade
定义了fade in/out 的@keyframes
@include animation-fade
@include animation-fade($from: false, $to: .5);
@include animation-fade($from: 1, $to: 0);
animation translate
定义了translate
的@keyframes
@include animation-translate
@include animation-translate($from: x -100%);
@include animation-translate($from: xy -50% -50%, $to: y -100%);
@include animation-translate($from: y 100px, $to: y 0px);
gap item
用于item整行的间隔列表
@extend %gap-item;
item-v-right
右侧箭头跳转指向
@extend %item-v-right
bar-line
具体使用场景见line-list.html
@extend %bar-line;
css3
@extend %display-flex;
@extend %transition-all;
@extend %translate3d;
btn
基础样式
默认设置了1px的border,颜色为transparent(这样可以透过看到背景色,跟没有设置border一样),这样对视觉上的有无border都可以兼容
@extend %btn-basic;
按钮大小
参数$padding
, $height
, $radius
,分别表示左右的padding,按钮高度,圆角
@include btn-size;
@include btn-size($radius: 5px);
@include btn-size($height: 60px);
按钮颜色
参数$textColor
, $bgColor
, $borderColor
,分别表示文本色,背景色,边框色(默认没有边框色)。
三个颜色都可以只传入一个值或者传入两个值,如传入两个值,则第二个值表示滑过颜色
@include btn-color;
@include btn-color(#fff, #188eee);
@include btn-color(#333, #666 #eee); // #eee表示滑过的背景色
tint
为颜色添加白色,以百分比形式
参数$color
, $percent
.demo {
color: tint(#333, 30%);
}
shade
为颜色添加黑色,以百分比形式
参数$color
, $percent
.demo {
color: shade(#eee, 30%);
}