javascript - 在 javascript 中生成一个类以匹配现有的 sass 类名
问题描述
我正在使用 webpack 生成一个 bundle.js 文件,其中包含我在单个文件中需要的所有内容,并且 webpack 编译并且似乎包含我期望的内容。我在 javascript 中动态生成 DOM 元素,我希望使用现有的 sass 类规范对其进行格式化,如下所示:
索引.scss:
.classname {
position: 'absolute';
font-family: 'Roboto', sans-serif;
color: blue;
}
index.js:
import styles from './css/index.scss';
console.log(styles);
let aDiv = document.createElement("div");
aDiv.classList.add("classname");
aDiv.style.top = "10px";
document.body.append(aDiv);
let bDiv = document.createElement("div");
bDiv.classList.add(styles.classname);
aDiv.style.top = "30px";
document.body.append(bDiv);
在 Firefox 的开发者工具中,从控制台中,我可以看到样式是一个对象,具有许多 css 规则中的每一个的属性,其中之一是:
"classname": "_2mpyBRPOMJ9D3LKNxOIvrs"
在 Firefox 的 Inspector 工具中,aDiv 的类是“classname”,但没有应用该类的样式。bDiv 的类是“未定义的”,也没有应用任何样式。我不知道如何获得“_2mpyBRPOMJ9D3LKNxOIvrs”类名,每次编译时都不同,分配为一个类。但即使我从 Firefox 手动执行此操作,样式也不会应用,并且 Firefox 的样式编辑器中也不存在“类名”或“_2mpyBRPOMJ9D3LKNxOIvrs”。
是否可以通过类名动态创建从 scss 继承样式的元素?或者有没有更好的清洁方法来做到这一点,我错过了?我觉得我一定没有掌握将 webpacking css into js 的核心原则。
解决方案
这是因为当您的 scss 合并为 css 到您的代码中时,缩小插件会将您的类名更改为新的引用。您可以通过配置 webpack 来禁用此行为。Thia 的答案告诉你怎么做:
推荐阅读
- bash - 登录后如何设置shell脚本
- angular - 具有可变参数数量的角度表单输入
- java - PageSpeed API - Java 中的批处理
- python - 在 Python-Flask 中运行 Python-Escpos 命令会导致延迟
- c++ - 在分层窗口的子对话框中未单击 CMFCButton
- java - 如何在 FtpMessageHandler 中设置目标目录?
- angularjs - Angular Google Chrome 设置自动填充
- python - 在数据框中设置样式后执行操作
- vue.js - VueJS - axios:“get”调用似乎不起作用
- python - 在特定点评估函数