当前位置: 首页 > 科技观察

我的CSS好萌-如何组织CSS

时间:2023-03-19 21:17:22 科技观察

转载请联系唯一大学前端技术公众号。写在前面,开头问大家一个问题:前端三剑客是谁?不用说,大多数前端开发都会脱口而出:HTML、CSS和JavaScript。如果你还需要为此犹豫,朋友们,到角落里反省一下自己[手动狗头]。既然叫三剑客,就说明这三位在前端开发中起到了举足轻重的作用。HTML负责构建页面结构,CSS负责页面的布局和美化,JS负责赋予静态页面动态逻辑。从这一点来看,三者还真是缺一不可。然而随着业务需求的紧迫,我们往往达不到“连雨露”,有意无意地忽略了某个作用——CSS。就像我自己一样,在日常的业务开发中,往往关注的是HTML结构和JS逻辑,对CSS的漠不关心要少得多。这样做的后果是,当页面交互丰富,样式多样的时候,我们写的CSS代码行数多得吓人,再也不想看了。用高情商的话来说,我们写的CSS代码让后续开发者维护起来非常有挑战性。静下心来仔细分析原因,发现主要是因为样式代码的稳定性高。CSS写完一次,以后基本不可能再修改了。这种“一次性”,很难不让人带着一点傻逼的“心态”去开发,然后留下烂摊子让后面的同事骂。但!神转世!如果你需要修改别人写的CSS样式,那么这就是一场噩梦??。很难不让人改变对人生的怀疑,最后选择重写(呜呼,别骂了,别骂了)!遇到这种情况后,我意识到我们需要从整体的角度来指导CSS的编写,让样式文件变得更加美观!这也是我写这篇文章的初衷。1.CSS和美学??审美是主观的,受文化背景、知识体系、性格爱好等多种因素的影响。作为前端开发者,我们在编程领域经常会和美学打交道。有时候我们经常说某段代码写的垃圾,看了半天也看不懂。某大佬写的代码无敌,逻辑清晰。这些对代码的评价是我们审美认知的体现。??CSS的存在就是为了让页面美观,如下动图所示:我想每个用户都比较喜欢在上面的动画中加入CSS文件后的页面,因为它符合人的审美。既然CSS可以让页面变得更漂亮,那我们就应该为CSS本身而变得更漂亮!二、什么样的CSS受欢迎???我们之前已经找到了我们的目的:让CSS更漂亮!那么好看的目的是什么?就是为了让人喜欢。让我们在开发需求的时候不要抗拒修改原来的代码。那么这就引出了一个问题:什么样的代码让人抗拒修改?我们来看下面两段CSS代码:个人感觉,第一眼左边的代码“挤”在一起,显得杂乱无章。右边的代码更清晰,每一块之间都有空行,让人感觉更舒服。那么问题来了,为什么右边的代码让我看起来更舒服呢?仔细比较了两段代码的区别后,我找到了答案:每段代码之间的间隔是有序的,以免给人一种极其庞大的概念。层级控制不超过3层,避免层级嵌套过多“恶心”人们遵循BEM命名约定,潜在传达元素之间的层级关系??总结一下:将代码的逻辑关注点分成多个小块,开发人员可以轻松消化这些小块,同时仍然不言自明。这样的处理降低了人脑处理这些代码逻辑的难度,自然会给人一种舒服的感觉!那么下面再深入思考一下,抽象出CSS的书写原理。3.CSS的一些书写原则??CSS本身没有内置的组织方式,有内联、外链等多种写法。所以我们需要自己动手,在写CSS的时候保持统一性和规律性。Web社区中已经存在各种工具和方法来帮助开发人员管理大型CSS项目。我们可以借鉴和适应我们自己的写作方式。不过在此之前,我们需要明确几个CSS的书写原则。少即是多不言自明可重复使用??以上3条原则是我自己在开发过程中总结出来的。如果你有更多想法??,欢迎与我讨论。先说第一个原则:少即是多(Lessismore)。这句话的英文版是建筑师vanderRohe在建筑领域提出的一个观点。他反对存在于机械化产品中的繁琐和毫无意义的装饰。这同样适用于编写CSS。前端三剑客中,HTML是结构,JS是行为,CSS是表现。换句话说,CSS的工作就是装饰页面。在此前提下,去掉那些冗余复杂的CSS代码,不仅可以降低浏览器的性能消耗,还可以让开发者更深入地思考性能与结构的关系。我觉得这对于前端开发工程师的思维成长是有帮助的。//有冗余代码.footer{margin-top:30px;margin-bottom:20px;}//Optimization.footer{margin:30px020px0;}以上代码是lessismore最简单的做法,但不限于此.我们需要整体思考和实践。那么该怎么做呢?没有它,却手到擒来。所以我们每次开发的时候,一定要记住我们的口号:“NeverwriteextralineofCSS!”。self-explanation的第二条原则,就是CSS的编写要尽量解释自己做了什么,减少额外的注释代码。//有歧义.footer:first-child{color:#FFF;font-size:18px;}//.footer-title{color:#FFF;font-size:18px;}上面的代码解释了这个元素purpose是关于页脚部分标题的文本。这样我们就可以方便的定位到相应的html元素来修改样式。对于这个原则的实现,社区已经有了非常完善的解决方案:BEM命名。这套规范不仅避免了不同文件下的命名冲突,还赋予了CSS类名语义。让我们头脑中对CSS的模糊印象变得清晰。王狗蛋

24
OK
上面的代码最好使用BEM命名来添加额外的页面结构信息塞上CSS类名,这样开发者就不会混淆CSS对应的DOM结构。再加上SASS等预处理语言,从心理上消除CSS的信息缺失和歧义,保证页面结构、性能和行为的统一。最后的可重用原理我就不多说了,我都懂了。这一原则的基础是使用CSS预处理语言。因为CSS本身就是一种描述语言,它本身是没有逻辑的。但是随着业务越来越复杂,我们急于在CSS中加入逻辑代码。这是SASS预处理语言兴起的原因之一。在CSS预处理语言中加入逻辑,我们可以通过定义变量、使用循环、条件判断来复用CSS代码。4.保持CSS整洁的技巧了解了编写CSS的原则后,我们需要在实践中应用它们。在这个过程中,一些保持CSS干净的技巧对我们练习很有帮助。1、确定项目的代码规范?多人开发项目时,需要第一时间检查项目是否有CSS代码规范。按照项目的代码规范进行开发,是保持CSS整洁的基础,也是防止他人抱怨的盾牌。如果你的个人喜好与规范相冲突,那么请遵循规范,因为别人可能不喜欢你的风格。2.保持团结??当你开始开发需求和编写CSS代码时,最重要的是要保持各方面的统一。比如之前的代码使用了rem单元,转换和变量定义都在代码的开头进行。那么你需要做的就是跟随!!而不是使用另一套你自己的方式。统一性在任何地方都很有用,比如对类使用相同的命名约定,选择一种描述颜色的方式,或者保持一致的格式(比如你是否使用制表符或空格来缩进代码?如果是代码,有多少?)通过坚持遵循一组规则,你会在编写CSS时为自己省去很多心理负担,因为一些决定已经做出了。要知道代码是写出来给人看的,顺便说一句,是可以在机器上运行的。在此公布我们团队的开发规范:微医前端开发手册1.1(修订中),欢迎大家提出意见,共同进步。3.将CSS格式化为可读形式你可以看到很多CSS格式化,一些开发人员将所有规则放在一行中,像这样:.box{background-color:#567895;}h2{background-color:black;color:white;}??一些开发人员喜欢将所有内容放在一个新行上,并在不同元素之间留空行:.person-center{&-wrap{width:100%;}&-main{color:#FFF;font-size:16px;font-weight:500;}}??CSS不关心你用哪种方法格式化,我的意见是在遵循代码规范的前提下,让CSS代码更具可读性。只有保证你下次愿意看,才能保证其他开发者能看懂你的代码。4.给你的CSS添加注释代码以自解释为前提,但一些自定义需求需要添加注释来表明相关的业务背景等信息。这样做不仅可以帮助任何未来的开发人员处理您的CSS文件,还可以帮助您在离开项目一段时间后重新站起来。/*这是一个CSS注释,可以分成几行。*/在样式表中的逻辑段落之间添加块注释是一种很好的技术。这些注释可以帮助你在快速浏览的时候快速定位到不同的段落,甚至可以给你关键词去搜索或者跳转到那个CSS段落。如果使用代码中不存在的字符串,可以段落跳转,搜索即可,下面我们使用||。/*||Generalstyles*/.../*||Typography*/.../*||HeaderandMainNavigation*/...也许您遵循了社区教程,CSS有点不直观。此时,您应该在评论中包含教程的URL。如果您在一年或更长时间后重新访问您的项目,但只是模糊地记得一个优秀的教程并且不知道它在哪里,感谢您自己早些时候添加评论。5.添加逻辑段落到你的样式表?最好先在样式表中设置一般内容的样式。这是所有广泛应用的样式,除非你想对某个元素做一些特定的事情。通常,您会为以下元素设置规则:bodyph1、h2、h3、h4、h5ul和ol表属性链接在这个样式表中,我们为网站类型、数据表、列表等设置了默认样式默认样式。/*||GENERALSTYLES*/body{...}h1,h2,h3,h4{...}ul{...}blockquote{...}??在这一段之后,我们可以定义一些实用类,例如用于删除默认列表样式的类,我们打算将其公开为灵活或其他方式。如果您知道要应用于许多不同元素的内容,则可以在此处添加它们。/*||UTILITIES*/.nobullets{list-style:none;margin:0;padding:0;}...然后我们可以添加将在整个站点中使用的所有内容,这可能类似于基本页面布局、标题或导航栏样式。/*||SITEWIDE*/.main-nav{...}.logo{...}最后,我们可以为我们的CSS添加特殊性,将它们分成上下文、页面甚至它们使用的组件。/*||STOREPAGES*/.product-listing{...}.product-box{...}通过这样布局代码,我们至少可以大致了解我们在样式表中的什么位置可以寻找一些改变。6.避免过于具体的选择器如果你创建了非常具体的选择器,你会经常发现你需要在你的CSS中重用一段代码来将相同的规则应用到其他元素。例如,您可能有像下面的选择器这样的代码,它在主类中的框类上应用规则。article.mainp.box{border:1pxsolid#ccc;}如果您以后想要在main之外的某个地方或其他地方应用相同的规则,您可能必须向这些规则添加另一个选择器,或者直接创建一个新规则。或者,您可以创建一个名为box的类并将其应用到任何地方。.box{border:1pxsolid#ccc;}设置得更具体,有时也很有意义,但这通常是例外情况,而不是常见做法。7、将一个大样式表分成多个小样式表这个技巧可以说我们已经做得很好了。一般项目中都会有一个styles,里面存放了一些全局共享的样式文件。根据这些文件的作用,一般又细分为reset.csss、variables.less等文件。结合预处理语言的mixin功能,我们可以维护一个通用的样式文件,避免在特定页面上编写繁琐的CSS代码。这使得您的CSS组织起来更容易,并且意味着如果多人编写CSS,您将不太可能让两个人同时编写相同的样式表,从而防止源代码控制出现问题。冲突。8、善用工具人类和大猩猩的不同之处在于,他们善于使用工具来解决我们遇到的困难。生活在互联网的浪潮中,我们应该拥抱那些有用的工具??。使用stylelint+github规范我们的CSS代码,使用Less/Sass预处理语言让CSS更“逻辑”。它们解放了我们的大脑,潜移默化地培养了我们的编码标准。9.学习和模仿没有人是完美的。人的优点之一就是可以通过学习来提高自己。然后,作为程序员,我们需要和有实力的同行交流经验,学习别人好的编码规范,融入到自己的日常开发中。每个人都是独立的个体,每个人都有自己的想法。在这一行,虚心承认自己的不足,才是永远进步的源泉!!??这包括线下团队采取线上开展专题讨论和参与社区讨论等措施,与更多人交流,可以拓宽我们的技术视野。5.写代码是和自己的对话。原谅我在最后的总结中起了一个很文艺的标题。最近在看一部很老的日剧:?,男主安倍浩对几个准备东京大学考试的“笨蛋”说,考试是和自己的对话,也是和竞争对手的对话。当我们踏入职场,无论是初入职场时的满腔热血,还是几年磨砺后的波澜起伏,影响我们的只有自己。但信息茧不仅封闭了我们对外界的认知,也剥夺了我们对自身的认知。把时间尺度拉到1年、3年、5年甚至10年。您编写的代码一直作为时间锚点存在。这不就是未来与现在的另类对话吗?那么如何组织CSS呢?第一个原则是把它当成是和自己的对话,这样才不会嫌弃自己。在此基础上,掌握并找到适合自己的编码原则,用规范和工具对自己进行修正和监督,剩下的就是无限循环的实践=>修改=>实践=>再修改。干净的代码是干净的人写的,写可爱代码的一定是可爱的人。当我刚开始写代码时,理想是使用虚拟世界来帮助我理解现实世界的复杂性。我们正在将复杂、凌乱的CSS代码演变为干净、逻辑集中的代码。这个过程也是和自己对话,问自己喜欢什么,想要什么。在这些潜意识的疑问中,我们梳理着自己的内心。我们身处0与1的世界,思索着物质世界的喜怒哀乐,希望朋友们能够撇开浮世带来的浮沫,找到人生的真谛!毕竟努力只是手段,我们的目标才是以后幸福美满的生活!让我们互相鼓励吧!