CSS 样式书写顺序及规范
作者:
WangMin
格言:努力做好自己喜欢的每一件事
在项目中,大部分前端程序员都没有按照良好的CSS书写规范来写CSS代码,每次写css样式都是用到什么就在样式表后添加什么,完全没有考虑到样式属性的书写顺序对网页加载代码的影响。后来逐渐才知道正确的样式顺序不仅易于查看,并且也属于css样式优化的一种方式。下面就开始学习吧!!
各种类型属性的书写顺序及作用
书写顺序
- 优先级第一定位属性:position display float left top right bottom overflow clear z-index
- 优先级第二自身属性:width height padding border margin background
- 优先级第三文字样式:font-family font-size font-style font-weight font-varient color
- 优先级第四文本属性:text-align vertical-align text-wrap text-transform text-indent text-decoration letter-spacing word-spacing white-space text-overflow line-height
- 优先级第五css3中新增属性:content box-shadow border-radius transform……
书写顺序的作用
减少浏览器reflow(回流),提升浏览器渲染dom的性能。
- 解析html构建dom树,解析css构建css树:将html解析成树形的数据结构,将css解析成树形的数据结构
- 构建render树:DOM树和CSS树合并之后形成的render树。
- 布局render树:有了render树,浏览器已经知道那些网页中有哪些节点,各个节点的css定义和以及它们的从属关系,从而计算出每个节点在屏幕中的位置。
- 绘制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 样式书写顺序及规范的更多相关文章
- css样式书写顺序
这里推荐先写显示属性,再写自身属性,再写文字属性:并不代表非得按这个顺序写,但这种写法可以使css结构更清晰易读,修改起来比较方便. 而且在团队项目中能更好地提高效率. //显示属性 display ...
- css样式书写的问题
经常遇到前端的朋友问及css样式书写的问题,结合自己实际的工作,自己总结了整理了一下,给大家分享: 一.顺序问题:显示属性-位置属性-元素自身属性-文本属性-其他属性 1.显示属性:z-index.d ...
- CSS 样式书写规范
可能不同团队都有各自的规范,又或者很多人在写 CSS 的时候还是想到什么就写什么,不存在太多的约束. 我觉得 CSS 代码规范还是有存在的必要的,尤其是在团队配合,多人协作下,规范就显得尤为重要. 本 ...
- css样式书写规范
在工作当中css样式是非常重要的,但是咋样书写css样式更重要. 一.css书写规范 1.定位属性:position display float left top right bottom ...
- Discuzx系统 CSS 编码规范,CSS属性书写顺序
1. 属性写在一行内,属性之间.属性名和值之间以及属性与“{}”之间须有空格,例如:.class { width: 400px; height: 300px; } 2. 属性的书写顺序: ...
- CSS样式表的写作规范
推荐大家使用的CSS书写规范.顺序 写了这么久的CSS,但自己都没有按照良好的CSS书写规范来写CSS代码,东写一段西写一段,命名也是想到什么写什么,过一段时间自己都不知道写的是那一块内容, 这样会影 ...
- Mozilla推荐的CSS属性书写顺序及命名规则
传说中的Mozilla推荐 /* mozilla.org Base Styles * maintained by fantasai */ /* Suggested order: * display * ...
- CSS属性书写顺序及命名规则
/* mozilla.org Base Styles * maintained by fantasai */ /* Suggested order: * display * list-style * ...
- CSS样式覆盖顺序
有时候在写CSS的过程中,某些限制总是不起作用,这就涉及了CSS样式覆盖的问题,如下 Css代码 #navigator { height: 100%; width: 200; position: ...
- CSS 样式书写规范+特殊符号
虽然我只是刚踏入web前端开发圈子.在一次次任务里头,我发觉每一次的css命名都有所不同和不知所措.脑海就诞生了一个想法--模仿大神的css命名样式. 毕竟日后工作上,是需要多个成员共同协作的.如果没 ...
随机推荐
- YUM histoy 与 RPM -qa --last
查看Linux yum安装包的安装时间,可以使用以下命令: rpm -qa --last 该命令将显示已安装的所有rpm包及其安装日期和时间. 可以使用管道符 '|' 和 grep 命令来查找特定的包 ...
- ch-manager.sh
[root@dev-clickhouse1 ~]# cat ch-manager.sh #!/bin/bash ch_arr=(ch1-shard1-main ch1-shard2-sub ch2-s ...
- bash: pip3:未找到命令
输入以下命令: 1 sudo apt-get install python3-pip 参考链接: https://www.cnblogs.com/banshaohuan/p/10963547.html
- VScode 中golang 基准测试 go test -bench .
目的:基准测试的主要目的是比较不同实现方式之间的性能差异,找出性能瓶颈. 1 准备以_test.go结尾文件和导入testing包 在命名文件时需要让文件必须以_test结尾,在文件中导入testin ...
- AcWing 4797. 移动棋子题解
算出数值为 \(1\) 的点离 \((3, 3)\) 的距离即可. #include <iostream> #include <cstring> #include <al ...
- 《深入理解Java虚拟机》读书笔记:Class类文件的结构
Class类文件的结构 Sun公司以及其他虚拟机提供商发布了许多可以运行在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的的程序存储格式--字节码(ByteCode),从而实现了程序 ...
- python flask 简单应用开发
转载请注明出处: Flask 是一个基于 Python 的微型 Web 框架,它提供了一组简洁而强大的工具和库,用于构建 Web 应用程序.Flask 的主要作用是帮助开发者快速搭建轻量级的.灵活的 ...
- ChatGPT接入Siri(保姆级教程)
今天,我将为大家分享如何将ChatGPT应用集成到苹果手机的Siri中 (当然手机是需要魔法(TZ)的) 第一步:获取OpenAPI的Key 提取API网址:https://platform.open ...
- 作为一个客户经理你一个如何给客户介绍API接口
随着科技的发展,API(Application Programming Interface,应用程序接口)的应用已经逐渐普及,而API接口作为现代企业实现智能化运营和管理的重要工具之一,也备受关注.作 ...
- QA|selenium在send_keys时报错dict object has no attribute ''|UI自动化测试
Q:selenium在send_keys时报错dict object has no attribute 'send_keys',如下图 增加了print(type(e1))发现确实是字典类型,怪了,按 ...