这篇“JavaScript与CSS和Sass的交互示例“除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“JavaScript与CSS和Sass的交互示例”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获、下面让我们一起来看看具体内容吧。
JavaScript是什么
JavaScript是一种直译式的脚本语言,其解释器被称为JavaScript引擎,是浏览器的一部分,JavaScript是被广泛用于客户端的脚本语言,最早是在HTML网页上使用,用来给HTML网页增加动态功能。
JavaScript和CSS已经并存超过了20年。但是在它们之间共享数据非常困难。当然也有大量的尝试。但是我所想到的是一些简单而直观的内容,不涉及结构更改,而是使用CSS自定义属性甚至Sass变量。
CSS自定义属性和JavaScript
自定义属性在这里应该不会令人感到惊讶。自浏览器提供支持以来? ?,他们一直在做的一件事就是与JavaScript协同工作以设置和操作值。
不过具体来说,我们可以通过几种方式使JavaScript与自定义属性一起工作。可以使用<代码> setProperty 代码>设置自定义属性的值:
document.documentElement.style.setProperty (“——padding",, 124, +,“px");,//, 124 px
我们还可以用JavaScript中的<代码> getComputedStyle> 代码来检索CSS变量。其背后的逻辑非常简单:自定义属性是样式的一部分,因此它们是计算样式的一部分。
getComputedStyle (document.documentElement) .getPropertyValue(& # 39;——填充# 39;),//,124 px
与<代码> getPropertyValue 代码>一样。这样我们就可以从HTML标记的内联样式中获得自定义属性值。
document.documentElement.style.getPropertyValue(“——填充# 39;“),,//,124 px
请注意,自定义属性是有作用域的。这意味着我们需要从特定元素获取计算样式。正如我们之前在<代码>:根> 代码中定义变量一样,我们将它们放在HTML元素上。
Sass变量和JavaScript
Sass是一种预处理语言,这意味着它在成为网站的一部分之前就已经变成了CSS。所以无法用与CSS自定义属性相同的方式从JavaScript访问它们(可以在DOM中以计算样式访问它们)。
我们需要通过修改自己的构建过程来改变这一点。我怀疑在大多数情况下并不需要做太多,因为装载程序通常已经是构建过程的一部分。但是如果你的项目并非如此,则我们需要三个模块,这些模块能够导入和翻译Sass模块。
在Webpack配置中看上去是这样:
module.exports =, { ,//? ,模块:{ 规则:,才能 ,,{ ,,,测试:,/\ .scss/美元, ,,,使用:,(“style-loader",,“css-loader",,“sass-loader"】 ,,},//,,,… ,,) ,} };
为了使Sass(或者在这种情况下,具体来说是SCSS)变量可用于JavaScript,我们需要“出口”它们。
//,variables.scss 美元的原色:# fe4e5e; 美元background - color: # fefefe; 填充:美元,124 px; :export { ,,primaryColor:美元的原色; background - color,,写成backgroundColor:美元; ,,填充:$填充; }
<代码>:出口> 代码块是webpack用来导入变量的。这种方法的好处是,我们可以用camelCase语法重命名变量,然后选择要公开的内容。
然后,把Sass文件(<代码>变量。scss> 代码)导入JavaScript,从而可以访问文件中定义的变量。
import variables 得到& # 39;。/variables.scss& # 39;;/* ,{ primaryColor才能:“# fe4e5e" 写成backgroundColor才能:“# fefefe" 填充才能:“124 px" ,} */. getelementbyid (“app") .style.padding =, variables.padding;
值得一提的是对<代码>:代码>出口语法的一些限制:
- <李>
它必须在顶层,但可以在文件中的任何位置。
李> <李>如果文件中有多个,则将键和值组合在一起一并导出。
李> <李>如果特定的<代码> exportedKey> 代码被复制,则最后一个(按源顺序)优先。
李> <李><代码> exportedValue> 代码可以含有在CSS声明值中任何有效的字符(包括空格)。
李> <李><代码> exportedValue> 代码不需要被引用,因为它已经被当作文本字符串了。
李>有很多方法可以方便地访问JavaScript中的Sass变量。我倾向于使用这种共享断点的方法。下面是我的