Bulma control() mixin 怎么给自定义控件添加与 button、input 一致的样式与尺寸【免费下载链接】bulmaModern CSS framework based on Flexbox项目地址: https://gitcode.com/GitHub_Trending/bu/bulma当你用 Bulma 构建项目时官方控件.button、.input、.select、.file-cta、.file-name以及分页的.pagination-previous、.pagination-next、.pagination-link、.pagination-ellipsis之所以看起来尺寸一致是因为它们共享同一组基础样式。Bulma 把这组样式抽成了control()mixin你可以直接在自己的自定义控件上使用它让自定义控件获得与button、input一致的边框、高度、内边距和字号。这个过程通过 Sass 完成前提是你的项目已经按 Customize with Sass 或 Customize with Modular Sass 的方式接入了 Bulma。准备按文档要求接入 Sass 构建按 Customize with Sass 的说明先安装sass和bulma两个 npm 包npm install sass npm install bulma然后在package.json里加两个脚本一个用于构建、一个用于监听变更{ dependencies: { bulma: ^1.0.0, sass: ^1.72.0 }, scripts: { build-bulma: sass --load-pathnode_modules my-bulma-project.scss my-bulma-project.css, start: npm run build-bulma -- --watch } }其中--load-pathnode_modules这一项很关键use bulma/sass/...这类写法就是靠它才能从node_modules里解析到 Bulma 的源码。如果你的项目用的是 Modular Sass 方式use bulma/sass/utilities with (...)按需引入同样需要这个 load-path。主路径在你的控件类上 include control()control()mixin 定义在 sass/utilities/controls.scss 中输出内容包括appearance: none、border-width: control-border-width、border-radius: control-radius、display: inline-flex、height: control-height、font-size: control-size等规则以及 focus/active 状态下去掉 outline、disabled 状态下cursor: not-allowed的行为。这些值都是 CSS 变量control-height、control-size等在同文件中注册所以自定义控件和内置控件会随主题一起变化。在你的项目 Sass 文件例如my-bulma-project.scss中按 Form Control Mixins 文档给出的写法引入并应用use bulma/sass/utilities/controls; .bulma-control-mixin { include controls.control; background: deeppink; color: white; }HTML 侧把类名加到你自定义的控件元素上即可文档示例用的是一个buttonbutton classbulma-control-mixin My control /button运行npm run build-bulma构建出 CSS 后浏览器里这个元素的尺寸、边框、内边距和过渡行为应当与.button、.input处于同一水平——这正是control()的设计目的ensures consistency by providing a set of styles that are shared between all these form controls。需要多尺寸时control-small / control-medium / control-large文档说明控件默认字号是$size-normal另外提供 3 个尺寸 mixincontrol-small字号$size-small、control-medium字号$size-medium、control-large字号$size-large。用法是在修饰符类里分别 include.bulma-control-mixin { .is-small { include controls.control-small; } .is-medium { include controls.control-medium; } .is-large { include controls.control-large; } }对应文档示例的 HTMLbutton classbulma-control-mixin is-smallSmall/button button classbulma-control-mixinNormal/button button classbulma-control-mixin is-mediumMedium/button button classbulma-control-mixin is-largeLarge/button四个按钮呈现 Normal / Small / Medium / Large 四个字号即验证尺寸 mixin 已生效。可选路径用 %control 占位符代替 mixin如果不想让 CSS 规则每次 include 都重复输出Bulma 把control()同时做成了一个 Sass placeholder%control定义见 sass/utilities/extends.scss%control { include controls.control; }Extends 文档 解释了二者区别mixin 每用一次就重复一套 CSS 规则而extend让选择器继承占位符的样式避免重复。按 Form Control Mixins 中 Control placeholder 一节的写法use bulma/sass/utilities/extends; .bulma-control-extend { extend %control; background: mediumblue; color: white; }button classbulma-control-extend My control /buttonuse的入口从bulma/sass/utilities/controls换成bulma/sass/utilities/extends其余不变。限制与核对方式control()只提供控件基底盒模型、边框、高度、字号、状态行为颜色、背景等视觉属性需要你自己补充正如文档示例中额外写的background: deeppink; color: white;。尺寸只切换字号small/medium/large高度control-height是2.5emsass/utilities/controls.scss随字号自动缩放文档没有为各尺寸单独定义高度。构建后检查my-bulma-project.css以及可选的.css.map中是否生成了.bulma-control-mixin规则再对照页面里自定义控件与.button/.input的高度、边框和字号是否一致即可确认接入成功。若想在其他模块复用 Bulma 的 mixin可参考 Sass Mixins 文档 了解 Bulma 全部可用的 mixin 及其参数。【免费下载链接】bulmaModern CSS framework based on Flexbox项目地址: https://gitcode.com/GitHub_Trending/bu/bulma创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考