背景随着前端项目的复杂度越来越高,如何构建可维护、可重用、可配置的CSS代码成为了每个前端工程师需要思考的问题。问题本质:CSS最初是为了描述网页的风格而提出的,不具备编程语言的特性。因此,在前端工程化的道路上,CSS暴露了一些问题,阻碍了它:全局范围、没有模块复杂系统、多人协作的概念,容易出现风格冲突,难以维护;缺乏变量、函数等编程语言的特性,不利于通用属性、样式的抽象和复用;每个浏览器及其不同的版本是不同的。CSS语法支持的程度和支持方式的不一致,具体体现在是否支持某些功能上。同一个属性在不同的浏览器中有不同的属性名;根据不同状态渲染样式时(这里称为StateStyling),需要定义多个类,可读性差;.....针对这些问题,爱折腾的前端程序员探索了各种技术和解决方案。本文简单介绍常用的CSS技术,然后分享两种常见的CSS工程解决方案,希望能帮助像我一样对这些概念比较模糊的同学对此有一个系统的认识。BEMBEM(Block__Element--Modifier),是一种CSS命名约定,看例子:
