Table of contents
展开目录
目录
源码
Css variables
组件库,最重要的就是颜色,一套成体系的颜色可以让人眼前一亮,
通过 Css variables
,可以很方便的实现换肤,也可以使 css
更好的组织化,甚至能让使用者更方便的调整 UI。
对于不懂 UI、不懂设计的开发人员来讲,怎么快速整出一套 Css variables
?
参考第三方组件库的 调色盘
是最快的方式之一,例如:antd-design colors,
或者我参考的 vercel-design colors。
Light/Dark mode
在暗黑模式全面支持的今天,Css Variables
也需要提供两套。
实现 Light/Dark mode
非常简单,通常的做法是为 html
元素动态添加 class
:
在 :root
下声明 Css variables
:
目录结构
不在 SFC 的 <style>
标签书写样式,而是在单独的目录中编写样式文件,是为了:
- 和 图标 一样,样式和组件解耦,减少构建后的体积;
- 便于移植到其他语言;
万一你需要同时支持 Vue 和 React 呢?
- 在 package.json 中声明
style
属性;
- 在 package.json 中声明
sideEffects
属性;
其他实践
我个人比较习惯直入直出的写法,只定义 Css variables
,每个组件使用单独的 .scss
文件来编写样式。
如果你对 sass 有非常深入的了解,或者想更进一步,可以参考 《SCSS 和 CSS变量的架构实践》,里面详细介绍了 Element-plus 构建整套样式 theme-chalk
的思路和方法。
用这种思路编写代码之后,SFC 文件中需要通过 js 来单独组装 className,例如 <el-avatar />
:
Element-plus 通过 useNamespace
来构建 className 的前缀,整个 SFC 文件中看不到具体的类名,如果不熟悉这种风格,很难找到对应的样式。
如果再来一些循环等方法来开发 Col
等组件的样式的话:
😟 对于 less/sass
只会一个嵌套操作的,这种模式还比较费时费力,
如果你不想花费大精力深入 sass
,可以采用单文件、唯一前缀的方式来快速编写组件样式,
如果你已经深入了解过 sass
,也可以用上述模式来进行实践。