js 修改 stylus 变量

JavaScript 动态修改 Stylus 变量
本文介绍了如何在 Stylus 中使用和修改变量,强调了动态修改时需借助 JavaScript,并给出了修改头部高度和背景颜色的示例。通过在 Stylus 中声明默认变量,在 JS 中动态更新全局变量,实现样式动态变化。

原文地址: https://www.jeremyjone.com/735/,转载请注明。


使用变量

一些基本操作:

  • 使用 $ 作为变量名前缀
  • 赋值号(=)赋值
  • 使用 @ 可以直接引用当前类下的属性名
	width 10px
	height @width
  • 可以直接在类中使用变量名(好像是废话)

修改变量

如果想动态修改,需要用到 js,但是 js 无法修改 stylus 的变量,只能借助 css 的变量名体系。

标准的方式:

  • :root 中声明默认变量属性
  • 通过 js 动态修改全局的 css 变量

具体内容可以看文档 MDN

css 的变量使用 -- 作为起始,使用的时候需要使用 var() 函数包裹。

需要注意的是,css 变量在 stylus 的一些内置函数中是无效的,所以有些值需要在 js 中变换完成之后再赋值给 css 变量。


以修改头部高度和背景颜色为例:

1、定义初始属性:

:root
	--header-height 40px
	--header-bg-color #123

.header-style
	height var(--header-height)
	background-color var(--header-bg-color)

2、使用 js 进行修改:

document.documentElement.style.setProperty("--header-height", "50px");
document.documentElement.style.setProperty("--header-bg-color", "#456");
### Stylus 中定义和使用全局变量的方法 在 Stylus 中,可以通过简单的赋值操作来定义全局变量。这些变量可以在整个样式表中被访问和修改,除非它们被重新声明为局部变量。 #### 定义全局变量 全局变量可以直接通过 `name = value` 的形式定义。一旦定义,该变量在整个 Stylus 文件及其导入的文件中都可以被访问[^1]。 ```stylus // 定义全局变量 primaryColor = #3498db fontSizeBase = 16px ``` #### 使用全局变量 定义后的全局变量可以像普通 CSS 属性一样使用。例如: ```stylus body color primaryColor font-size fontSizeBase ``` 编译后会生成对应的 CSS: ```css body { color: #3498db; font-size: 16px; } ``` #### 覆盖全局变量 如果在一个作用域内重新定义同名变量,则新定义的变量将成为局部变量,而不会影响原始的全局变量[^2]。 ```stylus button backgroundColor = #e74c3c // 局部变量 background-color backgroundColor // 全局变量不受影响 background-color primaryColor ``` 上述代码中的 `backgroundColor` 只会在 `button` 块内部生效,外部仍然使用的是全局变量 `primaryColor`。 #### 导入时共享全局变量 当多个 Stylus 文件之间需要共享全局变量时,可以将变量集中定义在一个单独的文件中并导入到其他文件中[^3]。 ```stylus // _variables.styl primaryColor = #3498db secondaryColor = #f1c40f // main.styl @import 'variables' body color primaryColor a color secondaryColor ``` 这样可以确保所有文件都能访问相同的全局变量集合。 --- ### 提高代码一致性和可维护性的工具支持 为了进一步提高项目的代码质量和一致性,在实际开发过程中还可以借助一些工具来管理代码风格和依赖安装过程。以下是几个推荐的做法: 1. **EditorConfig**: 配置 `.editorconfig` 文件可以帮助团队成员在不同编辑器或 IDE 下保持一致的代码格式设置,减少因个人习惯差异带来的问题。 2. **ESLint**: 如果项目涉及 JavaScript 或 TypeScript 开发,建议集成 ESLint 来强制执行特定的代码规范,从而提升代码质量。 3. **Maven 和 npm 配置优化**: 对于 Java 和前端混合项目,合理调整 Maven 构建脚本以及 npm 参数能够有效解决潜在的兼容性问题。例如,移除淘宝镜像地址可能修复某些环境下的构建失败情况。 4. **Flink 源码编译经验分享**: 当处理大数据框架 Flink 的源码时,采用指定参数的方式(如 `-DskipTests -Dfast`),不仅可以加快本地测试速度,还能规避不必要的资源消耗[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值