首页 > 其他分享 >如何优雅的写 css 代码

如何优雅的写 css 代码

时间:2022-12-26 12:34:51浏览次数:62  
标签:count Sass color 代码 优雅 css background margin CSS

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

内容来源:京东云开发者社区 ​​www.jdcloud.com/​


作者:京东云开发者
链接:https://juejin.cn/post/7181296677607702584
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:count,Sass,color,代码,优雅,css,background,margin,CSS
From: https://blog.51cto.com/u_15714439/5968736

相关文章

  • 阿里达摩院联合上海科大、浙大和新科大将知识引入命名实体识别,摘得10个榜首,荣获SemEva
    背景SemEval(SemanticEvaluation)是由国际计算语言学协会(AssociationforComputationalLinguistics,ACL)下属的SIGLEX主办的在自然语言处理(NLP)领域全球范围内影响力最......
  • WebUploader大文件上传详解及实例代码
    ​ javaweb上传文件上传文件的jsp中的部分上传文件同样可以使用form表单向后端发请求,也可以使用ajax向后端发请求    1.通过form表单向后端发送请求     ......
  • 使用Babel将ES6代码转为ES5代码,从而在现有环境执行。
    https://blog.csdn.net/weixin_44797182/article/details/127622359前言在线转码https://babeljs.io/repl/#https://es6console.com/1.快速入门(1)ES6的某些高级语法在浏......
  • Java代码打包
    Java代码打包一:IDEA工具1、右侧的maven直接clean后package2、终端命令mvncleanpackage3、项目结构,创建工件,选择清单属性,构建工件4、指定主类打包、含多个类的jar打......
  • PE格式:新建节并插入代码
    PE格式是Windows下最常用的可执行文件格式,理解PE文件格式不仅可以了解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,而有些技术必须建立在了......
  • 一文告诉你如何选择低代码供应商?
    低代码(零代码)软件平台、套件、工具和相关服务正在快速地广泛普及和扩展。现在许多人都知道,低代码软件解决方案提供的加速器和自动化,可以加速软件应用程序开发人员的工作……......
  • 一文读懂什么是低代码开发?
    世界在应用程序上运行,商业世界也不例外。**面对变化,企业过去依赖的传统应用程序开发流程可能不再有效。从头开始构建软件解决方案需要花费数月甚至数年的时间来规划、设计......
  • HTML5大文件上传详解及实例代码
    ​ 对于大文件的处理,无论是用户端还是服务端,如果一次性进行读取发送、接收都是不可取,很容易导致内存问题。所以对于大文件上传,采用切块分段上传,从上传的效率来看,利用多......
  • CodeQL的自动化代码审计之路(下篇)
    0x01前言在上一篇文章中,我们基于CodeQL官方提供的sdk实现了自动化查询数据库功能,在文章中也提到实现完整的自动化代码审计还缺少“数据库生成”相应的功能,本文主要针对“数......
  • 三星电视无法下载《条款和条件、隐私政策》的问题 (消息代码: 0-1)
    问题背景自打政治上不睦后,韩国产品在我国就遇冷了,前有乐天玛特,后有三星,特别是三星手机,市占率从第一到现在份额小到归入"其它",另外像三星电视、显示器的遭遇也都差不多。如......