如何优雅的写 css 代码

CSS(全称 Cascading Style Sheets,层叠样式表)为开发人员提供声明式的样式语言,是前端必备的技能之一,基于互联网上全面的资料和简单易懂的语法,CSS 非常易于学习,但其知识点广泛且分散,很难做到精通,在我们日常开发中,常常忽视了 CSS 代码的质量,很容易写出杂乱无章的 CSS 文件。

代码优化建议

1. 使用缩写属性精简代码

适用于:margin、padding、border、font、background 等

但并非所有情况下都必须缩写,因为当一个属性的值缩写时,总是会将所有项都设置一遍,而有时候我们不希望设置值里的某些项,这时候需要开发者自行判断。

1.content{ 2 // 缩写前 3 margin-right:16px; 4 margin-top:30px; 5 width:184px; 6 height:32px; 7 background:#FFFFFF 8 margin-left:10px; 9} 10.content{ 11 //缩写后 12 margin:30px 16px 0 10px; 13 width:184px; 14 height:32px; 15 background:#FFFFFF 16}

2. 合并选择器

使用 "," 连接多个选择器定义公用属性,不仅能增加可读性,还能减小 css 文件大小。

1.content{ 2 display: flex; 3 .flush, 4 .include, 5 .underline{ 6 margin-right: 12px; 7 padding: 3px 6px; 8 border: 1px solid #a96161; 9 font-size: 12px; 10 color: #412c2c; 11 } 12 .flush{ 13 color: #FFFFFF; 14 background-color: aqua; 15 } 16 .include{ 17 color: #5d3e3e; 18 background-color: #657f7f; 19 } 20 .underline{ 21 color: #7da938; 22 background-color: #7c6a6a; 23 } 24}

3. 使用更语义化的单词命名 class

命名的时候以 “在你之后开发的人不会产生疑惑” 为目标 如下

1.curr{ 2 color:#FFFFFF; 3 background:red; 4} 5.future{ 6 background:#9f6262; 7} 8// curr 是啥? future又是啥? ⬆️ 9 10.current-count{ 11 color:#FFFFFF; 12 background:red; 13} 14.future-count{ 15 background:#9f6262; 16}

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 个类别归类排列。

1 /* 定位相关 */ 2 position: absolute; 3 top: 0; 4 right: 0; 5 bottom: 0; 6 left: 0; 7 z-index: 100; 8 /* 盒模型相关 */ 9 display: block; 10 float: right; 11 width: 100px; 12 height: 100px; 13 /* 排版相关 */ 14 font: normal 13px "Helvetica Neue", sans-serif; 15 line-height: 1.5; 16 color: #333; 17 text-align: center; 18 /* 可视相关 */ 19 background-color: #f5f5f5; 20 border: 1px solid #e5e5e5; 21 border-radius: 3px; 22 /* 其他 */ 23 opacity: 1;

5. 使用 & 符号引用父选择器

& 是 Sass 和 Less 中提供的语法糖,用于表示对父选择器的引用

优点:非常适合用于编写组件的样式,减少了很多重复单词

缺点:从 HTML 的 class name 中寻找对应样式的成本增加

1.first { 2 .first-title {/* styles */} 3 .first-title:after {/* styles */} 4 .first-content {/* styles */} 5} 6/* 用&引用来优化代码 */ 7.first { 8 &-title { 9 /* styles */ 10 &:after {/* styles */} 11 } 12 &-content {/* styles */} 13}

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 语法对比例子)

1// Less 2.mixin( @count )when( @count > 0 ){ 3 background-color: black; 4} 5.mixin( @count )when( @count <= 0 ){ 6 background-color: white; 7} 8.tag { 9 .mixin(100); 10} 11// Scss 12@function selectCount($count) { 13 @if $count > 0 { 14 return black; 15 } 16 @else { 17 return white; 18 } 19} 20.tag { 21 background-color: checkCount(100); 22}

综上,CSS 作为一门前端必备的基础技能,具有许多原生的痛点。近年来,开发者们也在源源不断地提出了不同的优化方案,我们在日常关注 Vue、React、NodeJS、性能优化等热门前端话题的时候,也不要忘了好好写 CSS 代码呀~

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

点赞
收藏

评论区

加载中...

相关推荐

什么是 CSS?

原文链接:什么是CSS?CSS指层叠样式表(CascadingStyleSheets),理解为CSS样式就可以了。CSS样式有什么作用呢?比如我们在页面中添加了一个div,我想给这个div设置宽度、高度、背景色、阴影、内容字体样式等等,就是通过CSS样式来

2020 全球 CSS 报告,大家都在用什么样的技术?

本文来源与公众号「秋风的笔记」介绍CSS从1994年10月首次被提出,到目前为止已经20余年,但是CSS早已发生了天翻地覆的变化,2020的CSS 又是如何的呢?我们现在可以使用CSSGrid轻松制作动态或响应式的布局,以更少的代码来进行自适应布局。CSSinJS无需依赖全局样式表,我们可以将样式与组件写在一起

CSS预编译器:Sass(入门),更快的前端开发

Sass扩展了CSS3,增加了规则、变量、混入、选择器、继承等等特性。Sass生成良好格式化的CSS代码,易于组织和维护。SASS是对CSS3(层叠样式表)的语法的一种扩充,它可以使用巢状、混入、选择子继承等功能,可以更有效有弹性的写出Stylesheet。Sass最后还是会编译出合法的CSS让浏览可以使用,也就是说它本身的语法并不太容易让浏览

CSS预处理器SASS用法和koala工具的使用

   最近在学习前端的时候,发现了一个SASS(CSS预处理器),感觉在前端布局写css样式来说是相当强大,效率又高,在用到SASS的时候感觉很爽。   首先说一下传统的CSS,在程序员的眼里感觉是一个很麻烦的东西,没有变量,也没有运算,还没有条件语句,感觉写的相当费事。  在人们都感觉费事的同时,真有牛人把CSS加入了编程的元素,这就是(CS

CSS3的基础知识学习(二)

前言:CSS主要是用来修饰标签的样式、使得网页更加美观,其实css的引用有三种方式,但主要是使用链接引用,意思就是我们写一个.css的文件,将样式修饰的控制代码写在这里面,这样控制起来方便快捷。对于CSS的学习,知识点中最重要的部分就是属性和选择器,其次还有页面布局和盒子模型,下面进行学习以及代码效果演示。一、CSS的三种引入

Python+Selenium练习篇之5

前面介绍了,XPath,id,class,linktext,partiallinktext,tagname,name七大元素定位方法,本文介绍webdriver支持的最后一个方法:by\_css。css和XPath类似,也需要掌握一些语法,才能写出正确的,完整的css选择表达式。相关脚本代码如下:codingu