如何在scss中巧妙的使用js变量

更多文章可关注我的个人博客:https://seven777777.github.io/myblog/

随着前端开发技术的不断发展,scss 和 js 之前的壁垒逐渐打破,而双方的变量互用也极大地便利了我们的开发。

js 中使用 scss 变量

开发过程中 js 中使用 scss 中的变量的场景会多一些,如一些色值的使用。

现在的常规的做法就是:

  • 样式文件命名为:xxx.module.scss
  • 将 js 需要使用的变量导出
:export {
    key: $var;
}

使用时直接 import 即可

scss 中使用 js 变量

常规场景

其实这个场景在 vue 开发中已经司空见惯了,就是直接利用 v-bind 在 dom 中根据 js 变量条件绑定 class 或是 style

示例:

<div :class="{className:showClass}" :style="{'width':width}"></div>

<script>
//...
data(){
    return {
        showClass:true,
        width: '100px'
    }
}
</script>

特殊场景

本文主要是记录一些特殊场景下的解决思路

场景:针对动态生成的 dom,无法直接在 dom 上进行绑定操作

主要利用 css 的变量属性,在根元素进行赋值,从而动态生成的子元素可以使用改变量

示例:

// 根据label的长度动态设置生成的内部元素的偏移量
<div class="select-with-label" :style="{ '--select-range-left': label?.length * 14 + 20 + 'px' }" ></div>

<script>
//...
data(){
    return {
        label: '名称'
    }
}
</script>

<style lang="scss">
.select-with-label {
    <!-- 该属性为动态生成的dom的class类名 -->
    :deep(.el-select__tags) {
        left: var(--select-range-left);
    }
}
</style>

其实挺简单的,原理也是普通场景的原理,只不过做了个中转。

因为我自己在遇到这个场景时,乍一下没想到解决方案,搜索看到这个思路时,颇有一点恍然大悟的感觉,所以在此记录一下,也给有相同需求的同学提供一下思路。

搴芳拾梦
欢迎关注的我的个人公众号【搴芳拾梦】
### SCSS编程语言介绍及其与CSS的关系 #### 什么是SCSSSCSS(Sassy Cascading Style Sheets)是Sass的一种语法形式,属于CSS预处理器的一部分。它旨在增强传统CSS的功能,提供更强大的功能和灵活性[^2]。SCSS文件通常以`.scss`为扩展名,并且其语法风格接近于标准的CSS写法,支持大括号 `{}` 和分号 `;` 的使用。 #### SCSS的主要特点 SCSS通过引入变量、嵌套规则、混合宏(mixins)、继承等功能,极大地简化了样式的管理过程。以下是几个核心特性: - **变量**:可以存储颜色值、字体大小等常用属性,方便全局修改。 - **嵌套**:允许将子选择器直接放置在其父级内部,从而减少重复代码并提高可读性。 - **Mixins**:用于定义一组重用性强的样式声明,调用时只需指定参数即可应用相应样式。 - **Extend/Inheritance**:实现类之间的共享行为,避免冗余代码生成。 #### SCSS如何工作以及它的用途 当开发者编写好SCSS源码之后,需要借助专门的编译工具将其转化为普通的CSS文件以便浏览器能够识别执行[^4]。这种转化流程使得我们可以利用高级抽象概念构建复杂的网页外观设计而不必担心兼容性问题。此外,在实际项目中还可以把大型样式表分割成若干个小片段分别保存到独立文档里再统一导入主入口处,这样既便于团队协作又利于后期维护更新操作[^1]。 ```javascript // 示例:简单的SCSS代码展示 $primary-color: #3498db; body { font-family: Arial, sans-serif; } .button { display: inline-block; padding: 10px 20px; background-color: $primary-color; color: white; &:hover { // 嵌套伪类 opacity: 0.8; } } ``` 以上示例展示了如何运用变量 `$primary-color` 来控制按钮背景色;同时也体现了`:hover`状态下的效果设置是如何被巧妙地包裹进 `.button` 类内的。 #### 关系总结 尽管SCSS最终会被转换回纯文本格式供客户端渲染引擎解析运行,但它本身却提供了远超原生CSS所能达到的能力边界——从逻辑结构化组织思路到动态数值计算表达等方面均有所体现。因此可以说,SCSS不仅保留了原有HTML关联标记语言的一切优点同时还弥补了一些固有缺陷,成为现代前端工程不可或缺的技术组件之一[^5]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值