CSS 类被认为是有害的

主要观点:应停止使用class属性,它是古老且存在诸多问题的系统,可通过属性、自定义标签名和自定义状态等方式来更高效地表达组件状态和参数。
关键信息:

  • HTML 发展历程中class属性的引入及演变。
  • 类选择器扩展的问题,如参数化困难、命名冲突等。
  • BEM、Atomic CSS、CSS Modules 等解决方案的优缺点。
  • 提出用属性(如data-属性)、自定义标签名和自定义状态来替代class属性的解决方案及示例。
    重要细节:
  • HTML 2.0 无样式,HTML 3.2 开始支持idclass属性,1997 年 HTML 4.0 进一步发展。
  • 类选择器扩展时面临的多种选择及其局限性,如添加额外类、创建不同“具体”类、命名空间类参数等。
  • BEM 虽能解决部分问题但存在命名冗长、动态状态处理繁琐等问题。
  • Atomic CSS 摒弃 OOP 概念,存在标记混乱、失去 CSS 部分优势、响应式设计易解读等问题。
  • CSS Modules 仅解决“选择器冲突”问题,需维护跨栈工具且仍存在不变性问题及缓存问题。
  • 属性可通过data-属性类似Map<string, T>进行参数化,具有唯一性、可动态处理等优势,且 CSS Values 5 规范可使属性渗透到 CSS 属性。
  • 自定义标签名是有效的 HTML5 语法,可自由样式化且无默认用户代理样式。
  • 自定义状态可通过 JavaScript 定义自定义元素并操纵内部状态,以自定义伪选择器来改变样式,且在现代浏览器中得到支持。
阅读 7
0 条评论