2022如何搭建系统CSS架构如何搭建系统CSS架构css是英文CascadingStyleSheets的缩写。它是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。那么如何搭建系统CSS架构呢,一起来学习学习!搭建CSS法则在项目起先的时候,我们谈论了开发者关于他们的流程和痛点,并问他们的接口设计系统如何让他们的工作量变简洁。第1页共23页完成我的前端指导问卷,这些导致一系列前端规则和系统封装。这里有些我们创建的CSS详细规则。模块化——设计系统在每一个方面都是模块,这是特别好用写CSS的方法。这在组件之间须要清楚分隔。可读性是关键——开发者必需在第一眼理解CSS代码,并且理解每一个选择器的目的。清楚赛过简洁——设计系统有时候看上去很冗长,但是作为交换,它供应清楚和韧性。保持CSS可读性和可扩展性意味着牺牲简洁的语法。第2页共23页保持平面化——长的选择器要回避,无论什么地方,尽可能保持CSS独立DOM和模块化。避开冲突——因为组件会部署很多不同的应用,保证设计系统之间的CSS不会和其他的库和系统有冲突,这很重要。通过系统空间命名Class名可以完成这个,更多的会在之后描述。从这些规则中,我们搭建了制约和语法,包含了这些规则,以满意开发者的需求。这里有一个我们总结出的class语法:全局命名空间全部的Class都和设计系统关联的都以全局命名空间为前缀,这第3页共23页就是公司名称后面加一个连体符.cn-假如你工作的CSS框架是用于单个网站或者假如你对你的开发环境有肯定限制,那么引入全局命名空间是不须要的。但是假如你的设计系统是混合的技术,那么为系统特定代码创建一个标识是很重要的作为第三方开发者,在多个环境中利用他们的系统,营销团队可能会失控,因此LightningDesignSystem引用了相像的方法到他们的系统之中(通过前缀.slds-),在我们的例子中,很多我们客户的.开发者运用Angular,因此他们已经很熟识命名空间的概念,因为第4页共23页Angular运用ng-作为命名空间,为Angular特别的代码。Class前缀除了命名空间,我们添加前缀到每个Class,为了使之更加明显,这个这个Class是做什么的。下面是我们运用的类前缀:c-用于UI组件,比如.cn-c-card或.cn-c-headerl-用于布局相关样式,比尔.cn-l-grid__item或.cn-l--two-columnu-用于公共部分,比如.cn-u-margin-bottom-double或.cn-u-margin-bottom-double第5页共23页is-和has-用于特定状态,比如.cn-is-active或.cn-is-disabled.适用于这些状态为基础的样式。js-用于目标特定功能,比如.js-modal-trigger.这些class没有绑定样式;他们只是为了行为而保留的.对于大多数案例,这些js-类将在元素上会切换基于状态的类。我被灌输来自HarryRoberts的一个概念,并且一起先在我认为这有道理的同事,我还是持有质疑的看法的,仅仅因为这是额外的字符并且我认为前缀会降低代码可读性。然而我的想法是不对的。在实施类前缀之后,我发觉他们对于分清每个类的角色非常有帮助并且对第6页共23页于破译一个应用的代码库非常简单一目了然。对于设计系统用户,这种清楚的代码能够整理清晰头绪,特殊有用。BEM语法BEM代表了“块元素修饰”,这意味着:Block主要组件块,比如.cn-c-card或者.cn-c-btnElement是主要块的一个子类,比如.cn-c-card__titleModifier是一个组件样式的各种改变,比如.cn-c-alert--error这种方法论已经很受欢迎了,将这些概念和全局命名空间和类前第7页共23页缀结合在一起,允许我们创建更明显封装的类名。把它们都放到一起:解剖一个类全局命名空间的结合,类别前缀,和BEM语法引出了一个明确的(是的,冗长的)类字符创,允许开发者们在构造UI的时候演绎他在之间扮演的角色。让我们检查下以下的例子:.cn-c-btn--secondarycn-是来自设计系统的用于全部样式的全局命名空间。c-是class的类别,在案例中,c-一位置“组件”第8页共23页btn是块名(“Block(块)”就是BEM中的“B”)--secondary是一个修饰成分,指向一个块的改变多端的样式(“Modifier(修饰)”就是BEM中的“M”)这里有另一个例子:.cn-l-grid__itemcn-再一次出现就是系统的全局命名空间。l-是类的类...