一、背景

与同事合作开发一个项目,后面修改 CSS 时,发现属性顺序跟我写的不一样

我从事开发前端时,导师是有给我大概指定了一定的书写规范

现在开发时,看到的 CSS 属性排序不一样,看起来有点难受(代码洁癖),修改起来也多少有点不方便

都说 JavaScript 代码要求规范,那么我们仔细说说为啥 CSS 也要有:

注:

这里参考了知乎的一篇文章,他说的理由我表示赞同,这里直接拷贝放这里

CSS 属性排序千千万,我只爱那一种

1、
作为写程序的人,除了希望代码的输出具有确定性;
即每写一行代码我知道我在写什么,我能预知到结果,还希望从代码风格上保持一致;
这样在写类似功能时,写出来的东西是有某种确定性的,代码会有种统一的风格在里面,同时阅读起来会很轻松 2、
当这些看似杂乱无序的属性在书写时遵从一定规律后,改起来会很方便;
比如我习惯将 width,height 这种基本的常用的属性写在元素样式的最前面,我在改的时候就直接到最前面去找 3、
会有一种,哲学上的美;
恩,就是看起来舒心的那种;
没有风格的编码是新手,想到哪写到哪,而具有一定风格的代码或许是老司机,虽然所坚持的风格不一定普适

二、规范 -- 依据 CSS 盒模型定制

流行的CSS顺序有多种书写方式

根据多年编码习惯,我比较偏向依据 盒模型 来定制 CSS 属性编写顺序

并且结合多种书写方式,在此基础上,做了一些调整,整理成自己喜欢的书写风格

大致分为以下几类

1、 content overflow position z-index display float  ...
表示定位/布局的属性(content比较特殊,作为伪元素不可少的,经常放置于第一位) 2、 width height margin padding border ...
表示盒子模型的属性 3、 background ...
表示背景的属性 4、 color font line-height text-* vertical-align ...
字体相关的属性 5、 list-style ...
除 CSS3 外的其他属性 6、 border-radius transform ...
CSS3 属性

常用 CSS 属性排序

/* 每一类的顺序并不严格,可以随意,自己开心就好 */
/* 下面这个是比较通用的样式 */
.el {
/* 表示定位/布局的属性 */
content: ;
overflow: ;
display: ;
visibility: ;
float: ;
clear: ; position: ;
top: ;
right: ;
bottom: ;
left: ;
z-index: ; /* 表示盒子模型的属性 */
width: ;
min-width: ;
max-width: ;
height: ;
min-height: ;
max-height: ;
margin: ;
margin-top: ;
margin-right: ;
margin-bottom: ;
margin-left: ;
padding: ;
padding-top: ;
padding-right: ;
padding-bottom: ;
padding-left: ;
border: ;
border-top: ;
border-right: ;
border-bottom: ;
border-left: ;
border-width: ;
border-top-width: ;
border-right-width: ;
border-bottom-width: ;
border-left-width: ;
border-style: ;
border-top-style: ;
border-right-style: ;
border-bottom-style: ;
border-left-style: ;
border-color: ;
border-top-color: ;
border-right-color: ;
border-bottom-color: ;
border-left-color: ; /* 表示背景的属性 */
background: ;
background-color: ;
background-image: ;
background-repeat: ;
background-position: ; /* 字体相关的属性 */
color: ;
font: ;
font-family: ;
font-size: ;
font-weight: ;
line-height: ;
text-align: ;
text-indent: ;
text-transform: ;
text-decoration: ;
letter-spacing: ;
word-spacing: ;
white-space: ;
vertical-align: ; /* 除 CSS3 外的其他属性 */
outline: ;
list-style: ;
table-layout: ;
caption-side: ;
border-collapse: ;
border-spacing: ;
empty-cells: ;
opacity: ;
cursor: ;
quotes: ; /* CSS3 属性 */
border-radius: ;
transform: ;
}

三、使用工具来约束 CSS 规范

1、csscomb.js --- CSS 编码风格格式化工具

2、Github: csscomb.js

3、csscomb.json / yandex.json / zen.json

预配置三种编码风格,可以挑选自己想要的直接copy代码

4、配置文件:

创建 csscomb.json 配置文件,放于项目根目录

将上面的风格代码 copy 之后,放到 csscomb.json 即可

5、配合开发工具使用

我这里是使用 VS Code,到插件库里搜索下载 CSScomb 安装

该插件支持

.csscomb.json or csscomb.json
.csscomb.js or csscomb.js

等配置文件格式

使用方式:

F1, Ctrl+Shift+P on Windows

Cmd+Shift+P on macOS

6、贴一份自己使用的配置文件

配置代码太长,独立一篇随笔,这里放个链接

CSScomb.js --- 自定义 CSS 编写风格配置文件

CSS格式化---属性排序的更多相关文章

  1. 详解CSS float属性(转)

    详解CSS float属性   阅读目录 基础知识 float的详细细节 float特殊情况 clear属性 清除浮动 float的应用 总结 CSS中的float属性是一个频繁用到的属性,对于初学者 ...

  2. MongoDB学习笔记~根据子集合里某个属性排序

    回到目录 这个问题是这样的,有一个实体dog,里面有集合属性DogHistory,它里面有一些自己的属性,其中一个是SortNum,主要用来进行排序,而且这个排序可以影响主对象,即影响dog类,这个在 ...

  3. CSS will-change 属性

    介绍 如果你注意到在webkit的浏览器上“flicker”一些CSS操作(尤其是变形和动画方面的)的表现,你很可能之前就注意过硬件加速了 CPU.GPU和硬件加速 硬件加速意味着Graphics P ...

  4. css动画属性性能

    性能主要表现:流量.功耗与流畅度 在现有的前端动画体系中,通常有两种模式:JS动画与CSS3动画. JS动画是通过JS动态改写样式实现动画能力的一种方案,在PC端兼容低端浏览器中不失为一种推荐方案. ...

  5. CSS字体属性大全

    文章转自:http://www.10wy.net/Article/CSS/CSS_list_8.html查看更多更专业性的文章请到:网页设计网 CSS字体属性 字体名称属性(font-family) ...

  6. css z-index属性使用过程中遇到的问题

    z-index属性在web开发中会经常使用,其主要的作用简单的说就是把元素的position设置为absolute.fixed之后,可以调节元素在文档上的层级关系.比如经常见到的dialog,mask ...

  7. json对象数组按对象属性排序

    var array = [ {name: 'a', phone: 1, value: 'val_4'}, {name: 'b', phone: 5, value: 'val_3'}, {name: ' ...

  8. js 对象数组根据对象中的属性排序

    function createComparisonFunction(propertyName){ return function(object1,object2){ var value1 = obje ...

  9. 【转】CSS z-index 属性的使用方法和层级树的概念

    文章转自:CSS z-index 属性的使用方法和层级树的概念,另外加了一点自己的注释 CSS 中的 z-index 属性用于设置节点的堆叠顺序, 拥有更高堆叠顺序的节点将显示在堆叠顺序较低的节点前面 ...

随机推荐

  1. 04-树5 Root of AVL Tree(25 分)

    An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child sub ...

  2. PCB一些设置记录

    开始时设置原点,编辑>>原点>>设置 画PCB时,导入后,根据各个模块放好位置 设计>>类>>添加电源类 设计>>规则>>Cle ...

  3. php开发面试题---lavarel和tp的区别是什么(呕心整理)

    php开发面试题---lavarel和tp的区别是什么(呕心整理) 一.总结 一句话总结: 反思的回顾非常有用,因为决定了我的方向和技巧 以战养己,这是非常非常好的方式 主要从大小.功能.安全性.操作 ...

  4. 树莓派2代 B型 4核 1G内存 raspberry pi 2 model B

    树莓派技术交流群:318799602 期盼已久的PI2 已经到货,Element14版,非RS版本.诚信卖家如期发货,不会像某些淘宝卖家一样,没有货还标注现货,发货时间一拖再拖. 树莓派的最新力作!! ...

  5. dotnet core项目的nuget存储路径

    Where's the package location in aspnet core For project.json the nuget directory is in the user prof ...

  6. 使用JQuery对页面进行绑值

    使用JQuery对页面进行绑值 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

  7. spring mvc 初始

    今天带领大家开始第一天的spring  mvc学习 首先我们要下载maven然后配置IDE 然后选择new 新建项目 然后选择maven,然后选择maven的webapp 然后创建springmvc ...

  8. Chosen 的 optgroup 第一级单击的时候选择二级的全部

    相关环境 及 版本 Chosen (v1.6.2) https://harvesthq.github.io/chosen/ jQuery (v1.8.3) 官网 http://jquery.com/ ...

  9. 开发效率优化之Git分布式版本控制系统(一)

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680本篇文章将先从Git分布式版本控制系统来阐述开发效率优化 一,企业 ...

  10. linux nohup python 后台运行无输出问题

    参考:https://blog.csdn.net/zj360202/article/details/78894512 nohup python test.py & nohup python t ...