0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何优雅的写css代码

OSC开源社区 来源:OSCHINA 社区 2023-01-03 15:00 次阅读

作者 | 京东科技 杨健

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. 属性声明顺序

选择器中属性数量较多时,将相关的属性声明放在一起,并按以下顺序排列:

定位相关,如 position、top/bottom/left/right、z-index 等

盒模型相关,如 display、float、margin、width/height 等

排版相关,如 font、color、line-height 等

可视相关,如 background、color 等

其他,如 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 代码呀~

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程语言
    +关注

    关注

    9

    文章

    1878

    浏览量

    33062
  • 代码
    +关注

    关注

    30

    文章

    4554

    浏览量

    66736
  • CSS
    CSS
    +关注

    关注

    0

    文章

    104

    浏览量

    14182

原文标题:如何优雅的写css代码

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何让你的Python代码优雅又地道

    pythonic的代码简练,明确,优雅,绝大部分时候执行效率高。阅读pythonic的代码能体会到“代码是写给人看的,只是顺便让机器能运行”畅快。这篇文章是网友Jeff Paine整理
    的头像 发表于 02-03 12:35 4404次阅读

    HarmonyOS css和HTML css的区别是什么

    Gradients)和 径向渐变(Radial Gradients)独属于HarmonyOS的一些属性有一些是鸿蒙css独有的属性而普通css 没有的注意事项目前HarmonyOS 代码
    发表于 03-30 10:37

    鸿蒙css支持的属性与普通css支持的属性有哪些区别呢

    Gradients)和 径向渐变(Radial Gradients)独属于HarmonyOS的一些属性有一些是鸿蒙css独有的属性而普通css 没有的注意事项目前HarmonyOS 代码
    发表于 03-30 18:15

    外部CSS文件不起作用是怎么回事?

    我正在尝试使用 CSS 文件,但似乎完全被忽略了。CSS 非常简单,只需设置一个 td 元素的宽度即可: 代码:全选td{ width: 50px; } 使用将其放入上传文件夹的文件管理器上传它
    发表于 04-26 08:30

    如何查看/搜索/偷看/共享他人的css模板代码

    如何查看/搜索/偷看/共享他人的css模板代码   当我们看到他人漂亮的空间时,我们无不为他人的高超css技术而慨叹!但自己也
    发表于 02-11 15:11 982次阅读

    css3按钮特效

    css3按钮特效css3按钮特效css3按钮特效css3按钮特效css3按钮特效css3按钮特效
    发表于 05-24 14:14 0次下载

    几款HTML5/CSS3应用及代码介绍

    《p》新的一周开始,小编也将继续为大家分享精彩的HTML5应用,还有CSS3和jQuery方面的东西。今天给大家带来的是8款最受欢迎的HTML5/CSS3应用及代码,一起来看看吧。《/p》《h2
    发表于 09-28 15:47 1次下载

    让你的 Python 代码优雅又地道

    P vs NP (pythonic vs non-pythonic)的讨论。pythonic的代码简练,明确,优雅,绝大部分时候执行效率高。阅读pythonic的代码能体会到“代码是写
    的头像 发表于 03-06 10:35 3405次阅读

    行为和结构及表现分离的CSS选项卡的代码免费下载

    本文档的主要内容详细介绍的是行为和结构及表现分离的CSS选项卡的代码免费下载。
    发表于 05-30 17:07 2次下载
    行为和结构及表现分离的<b class='flag-5'>CSS</b>选项卡的<b class='flag-5'>代码</b>免费下载

    CSS框架:Materialize的特点和优缺点

    以Google为基础的Materialize CSS融合了JavaScript、CSS和HTML等各种组件。它不但具有一定的响应能力,而且存在较少的浏览器兼容性问题。如果您希望构建一个优雅的UI,那么Materialize就可以
    的头像 发表于 07-01 16:01 4303次阅读

    CSS框架:Tachyons的优缺点

    与其他流行的前端框架不同,Tachyons旨在将CSS规则分解为小型的、可管理的、以及可复用的部件。Tachyons可以帮助开发人员创建出具有高度可读性、能够快速加载和响应的网站,而且无需使用大量CSS代码
    的头像 发表于 07-01 16:57 3531次阅读

    CSS 计数器的数字递增动效技术解析

    CSS 计数器是由 CSS 维护的变量,这些变量可根据 CSS 规则增加从而跟踪使用次数。
    的头像 发表于 10-18 10:09 7666次阅读

    CSS是什么 CSS的工作原理

    CSS的英文全称为CascadingStyleSheets。几个单词拆开翻译,Cascading有大量的意思,Style有风格样式的意思,Sheets有表格的意思,整合在一起翻译为中文意思为层叠样式表。
    的头像 发表于 07-26 14:44 3340次阅读

    CSS3是什么 CSS3的新增特性

    CSS3是CSS(层叠样式表)技术的升级版本,于1999年开始制订,2001年5月23日W3C完成了CSS3的工作草案,主要包括盒子模型、列表模块、超链接方式、语言模块、背景和边框、文字特效、多栏布局等模块。
    的头像 发表于 07-26 15:00 1738次阅读

    如何提高代码性能、使代码远离Bug、令代码优雅

    背景:如何更规范化编写Java代码的重要性想必毋需多言,其中最重要的几点当属提高代码性能、使代码远离Bug、令代码优雅。 一、MyBati
    的头像 发表于 08-17 09:42 1196次阅读