混入mixins

sass语法

定义 :@mixins 名称(参数1: 默认值, 参数2: 默认值 ......) {

// 样式

}

引用 :@include 名称(参数1, ...);

示例

css 复制代码
// 定义mixin,$color参数设置默认值为red
@mixins scrollbar($color: red, $width) {
    ::-webkit-scrollbar {
        width: $width;
    }
    ::-webkit-scrollbar-thumb {
        background-color: $color;
    }
}

// 引用mixin,并传参
.container {
    @include scrollbar(blue, 12px);
}

其他支持的特性

  • 定义mixin支持参数变量(类似js的可变参数,三个点...)(@mixins 名称(参数名...)
  • 引用mixin支持关键词参数,这样可以打乱参数的顺序(@include 名称(参数名1: 参数值1...))
css 复制代码
// 参数变量
@mixins shadows($shadow...) {
    box-shadow: $shadows;
}
// 参数变量的mixin引用
.container {
    @include shadows(0px 3px 6px #333, 2px 5px 8px #666);
}

// 关键词参数引用mixin,可以打乱参数顺序
.container {
    @include scrollbar($width: 12px, $color: blue);
}

less语法

定义

1,正常已定义的类或id选择器

2,选择器后面接小括号。也可以传参,支持默认值(参数1: 默认值, 参数2: 默认值 ......)

引用 :.类名(参数1...);

示例

css 复制代码
// 普通选择器,可以当做mixin被引用
.scrollbar {
    ::-webkit-scrollbar {
        width: 12px;
    }
    ::-webkit-scrollbar-thumb {
        background-color: red;
    }
}

// 带参数和默认值的mixin选择器
.scrollbar2(@color: red, @width) {
    ::-webkit-scrollbar {
        width: @width;
    }
    ::-webkit-scrollbar-thumb {
        background-color: @color;
    }
}


.container {
    width: 100px;
    .scrollbar(); // 引用普通mixins
    .scrollbar2(blue, 12px);  // 引用带参数的mixins,传参
}

其他支持的特性

  • 引用mixins时设置!important(相当于将mixin选择器中的所有属性都设置成!important)
  • 定义mixins时设置mixins守卫(@mixins when( 表达式 ))(mixins守卫与media查询类似,按需加载,并不是if、else按条件执行)
  • mixin定义时赋值给一个变量,将变量作为别名;整个mixin调用可以使用别名称为变量调用(通过@alias属性名、属性值通过点来调用)
css 复制代码
// 普通选择器,可以当做mixin被引用
.scrollbar {
    ::-webkit-scrollbar {
        width: 12px;
    }
}

// 引用mixins使用important
.container {
    .scrollbar() !important;
}


// mixins守卫
@width: 10;
.scrollbar when(@width < 10) {
    // ...
}
.scrollbar when(@width > 10) {
    // ...
}

// 赋值变量做别名
@scroll: .scrollbar();
// 引用别名的mixin
.container {
    @scroll;
}

// mixin变量调用
#main() {
    .scrollbar() {
        ::-webkit-scrollbar {
            width: 12px;
        }
    }
}
.container {
    @alias: #main.scrollbar();
}
相关推荐
最新资讯动态19 分钟前
HDC 2026 | 对话鲸鸿动能:存量时代,品牌如何夺回营销“主动权”?
前端
最新资讯动态20 分钟前
游戏出海,从产品走向体系
前端
最新资讯动态21 分钟前
20人团队跑出百万DAU、大厂也来抢量:谁在鸿蒙生态跑出加速度
前端
最新资讯动态34 分钟前
千万开发者背后,鸿蒙商业化的B面
前端
爱勇宝2 小时前
AI 时代:智商决定起点,情商决定走多远
前端·ai编程
kyriewen3 小时前
用了半年 Claude Code 后,我尝试关掉它写了一周代码——结果比想象中严重
前端·javascript·ai编程
IT_陈寒3 小时前
Vite的静态资源打包让我熬夜到三点,这坑千万别跳
前端·人工智能·后端
徐小夕4 小时前
万字拆解 JitWord:企业级实时协同文档底层架构 + 大模型 AI 融合完整实践
前端·vue.js·github
一份执念4 小时前
uni-app 小程序分包限制处理与主包体积优化实战
前端·微信小程序
MariaH5 小时前
初识MySQL
前端