多个scss文件最终编译成一个style.css,请问我多页面css命名空间怎么搞?

作者站长头像
站长
· 阅读数 6

npm是这样

"compile:csss": "node-sass sass/main.sass css/style.css -w",
"run-server": "live-server"

scss文件是这样

main.scss
home.scss
single.scss

要求就是各个页面都引入style.css后 保证不冲突

回复
1个回答
avatar
test
2024-07-01

一般来说想在编译时合并输出为同一个 style.css 的时候。需要你在开发时遵循 BEM命名规范 这样的话就会避免CSS的类名冲突,出现覆写或者样式污染。比如说各大UI库的命名:

// element-ui
.el-collapse { ... }
.el-collapse-item { ... }
.el-collapse-item__header{ ... }
.el-collapse-content { ... }
...

或者使用 CSS-Modules 在项目编译时在原有的CSS类名基础上追加作用域属性。这样的话,就不需要在开发时遵循 BEM 命名规范了。

import type from "./type.css";

element.innerHTML = 
  `<h1 class="${type.display}">
    This is a heading
  </h1>`;

就会编译输出成为

<h1 class="_type__display_0980340 _type__serif_404840">
  Heading title
</h1>

这个取舍就看你自己了,但是现在开发社区明显会更偏向于 tailwind 这种原子类的开发模式,相对来说就不怎么对CSS类名的命名方式敏感了。@Meathill 最近一直推荐的 DaisyUI 就是在 tailwind 的基础上合并一些常用的样式:

<button class="bg-indigo-600 px-4 py-3 text-center text-sm font-semibold inline-block text-white cursor-pointer uppercase transition duration-200 ease-in-out rounded-md hover:bg-indigo-700 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-indigo-600 focus-visible:ring-offset-2 active:scale-95">
  Tailwind Button
</button>

就会合并成为:

<button class="btn btn-primary">
  daisyUI Button
</button>
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容