html - 在 react spa 应用程序中有条件地应用 css 样式
问题描述
我有一个项目,我试图为不同的布局应用不同的 CSS 样式(我通过 URL 检测到,基本上我们有两个不同的域名)。在该webpack.config
文件中,我排除了用于第二个布局的样式表,因为它正在加载所有 CSS 并将其全部放在一个文件中(这会覆盖布局 1 和布局 2 的主体颜色集)。但是在排除了那个特定的 CSS 文件之后,它在查看第二个网站时并没有添加样式表。它是一个反应应用程序,我正在使用 if 条件来应用样式:
index.js
文件:
if (window.location.hostname.includes("website2")) {
require("./assets/css/style1.css");
require("./assets/css/style2.css");
} else {
require("./assets/css/style1.css");
}
webpack.config
module: {
test: /\.css$/,
exclude: /\style2.css$/,
....
}
我是 webpack 的新手,所以我不确定是否应该以这种方式排除 CSS 文件。
解决方案
Webpack 是一个开发/构建工具。它只编译源文件。因此,您的代码将无法在运行时运行。
您应该在每个 css 文件中将根 css 类设置为命名空间/主题,然后只需更改body
标签中的类名。
// note: scss styles
.style1 {
// style theme 1
}
.style2 {
// style theme 2
}
if (window.location.hostname.includes("website2")) {
body.classList.add("style1");
body.classList.add("style2");
}
else{
body.classList.add("style1");
}
推荐阅读
- google-apps-script - 有没有办法为用户删除谷歌脚本中的保护?
- python - Keras:如何评估模型准确性(evaluate_generator vs. predict_generator)?
- c# - 多对多关系添加项目
- c# - 如何使用联合更高效地进行 LINQ 查询
- html - 如何平滑地动画隐藏侧边栏,这会影响其他区域的大小
- python-3.x - 循环时如何将提取的数据保存到不同的文件中?
- mysql - 如何在 Mysql 中使用多个相同值从第二个表更新主表
- angularjs - OTS 解析错误:无法将 Glyphicon for Spring-boot 的字体文件的 WOFF 2.0 字体转换为 SFNT
- angularjs - 使用 downgradeModule 创建 Angular 混合应用
- shell - 使用 awk 分析 csv 文件 - 结合 awk 中的 shell 'date' 命令