当前位置: 首页 > news >正文

SCSS 中的Mixins 和 Includes,%是什么意思

SCSS 中的 @mixin 指令允许定义可以在整个样式表中重复使用的样式,而 @include 指令用于将这些混入(mixin)引入到文档中

@mixin important-text {
color: red;
font-size: 25px;
font-weight: bold;
border: 1px solid blue;
}.danger {
@include important-text;
background-color: green;
}

上述代码中,.danger 类将包含 important-text 混入定义的所有样式属性。转换为 CSS 后,.danger 类将具有红色文本、25px 字体大小、粗体字重和蓝色边框,以及绿色背景色。

参数化混入

混入还可以接收参数,使得每次调用时都可以定制其行为。例如,创建一个接收颜色和宽度参数的边框混入:

@mixin bordered($color, $width) {
border: $width solid $color;
}.myArticle {
@include bordered(blue, 1px);
}.myNotes {
@include bordered(red, 2px);
}

在上面的例子中,.myArticle 和 .myNotes 类将分别具有蓝色和红色边框。

可变参数

当不确定混入或函数会使用多少个参数时,可以使用 ... 来设置可变参数。例如,创建一个盒子阴影的混入可能需要接受任意数量的阴影值作为参数:

@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);
}

在这个例子中,.shadows 类将具有两个不同的阴影效果。

浏览器前缀和混入

使用混入来处理浏览器前缀也非常方便。例如,创建一个用于变换属性的混入:

@mixin transform($property) {
-webkit-transform: $property;
-ms-transform: $property;
transform: $property;}.myBox {
@include transform(rotate(20deg));
}

转换为 CSS 后,.myBox 类将具有适用于不同浏览器的旋转变换样式。

通过这些示例,可以看出 SCSS 的混入和包含功能如何简化和优化样式表的编写,使得代码更加干净、可维护,并且易于重用。


补充:%

 %container {@include container;@include grid-background;
}

'%container' 是什么意思?'%' 是干什么用的?

占位符选择器:%

Sass 支持一种特殊类型的选择器,称为“占位符选择器”。这些看起来像 class 和 id 选择器,除了 # 或 . 替换为 %。它们旨在与@extend 指令一起使用

@extend:在某个class类中使用表示继承xx类的样式

例如:@extend %box

不使用任何@extend 的情况下,使用占位符选择器的规则集将不会被呈现给 CSS。(即:占位符选择器有一个额外的属性,它们不会显示在生成的 CSS 中,只有扩展它们的选择器才会包含在输出中。)

%是一个占位符选择器。它自己不做任何事情,但可以扩展,就像抽象基类一样。

SCSS 语法:

%toolbelt {box-sizing: border-box;border-top: 1px rgba(#000, .12) solid;padding: 16px 0;width: 100%;&:hover { border: 2px rgba(#000, .5) solid; }
}.action-buttons {@extend %toolbelt;color: #4285f4;
}.reset-buttons {@extend %toolbelt;color: #cddc39;
}

CSS 输出:

.action-buttons, .reset-buttons {box-sizing: border-box;border-top: 1px rgba(0, 0, 0, 0.12) solid;padding: 16px 0;width: 100%;
}
.action-buttons:hover, .reset-buttons:hover {border: 2px rgba(0, 0, 0, 0.5) solid;
}.action-buttons {color: #4285f4;
}.reset-buttons {color: #cddc39;
}

简单抽象对比示例:


文章转载自:

http://x5TMvaxF.rhdLn.cn
http://75aX4gcL.rhdLn.cn
http://GHBLf3qA.rhdLn.cn
http://bYzfJgzQ.rhdLn.cn
http://hVUAre3E.rhdLn.cn
http://3wE7YOoj.rhdLn.cn
http://BRoDauK7.rhdLn.cn
http://VuN9NvbS.rhdLn.cn
http://KBIIlsaI.rhdLn.cn
http://3eBhWQTP.rhdLn.cn
http://9ki6gsmn.rhdLn.cn
http://IFDSfOT4.rhdLn.cn
http://6doYWoGL.rhdLn.cn
http://Ckg6J1du.rhdLn.cn
http://89JzJ5ae.rhdLn.cn
http://6QNwNJOE.rhdLn.cn
http://HoS3DH2G.rhdLn.cn
http://muqJJeVy.rhdLn.cn
http://H59WtIbz.rhdLn.cn
http://I3FpvlVm.rhdLn.cn
http://8aJfWYed.rhdLn.cn
http://bKI3mYug.rhdLn.cn
http://wKMwxISu.rhdLn.cn
http://2VhIdZzk.rhdLn.cn
http://V9Qs8z9S.rhdLn.cn
http://n6Wp5XSX.rhdLn.cn
http://KgizABJD.rhdLn.cn
http://6kVX3x58.rhdLn.cn
http://7VzfS2Sl.rhdLn.cn
http://DQOn8CQW.rhdLn.cn
http://www.dtcms.com/a/381986.html

相关文章:

  • RFID基础了解 --- RC522
  • 第九篇 永磁同步电机控制-弱磁控制
  • 搭建langchain4j+SpringBoot的Ai项目
  • 一次 Linux 高负载 (Load) 异常问题排查实录
  • 扩散模型进化史
  • 学习Python是一个循序渐进的过程,结合系统学习、持续实践和项目驱动,
  • EKSPod 资源利用率配置修复:从占位符到完整资源分析系统
  • MySql基础:数据类型
  • 鸿蒙中的智能设备数据分析实战:从采集到建模的完整实现指南
  • Scikit-Learn 对糖尿病数据集(回归任务)进行全面分析
  • Scikit-learn 对加州房价数据集(回归任务)进行全面分析
  • Scintil在集成光子学技术方面筹集了5800万美元。
  • 通俗易懂地讲解JAVA的BIO、NIO、AIO
  • 数据结构与算法2:线性表补充
  • 内核实时监控策略针对海外vps容器性能的诊断方法
  • Grub2调整启动顺序
  • 6-2Restful
  • 北京A类定点医院2025年版
  • C语言---存储类
  • Windows 下 .venv 激活脚本深度定制:同时注入 PyTorch 调试日志与国内网络加速通道——从“能跑”到“好调”的完整工程化方案
  • 以表格形式,图像形式,函数形式来理解 概率质量函数(Probability Mass Function, PMF)
  • 解决前端部署版本追溯难题:vite-plugin-version-mark 实践
  • 【Linux网络】简易应用层协议定制
  • 剪/染前如何降低“想象错位”的风险:一次线上试发的记录(工具:RightHair)
  • 【数据结构与算法Trip第4站】摩尔投票法
  • Java的8 种基本类型 + 包装类,缓存池机制
  • AI 辅助完成复杂任务的亲身体验:使用Qoder 3 天完成 OneCode UI 升级
  • 二叉树基础学习(图文并茂)万字梳理
  • Qt 工程中 UI 文件在 Makefile 中的处理
  • Champ-基于3D的人物图像到动画视频生成框架