scss @import(Scss–@mixin–使用/实例)
原文网址:Scss--@mixin--使用/实例_IT利刃出鞘的博客-CSDN博客
简介
本文介绍Scss混合指令@mixin的用法 。
混合指令(Mixin)用于定义可重复使用的样式 ,避免了使用无语意的 class ,比如 .float-left 。混合指令可以包含所有的 CSS 规则 ,绝大部分 Sass 规则 ,甚至通过参数功能引入变量 ,输出多样化的样式 。
定义混合指令:@mixin
混合指令的用法是在 @mixin 后添加名称与样式 ,比如名为 large-text 的混合通过下面的代码定义:
@mixin large-text { font: { family: Arial; size: 20px; weight: bold; } color: #ff0000; }混合也需要包含选择器和属性 ,甚至可以用 & 引用父选择器:
@mixin clearfix { display: inline-block; &:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } * html & { height: 1px } }引用混合样式:@include
说明
使用 @include 指令引用混合样式 ,格式是在其后添加混合名称 ,以及需要的参数(可选) 。
简单示例
SCSS:
.page-title { @include large-text; padding: 4px; margin-top: 10px; }编译后的CSS:
.page-title { font-family: Arial; font-size: 20px; font-weight: bold; color: #ff0000; padding: 4px; margin-top: 10px; }可以在最外层引用混合样式
也可以在最外层引用混合样式 ,不会直接定义属性 ,也不可以使用父选择器 。
SCSS
@mixin silly-links { a { color: blue; background-color: red; } } @include silly-links;编译后的CSS:
a { color: blue; background-color: red; }混合样式中可以包含其他混合样式
比如
@mixin compound { @include highlighted-background; @include header-text; } @mixin highlighted-background { background-color: #fc0; } @mixin header-text { font-size: 20px; }混合样式中应该只定义后代选择器 ,这样可以安全的导入到文件的任何位置 。
参数
概述
说明
参数用于给混合指令中的样式设定变量,并且赋值使用 。在定义混合指令的时候 ,按照变量的格式 ,通过逗号分隔,将参数写进圆括号里 。引用指令时 ,按照参数的顺序 ,再将所赋的值对应写进括号 。
示例
SCSS:
@mixin sexy-border($color, $width) { border: { color: $color; width: $width; style: dashed; } } p { @include sexy-border(blue, 1in); }编译后的CSS:
p { border-color: blue; border-width: 1in; border-style: dashed; }给参数设置默认值
混合指令也可以使用给变量赋值的方法给参数设定默认值 ,然后 ,当这个指令被引用的时候 ,如果没有给参数赋值 ,则自动使用默认值 。
SCSS:
@mixin sexy-border($color, $width: 1in) { border: { color: $color; width: $width; style: dashed; } } p { @include sexy-border(blue); } h1 { @include sexy-border(blue, 2in); }编译后的CSS:
p { border-color: blue; border-width: 1in; border-style: dashed; } h1 { border-color: blue; border-width: 2in; border-style: dashed; }关键词参数
混合指令也可以使用关键词参数 ,上面的例子也可以写成:
p { @include sexy-border($color:blue); } h1 { @include sexy-border($color:blue,$width:2in); }虽然不够简明 ,但是阅读起来会更方便 。关键词参数给函数提供了更灵活的接口 ,以及容易调用的参数 。关键词参数可以打乱顺序使用 ,如果使用默认值也可以省缺 ,另外 ,参数名被视为变量名,下划线 、短横线可以互换使用。
参数变量
说明
有时 ,不能确定混合指令需要使用多少个参数 ,比如一个关于 box-shadow 的混合指令不能确定有多少个 shadow 会被用到 。这时,可以使用参数变量 … 声明(写在参数的最后方)告诉 Sass 将这些参数视为值列表处理 。
简单示例
SCSS
@mixin box-shadow($shadows...) { -moz-box-shadow: $shadows; -webkit-box-shadow: $shadows; box-shadow: $shadows; } .shadows { @include box-shadow(0px 4px 5px #666, 2px 6px 10px #999); }编译后的CSS
.shadowed { -moz-box-shadow: 0px 4px 5px #666, 2px 6px 10px #999; -webkit-box-shadow: 0px 4px 5px #666, 2px 6px 10px #999; box-shadow: 0px 4px 5px #666, 2px 6px 10px #999; }参数变量也可以用在引用混合指令(@include)
与平时用法一样 ,将一串值列表中的值逐条作为参数引用。
SCSS
@mixin colors($text, $background, $border) { color: $text; background-color: $background; border-color: $border; } $values: #ff0000, #00ff00, #0000ff; .primary { @include colors($values...); }编译后的CSS:
.primary { color: #ff0000; background-color: #00ff00; border-color: #0000ff; }向混合样式中导入内容
说明
在引用混合样式的时候 ,可以先将一段代码导入到混合指令中 ,然后再输出混合样式 ,额外导入的部分将出现在 @content 标志的地方 。
简单示例
SCSS
@mixin apply-to-ie6-only { * html { @content; } } @include apply-to-ie6-only { #logo { background-image: url(/logo.gif); } }编译后的CSS:
* html #logo { background-image: url(/logo.gif); }为便于书写 ,@mixin 可以用 = 表示 ,而 @include 可以用 + 表示 ,所以上面的例子可以写成:
=apply-to-ie6-only * html @content +apply-to-ie6-only #logo background-image: url(/logo.gif)注意: 当 @content 在指令中出现过多次或者出现在循环中时 ,额外的代码将被导入到每一个地方 。
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!