Better

Ethan的博客,欢迎访问交流

Angular: tips and tricks for CSS structure

Angular 中关于 CSS 的建议与技巧,正确理解 Angular 中的特殊选择器 :host 和 :host-context,以及如何在 @import 规则中使用绝对路径。

tips and tricks

当你创建 angular 项目时,有三个主要文件夹 app、assets 和 environments。

assets 仅用来存放 images 和 fonts,不建议将 styles 放在其中。建议你创建一个 styles 文件夹。

文件名下划线开头,表示这是一个片段,通常是 @import 引用的对象,引用时可以忽略下划线

引用规则优先级:Global CSS > Module CSS > Component CSS,可以充分利用继承的优势

@import 绝对路径

在 CSS 中可以通过 @import 导入其他样式文件,但如何才能使用绝对路径呢,毕竟如果组件层次较深,会出现很多的 ../ 的形式。

社区有人说设置 stylepreprocessoroptions 属性,亲测在 angular 7/8 中会编译报错,应该是新版本直接去掉了。

答案就是通过 ~ 来进行寻找,其代表的位置是 src/

特殊选择器

之前一直没有太理解 :host 和 :host-context 的作用。今天使用 host-context 实现了一个比较特别的效果。

比如设置一个组件,但是你想在某个场景 case1 中,使用特殊的样式,此时你可以这样做,例子如下

:host-context(.case1) .panel {
  // 特殊样式
}
.panel {
  // 通常样式
}

:host-context 的作用就是基于某些来自组件外部的条件应用样式,比如主题切换功能

别问我为啥会有这种场景,需求嘛,你懂得!

至于 :host 选择器表示选择组件的宿主元素,如果要把宿主样式作为条件,就要像函数一样把其它选择器放在 :host 后面的括号中。

覆盖组件样式

很大可能,你会碰到需要 UI 库样式的需求,目前并没有找到满意的方式,只能通过修改全局样式来达到目标,为针对性覆盖,可通过设置父类来限制使用场景。

样式统一思考

最近公司在统一前端的样式,我们通常会考虑到定义一系列的规范,比如

  • 字体大小、颜色种类
  • 背景颜色种类
  • 留白、间距
  • 行高
  • 圆角、边框
  • 按钮,输入框大小
  • 平牌色,成功、失败、警告
  • ……

使用过程中觉得不是很顺畅,比如某处场景字号、字色、留白、间距并没有太多感觉。这里的设计值得多思考!

参考



留言