Redian新闻
>
如何优雅的写css代码

如何优雅的写css代码

公众号新闻

来源 | OSCHINA 社区

作者 | 京东科技 杨健

原文链接:https://my.oschina.net/u/4090830/blog/5629135


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 代码呀~


往期推荐



 一周热点 | 2022.12.20-2022.12.26

Win 11记事本标签页功能意外曝光

Firefox 启用 “新架构”,速度成倍提升



这里有最新开源资讯、软件更新、技术干货等内容

点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦~

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
无背景转码攻略!无CS背景的学生如何优雅转码?IGCSE和Alevel经济的Essay有多重要?完成一篇高质量Essay需要几步?出租房和自住房如何优雅的避税优雅,太优雅了|赏色如何优雅地向导师表达:这周科研没什么进展?!这部9分间谍喜剧,真是“优雅,太优雅了”口罩戴上口罩后,如何优雅地佩戴眼镜?深度好文|如何优雅的搞砸一个IPO项目?2023,愿过从容优雅的教育人生:逆境不馁,顺境不矜,常境不怠如何优雅限制 Kubernetes 集群中文件描述符与线程数量秀才,举人,和进士换到现在相当于什么。。。【30/50】十月活动-秋日的时尚大摩面试官让我当场写CIM,还必须用LBO模型!我慌了…​M·Campus代谢性疾病“筛诊治管”合作伙伴招募中国人最优雅的内卷,从立春开始剃须刀更优雅的充电方式,我们找到了。【活动】HCSSA &amp; MITCSSA 1111 交友主题桌游夜Shopify开发团队放弃Ruby,改用Node重写CLI工具减肥【友情转发】MITCSSA年度巨献|一行代码,告别光棍节低至49元!雍容优雅的巴洛克珍珠,格调之礼,送予珍视之人用这4招 优雅的实现Spring Boot 异步线程间数据传递大学生的优雅现状,真是太优雅了除了优雅的天鹅和王子,其实这些舞段也都来《天鹅湖》Apple Pencil 更优雅的充电方式,我们找到了优雅,真的是太优雅了!核能供暖再添一地 有何优势?前景如何?如何优雅地中断 Promise?一文详解|如何写出优雅的代码B端产品,如何优雅地实现「数据批量导入」Switch 更优雅的充电方式,我们找到了。Crested Butte 黄叶似海 - 多彩科州之旅(五)
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。