您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
如何优雅的写css代码
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
如何优雅的写css代码
团座是个云小白
2023-03-16
IP归属:北京
39480浏览
作者:京东科技 杨健 CSS(全称Cascading Style Sheets,层叠样式表)为开发人员提供声明式的样式语言,是前端必备的技能之一,基于互联网上全面的资料和简单易懂的语法,CSS非常易于学习,但其知识点广泛且分散,很难做到精通,在我们日常开发中,常常忽视了CSS代码的质量,很容易写出杂乱无章的CSS文件。 代码优化建议 ### **1\. 使用缩写属性精简代码** 适用于:margin、padding、border、font、background等 但并非所有情况下都必须缩写,因为当一个属性的值缩写时,总是会将所有项都设置一遍,而有时候我们不希望设置值里的某些项,这时候需要开发者自行判断。 ``` .content{ // 缩写前 margin-right:16px; margin-top:30px; width:184px; height:32px; background:#FFFFFF margin-left:10px; } .content{ //缩写后 margin:30px 16px 0 10px; width:184px; height:32px; background:#FFFFFF } ``` ### **2\. 合并选择器** 使用","连接多个选择器定义公用属性,不仅能增加可读性,还能减小css文件大小。 ``` .content{ display: flex; .flush, .include, .underline{ margin-right: 12px; padding: 3px 6px; border: 1px solid #a96161; font-size: 12px; color: #412c2c; } .flush{ color: #FFFFFF; background-color: aqua; } .include{ color: #5d3e3e; background-color: #657f7f; } .underline{ color: #7da938; background-color: #7c6a6a; } } ``` ### **3\. 使用更语义化的单词命名class** 命名的时候以“在你之后开发的人不会产生疑惑”为目标 如下 ``` .curr{ color:#FFFFFF; background:red; } .future{ background:#9f6262; } // curr 是啥? future又是啥? ⬆️ .current-count{ color:#FFFFFF; background:red; } .future-count{ background:#9f6262; } ``` ### **4\. 属性声明顺序** 选择器中属性数量较多时,将相关的属性声明放在一起,并按以下顺序排列: 1. 定位相关,如position、top/bottom/left/right、z-index等 2. 盒模型相关,如display、float、margin、width/height等 3. 排版相关,如font、color、line-height等 4. 可视相关,如background、color等 5. 其他,如opacity、animation等 建议:在属性数量较多时可以参考这5个类别归类排列。 ``` /* 定位相关 */ position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 100; /* 盒模型相关 */ display: block; float: right; width: 100px; height: 100px; /* 排版相关 */ font: normal 13px "Helvetica Neue", sans-serif; line-height: 1.5; color: #333; text-align: center; /* 可视相关 */ background-color: #f5f5f5; border: 1px solid #e5e5e5; border-radius: 3px; /* 其他 */ opacity: 1; ``` ### **5\. 使用&符号引用父选择器** &是Sass和Less中提供的语法糖,用于表示对父选择器的引用 优点:非常适合用于编写组件的样式,减少了很多重复单词 缺点:从HTML的class name中寻找对应样式的成本增加 ``` .first { .first-title {/* styles */} .first-title:after {/* styles */} .first-content {/* styles */} } /* 用&引用来优化代码 */ .first { &-title { /* styles */ &:after {/* styles */} } &-content {/* styles */} } ``` #### **Sass .vs. Less?** #### 预处理器将CSS从声明语言转换成一门编程语言 可嵌套的语法增加了样式文件的可读性和可维护性 变量与混合特性能够减少很多重复的样式声明 Less更像CSS,易于上手,能够从CSS平滑过渡;Sass的缩进语法接受度因人而异,Sass3.0中提出了兼容CSS的Scss,用户可以选择使用Sass或Scss。 当项目CSS中需要涉及复杂逻辑时,Sass/Scss更适合,Sass提供了更强大、更接近编程语言的@function、@if/@else、@while等语法;当项目的样式复杂度不高时,选Sass或Less都可以。 (下面是一个Less和Scss语法对比例子) ``` // Less .mixin( @count )when( @count > 0 ){ background-color: black; } .mixin( @count )when( @count <= 0 ){ background-color: white; } .tag { .mixin(100); } // Scss @function selectCount($count) { @if $count > 0 { return black; } @else { return white; } } .tag { background-color: checkCount(100); } ``` 综上,CSS作为一门前端必备的基础技能,具有许多原生的痛点。近年来,开发者们也在源源不断地提出了不同的优化方案,我们在日常关注Vue、React、NodeJS、性能优化等热门前端话题的时候,也不要忘了好好写CSS代码呀~ 内容来源:京东云开发者社区[https://www.jdcloud.com/](https://www.jdcloud.com/)
原创文章,需联系作者,授权转载
上一篇:通过源码分析RocketMQ主从复制原理
下一篇:使用“宝塔一键迁移”工具,将单机版typecho博客系统迁移到京东云cvm云主机
团座是个云小白
文章数
24
阅读量
64079
作者其他文章
01
京东探索研究院 | 2023年十大科技趋势
日迈月征,朝暮轮转。这一年里,科技开拓者们,产业同行者们用科技汇聚向上的力量步入了数智时代的 “星辰大海”。数字化是我们创造出来的一个永恒并且充满活力的装置,数智技术正在以前所未有的速度发展,并引发颠覆式的变革。
01
Mysql 和 Redis 数据如何保持一致
Mysql和Redis的关系:Mysql是数据库,用来持久化数据,一定程度上保证数据的可靠性;Redis是用来当缓存,用来提升数据访问的性能
01
【案例分享】如何利用京东云建设高可用业务架构
公有云及私有云客户可通过使用京东云的弹性IAAS、PAAS服务,创建高可用、高弹性、高可扩展、高安全的云上业务环境,提升业务SLA,提升运维自动化水平,降低资源成本及运维成本。有业务迁移上云需求,希望构建云上高可用业务架构的客户或对云上高可用架构规划有兴趣的读者可以一看。
01
剖析一下"抢茅台"脚本底层逻辑
百度了下网上抢茅台的种种手段与方法,发现里面的猫腻还真不少,同时作为风险人也想不断的通过各种技术手段识别发现风险,让羊毛党无处躲藏;也许,竞争对手比你想象中要更加的强大, 今天就带你走近抢茅台的脚本,领略下TA们有趣的灵魂
团座是个云小白
文章数
24
阅读量
64079
作者其他文章
01
京东探索研究院 | 2023年十大科技趋势
01
Mysql 和 Redis 数据如何保持一致
01
【案例分享】如何利用京东云建设高可用业务架构
01
剖析一下"抢茅台"脚本底层逻辑
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号