作者:WangMin

格言:努力做好自己喜欢的每一件事

在项目中,大部分前端程序员都没有按照良好的CSS书写规范来写CSS代码,每次写css样式都是用到什么就在样式表后添加什么,完全没有考虑到样式属性的书写顺序对网页加载代码的影响。后来逐渐才知道正确的样式顺序不仅易于查看,并且也属于css样式优化的一种方式。下面就开始学习吧!!

各种类型属性的书写顺序及作用

书写顺序

  1. 优先级第一定位属性:position display float left top right bottom overflow clear z-index
  2. 优先级第二自身属性:width height padding border margin background
  3. 优先级第三文字样式:font-family font-size font-style font-weight font-varient color
  4. 优先级第四文本属性:text-align vertical-align text-wrap text-transform text-indent text-decoration letter-spacing word-spacing white-space text-overflow line-height
  5. 优先级第五css3中新增属性:content box-shadow border-radius transform……

书写顺序的作用

减少浏览器reflow(回流),提升浏览器渲染dom的性能。

  1. 解析html构建dom树,解析css构建css树:将html解析成树形的数据结构,将css解析成树形的数据结构
  2. 构建render树:DOM树和CSS树合并之后形成的render树。
  3. 布局render树:有了render树,浏览器已经知道那些网页中有哪些节点,各个节点的css定义和以及它们的从属关系,从而计算出每个节点在屏幕中的位置。
  4. 绘制render树:按照计算出来的规则,通过显卡把内容画在屏幕上。

css样式解析到显示至浏览器屏幕上就发生在2、3、4步骤,可见浏览器并不是一获取到css样式就立马开始解析而是根据css样式的书写顺序将之按照dom树的结构分布render样式,完成第2步,然后开始遍历每个树结点的css样式进行解析,此时的css样式的遍历顺序完全是按照之前的书写顺序。

这里大家可能不是很理解,但只要记住书写样式时按照上面的书写顺序就会提高程序的性能与网页的流畅度。

<div id="box"></div>

未按照属性书写顺序:

#box{
width:200px;
line-height: 30px;
height:200px;
color:blue;
background:lightgoldenrodyellow;
float:right;
}

按照属性书写顺序:(推荐使用)

#box{
float:right;
width:200px;
height:200px;
background:lightgoldenrodyellow;
color:blue;
line-height: 30px;
}

CSS 书写规范

1 、使用CSS缩写属性

CSS有些属性是可以缩写的,比如padding,margin,font等等,这样精简代码同时又能提高用户的阅读体验。如下:

未缩写之前:

#box p{
border-top-style: none;
padding-left: 10px;
padding-right: 20px;
padding-top: 40px;
padding-bottom: 50px;
font-size: 12px;
font-family: "微软雅黑";
line-height: 30px;
}

缩写之后:(推荐使用)

#box p{
border-top: 0;
padding:40px 20px 50px 10px;
font:12px/40px "微软雅黑";
}

简写font属性需要注意以下几点:

  • 按照font-style font-variant font-weight font-size/line-height font-family顺序来写;
  • 先写字体大小在写字体;
  • font-size/line-height作为一组使用,中间用斜杠区分;
  • 多个值之间用空格分开;
  • 多个字体之间用逗号分开。

2、去掉小数点前的“0”

当属性值为小数并且小数点前面为0时,我们可以把0去掉,只需要将小数点与小数点后面的数字写出来就可以了。 如下:

未去0之前:

font-size:0.9rem;

去0之后:(推荐使用)

font-size:.9rem;

3、16进制颜色代码缩写

有些颜色代码是可以缩写的,我们就尽量缩写吧,提高用户体验为主。颜色代码是用十六进制来表示的,当颜色代码如下时可以进行缩写:

未缩写之前:

background:#ff0000;

缩写之后:(推荐使用)

background:#f00;

4、连字符CSS选择器命名规范

1)长名称或词组可以使用中横线来为选择器命名。

2)下划线 ' _' 禁止出现在class命名中,全小写,统一使用 '-' 连字符。原因如下:

  • 浏览器兼容问题 (比如使用_tips的选择器命名,在IE6是无效的)
  • 能良好区分JavaScript变量命名(JS变量命名是用“_”)

正确命名方法如下:

#box-text{
border-top: 0;
background:#f00;
padding:40px 20px 50px 10px;
font:12px/40px "微软雅黑";
}

5、不要随意使用Id

id在JS是唯一的,不能多次使用,而使用class类选择器却可以重复使用,另外id的优先级优先与class,所以id应该按需使用,而不能滥用。

6、为选择器添加状态前缀

有时候可以给选择器添加一个表示状态的前缀,让语义更明了,比如下图是添加了“.is-”前缀。

未添加了“.is-”前缀之前:

.test{
background:#f00;
}

添加了“.is-”前缀之后:(推荐使用)

.is_test{
background:#f00;
}

7、删除CSS属性值为0的单位。

8、删除无用CSS样式。

9、使用有意义的名称,使用结构化或者作用目标相关的,而不是抽象的名称。

10、尽量不缩写,除非一看就明白的单词。

11、一律小写,不要使用驼峰命名法,例如:className。

CSS 命名规范(规则)

1、页面结构

网页结构 CSS命名
header
内容 content/container
页面主体 main
footer
导航 nav
侧栏 sidebar
栏目 column
页面外围控制整体佈局宽度 wrapper
左右中 left right center

2、导航

网页结构 CSS命名
导航 nav
主导航 mainbav
子导航 subnav
顶导航 topnav
边导航 sidebar
左导航 leftsidebar
右导航 rightsidebar
菜单 menu
子菜单 submenu
标题 title
摘要 summary

3、功能

网页结构 CSS命名
标志 logo
广告 banner
登陆 login
登录条 loginbar
注册 register
搜索 search
功能区 shop
标题 title
加入 joinus
状态 status
按钮 btn
滚动 scroll
标籤页 tab
文章列表 list
提示信息 msg
当前的 current
小技巧 tips
图标 icon
注释 note
指南 guild
服务 service
热点 hot
新闻 news
下载 download
投票 vote
合作伙伴 partner
友情链接 friendlink
版权 copyright
4、CSS样式表文件命名
所表示的文件 文件名
-- --
主要的 master.css
模块 module.css
基本共用 base.css
布局、版面 layout.css
主题 themes.css
专栏 columns.css
文字 font.css
表单 forms.css
补丁 mend.css
打印 print.css
5、css的注释方法
/* start*/
css样式区
/* End */

6、class的命名:

1)颜色 : 使用颜色的名称或者16进制代码,如下:

.yellow{color:yellow}
.f00{background:#f00}
.ff8600 {color: #ff8600}

2)字体大小 : 直接使用"font+字体大小"作为名称,如下:

.font12px{font-size:12px}
.font1rem {font-size: 1rem; }

3)对齐样式 : 使用对齐目标的英文名称,如下:

.left { float:left; }
.bottom { float:bottom; }

4) 标题栏样式,使用"类别+功能"的方式命名,如下:

.hotnews { }
.hotproduct { }

以上仅是个人见解,若有不足之处欢迎在下方评论指出,那就先分享到这里!! 后续继续更新!!

CSS 样式书写顺序及规范的更多相关文章

  1. css样式书写顺序

    这里推荐先写显示属性,再写自身属性,再写文字属性:并不代表非得按这个顺序写,但这种写法可以使css结构更清晰易读,修改起来比较方便. 而且在团队项目中能更好地提高效率. //显示属性 display ...

  2. css样式书写的问题

    经常遇到前端的朋友问及css样式书写的问题,结合自己实际的工作,自己总结了整理了一下,给大家分享: 一.顺序问题:显示属性-位置属性-元素自身属性-文本属性-其他属性 1.显示属性:z-index.d ...

  3. CSS 样式书写规范

    可能不同团队都有各自的规范,又或者很多人在写 CSS 的时候还是想到什么就写什么,不存在太多的约束. 我觉得 CSS 代码规范还是有存在的必要的,尤其是在团队配合,多人协作下,规范就显得尤为重要. 本 ...

  4. css样式书写规范

    在工作当中css样式是非常重要的,但是咋样书写css样式更重要. 一.css书写规范 1.定位属性:position  display  float  left  top  right  bottom ...

  5. Discuzx系统 CSS 编码规范,CSS属性书写顺序

    1. 属性写在一行内,属性之间.属性名和值之间以及属性与“{}”之间须有空格,例如:.class { width: 400px; height: 300px; }     2. 属性的书写顺序:    ...

  6. CSS样式表的写作规范

    推荐大家使用的CSS书写规范.顺序 写了这么久的CSS,但自己都没有按照良好的CSS书写规范来写CSS代码,东写一段西写一段,命名也是想到什么写什么,过一段时间自己都不知道写的是那一块内容, 这样会影 ...

  7. Mozilla推荐的CSS属性书写顺序及命名规则

    传说中的Mozilla推荐 /* mozilla.org Base Styles * maintained by fantasai */ /* Suggested order: * display * ...

  8. CSS属性书写顺序及命名规则

    /* mozilla.org Base Styles * maintained by fantasai */ /* Suggested order: * display * list-style * ...

  9. CSS样式覆盖顺序

    有时候在写CSS的过程中,某些限制总是不起作用,这就涉及了CSS样式覆盖的问题,如下 Css代码   #navigator { height: 100%; width: 200; position:  ...

  10. CSS 样式书写规范+特殊符号

    虽然我只是刚踏入web前端开发圈子.在一次次任务里头,我发觉每一次的css命名都有所不同和不知所措.脑海就诞生了一个想法--模仿大神的css命名样式. 毕竟日后工作上,是需要多个成员共同协作的.如果没 ...

随机推荐

  1. Linux-用户管理命令(必须是超级管理员-root)

    useradd   [名字] 创建一个新用户  (home  下创建) useradd -d [路径][名字]   路径中的名字是文件  , 登录用的后面的名字 passwd  [用户名] 设置密码, ...

  2. 【go语言】2.4.1 如何导入和使用包

    在 Go 语言中,包(package)是代码的组织方式.每个 Go 程序都由包构成,程序从 main 包开始运行. 导入包 使用 import 关键字可以导入包.导入的包可以是 Go 标准库中的包,也 ...

  3. WebStorm: 配置React中useState自动补齐功能

    配置如下 模板文本如下所示 const [$STATE$, $SET_STATE$] = useState($INITAL_STATE$) 编辑变量 SET_STATE文本如下所示 concat(&q ...

  4. nuitka 将程序编译为单个exe

    原文链接:https://github.com/Nuitka/Nuitka 在Windows上,有两种模式,一种是将其复制到您公司指定的AppData,也将其用作缓存,另一种是在临时目录中进行.您需要 ...

  5. WEB前端资源网站推荐

    https://www.bootcss.com/ https://www.bootcdn.cn/ http://www.jeasyui.net/plugins/756.html

  6. 对JavaScript中与字符串相关的方法总结

    JavaScript中的字符串是由16位码元code unit组成.通常来说,一个字符=16位码元,该类字符也叫做单码元字符.还有一种字符组成策略是代理对,它由两对16位码元组成,即一个字符对应两个1 ...

  7. 在Godot 3.X中添加触屏摇杆

    开源项目地址:https://github.com/shinneider/godot_touchJoyPad 效果图: 下载项目 方法一 直接从godot assets lib下载 如图,直接下载自动 ...

  8. Jmeter插件PerfMon Metrics Collector安装使用及报错解决

    Jmeter作为一个轻量级的性能测试工具,开源.小巧.灵活的特性使其越来越受到测试人员喜爱.在实际的 项目中,特别是跨地区项目,排除合作方指定要求使用Loadrunner作为性能测试工具外,Jmete ...

  9. 解决软件安装无法自定义文件夹,自动安装在C盘 (Windows系统)

    其实就是软链接的简单应用 1.软件已经自动安装 2.完全退出当前软件 3.通过软件图标的属性找到其实际的安装目录 4.进入该软件的安装目录 5.将该软件整个剪切(你没有看错)到指定文件夹(自定义的安装 ...

  10. 2023-09-30:用go语言,给你一个整数数组 nums 和一个整数 k 。 nums 仅包含 0 和 1, 每一次移动,你可以选择 相邻 两个数字并将它们交换。 请你返回使 nums 中包含 k

    2023-09-30:用go语言,给你一个整数数组 nums 和一个整数 k . nums 仅包含 0 和 1, 每一次移动,你可以选择 相邻 两个数字并将它们交换. 请你返回使 nums 中包含 k ...