首页IT科技scss @import(Scss–@mixin–使用/实例)

scss @import(Scss–@mixin–使用/实例)

时间2025-04-28 06:05:01分类IT科技浏览3689
导读:原文网址:Scss--@mixin--使用/实例_IT利刃出鞘的博客-CSDN博客...

原文网址: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版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
window11我的电脑在哪里(Windows11我的电脑怎么显示?win11我的电脑怎么调出来) 您的病毒和间谍软件定义丢失或已损坏(WIN10中defender提示“病毒和间谍软件定义更新失败”?)