CSS(全称CascadingStyleSheets,层叠样式表)为开发者提供了一种声明式的样式语言,这是前端必备技能之一。基于网上全面的资料和简单易懂的语法,CSS非常容易学习,但其知识点广泛而分散,难以掌握。在我们日常的开发中,受限于原始代码的混乱和DDL的方式,我们往往忽略了CSS代码的质量,很容易写出乱七八糟的CSS文件。代码优化建议1.使用缩写属性来简化代码适用于:margin,padding,border,font,background等但并不是所有的情况都必须缩写,因为当一个属性的值被缩写时,所有的item都会一直setonce,有时我们不想在value中设置某些项,这时候需要开发者自己判断。2.合并选择器使用“,(逗号)”连接多个选择器来定义共同的属性,这样既可以减小css文件的大小,又可以增加可读性。为了更容易定位问题,在逗号后加了一行。3.使用更多的语义词来命名类。当命名课程时,目标是“在您不怀疑之后发展的人”4.属性声明的顺序参考:stylelint[1]的bootstrap属性顺序[1]声明放在一起,按如下顺序排列:Positioning:定位相关,如position、top/bottom/left/right、z-index等Boxmodel:盒模型相关,如display、float、margin、Width/heightetc.Typographic:排版相关,如字体,颜色,line-height等Visual:视觉相关,如背景,颜色等Misc:其他,如opacity,animation等个人建议:可以属性数量多的时候参考这5个类别进行排序和排列,顺序不需要太纠结。.declaration-order{/*定位*/position:absolute;顶部:0;右:0;底部:0;左:0;z-指数:100;/*盒子模型*/display:block;;宽度:100px;高度:100px;/*Typography*/font:normal13px"HelveticaNeue",sans-serif;行高:1.5;颜色:#333;文本对齐:居中;-颜色:#f5f5f5;边框:1px实心#e5e5e5;边界半径:3px;/*Misc*/opacity:1;}5.使用&符号来引用父选择器&是Sass和Less中提供的语法糖,用来表示对父选择器的引用,在源码中被广泛使用antd设计代码。优点:非常适合写组件样式,减少很多重复的词。缺点:从HTML类名中查找对应样式的成本增加。header{.header-title{/*styles*/}.header-title:after{/*styles*/}.header-content{/*styles*/}}/*使用&引用优化代码:point_down:*/.header{&-title{/*styles*/&:after{/*styles*/}}&-content{/*styles*/}}善用相关技术来自TheStateofCSS2020:Technology[2]调查我们可以知道目前主流CSS工具的用户数和满意率数据(样本量10000+,仅供参考),分为4个象限:评价:使用率低,满意率高。一项值得关注的技术。采用:高使用率,高满意度。安全技术可用。[Sass,BEM,PostCSS,StyledComponents]规避:使用率低,满意度低。现在最好避免的技术。待定:使用率高,满意度低。如果您正在使用这些技术,请重新评估它们。CSSMethodologyBEM:ModularNamingSpecificationBEM(Block块,Element元素,Modifier修饰符)是一种标准化的类名命名约定。计算机科学中只有两个难题:缓存失效和命名事物—PhilKarlton:raising_hand:BEM解决了什么问题?CSS没有作用域,当类同名时,会造成“样式污染”。当CSS文件很长时,不一致的命名会使结构混乱。编写重复代码BEM优点:模块化、结构化、可重用性:raising_hand:BEM规范?Block块:一个独立且有意义的实体,任何DOM元素都可以是块元素元素:块的子元素,依附于块而存在。如:列表中的某项、卡片的标题、选择器中的选择项等。Modifier修饰符:表示块或元素的外观、状态或行为。如:是否点击,是否禁用等命名约定:.block__element--modifierblockandelementusedoubleunderscores__linkelementandmodifierusedoubledashes--linkblock,element,modifier当包含多个单词时,使用中间破折号line-link不推荐元素嵌套。如果需要嵌套,则意味着要从中提取一个组件:栗子:例子【Element-UI源码】https://github.com/ElemeFE/element/blob/dev/packages/table/src/table。vueAtomicCSS:atomicCSS:raising_hand:什么是原子?原子是指不能再分解成化学反应的基本粒子。在ACSS中,每一个只有一个CSS规则且不可分割的CSS类被称为一个CSS原子。HTML的样式由多个CSS原子组成,并用HTML内联编写。优点:无需维护CSS文件,HTML内联“所见即所得”;当HTML元素被移动/删除时,它们的样式也可以相应地移动,而无需额外的更新成本。缺点:结构和风格强耦合,不利于大型项目的维护,容易产生大量重复代码。:chestnut:Example
