前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >web前端入门到实战:18种推荐的CSS命名和书写规范

web前端入门到实战:18种推荐的CSS命名和书写规范

原创
作者头像
用户5827212
修改于 2019-11-25 06:45:28
修改于 2019-11-25 06:45:28
44900
代码可运行
举报
文章被收录于专栏:前端入门学习前端入门学习
运行总次数:0
代码可运行

选择器的命名规范

1.模块化命名

例如:

  • 与布局相关的样式以“g”为开头。如“g-content”和“g-header”;
  • 与挂钩相关的样式以“j”为开头。如“j-open”和“j-request”;
  • 与元件相关的样式以“m”为开头。如“m-dropMenu”和“m-slider”;
  • 与状态相关的样式以“s”为开头。如“s-current”和“s-selected”;
  • 与工具相关的样式以“u”为开头。如“u-clearfix”和“u-ellipsis”。

“工具”是指与业务逻辑解耦的,能够重用的样式;“元件”是指自定义的可重用且可移植的基本网页元素;“挂钩”是指供JavaScript操纵的样式。

以上的说明只是举例,大家可以根据项目需求自定义开头的字符,这样做的目的是使CSS代码整洁易维护。

在这里小编建了一个前端学习交流扣扣群:132667127,我自己整理的最新的前端资料和高级开发教程,如果有想需要的,可以加群一起学习交流

2.选择器皆为小写形式

推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.g-first-header
{
 line-height: 16px;
}

不推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.g-FirstHeader
{
 line-height: 16px;
}

3.每个选择器独占一列

除最后一个选择器外,其它每一列选择器均以逗号结尾。若用到兄弟元素选择器,则相关符号的左右两端均留出一个半角空格。

推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.g-first-header,
.g-second-header-1 > .g-second-header-2
{
 border: 2px solid #C3C3C3;
}

不推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.g-first-header, .g-second-header-1>.g-second-header-2
{
 border: 2px solid #C3C3C3;
}

4.避开HTML标记

构建选择器时应尽量采用语义明确的类别名称,避开HTML标记,因为一旦HTML的结构产生更动,则与此对应的样式也就无效了。尽量将样式与结构分离,这样会使得阶层式样式表在日后更易被维护。

推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.g-content .g-item
{
 flex-basis: 20%;
}

不推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.g-content li
{
 flex-basis: 20%;
}

5.少用ID

ID的唯一性注定了它所对应的元素的样式就是一次性的,无法重用,一旦HTML结构发生变化,套用ID的选择器就要随之修改。另一个重要的原因是:ID的权重值是最高的,这可能会导致日后添加的样式无法复写原先的样式。

推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.g-special-content
{
 height: 100px;
 width: 300px;
}

不推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#special-content
{
 height: 100px;
 width: 300px;
}

属性的书写规范

1.按顺序排列属性

每条规则下的属性在书写时,应按类别进行分组,其排列顺序如下:

  1. 位置:bottom、float、display、left、position、right、top和z-index等;
  2. 大小:height、margin、padding和width等;
  3. 版式:color、font、letter-spacing、line-height和text-align等;
  4. 背景:background等;
  5. 其它:animation和transition等。

2.缩写属性

有些属性是可以合在一块的,既精简代码,又便于阅读。

推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.test-selector-1
{
 padding: 3px 5px;
}

不推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.test-selector-1
{
 padding-top: 3px;
 padding-right: 5px;
 padding-bottom: 3px;
 padding-left: 5px;
}

3.去除小数开头的0

推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.test-selector-2
{
 font-size: .5em;
}

不推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.test-selector-2
{
 font-size: 0.5em;
}

4.缩写十六进位值

推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.test-selector-3
{
 background-color: #0b0;
}

不推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.test-selector-3
{
 background-color: #00bb00;
}

5.合理使用引号

对于“font-family”属性来说,我们通常会以引号夹住带有空格的字体名称,而对于不具备这些特征的一般字体来说,引号存在与否并不影响页面的显示效果。为了保证视觉上的统一,最大程度相容各种浏览器,建议你在所有字体名称的两端均加上引号。

推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.test-selector-4
{
 font-family: "Microsoft YaHei", "微软正黑体", "\5b8b\4f53";
}

不推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.test-selector-4
{
 font-family: "Microsoft YaHei", 微软正黑体, \5b8b\4f53;
}

个别属性的值含有“url()”字串,开发者需要往其中传入一个资源路径。请注意,在低版本的Internet Explorer中,路径中的空格有可能无法被辨识,导致资源无法被找到。为保险起见,不论路径中是否含有空格,你传入的路径两端最好都加上引号。

推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.test-selector-5
{
 background-image: url(../Images/BacPic.png”);
}

不推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.test-selector-5
{
 background-image: url(../Images/BackPic.png);
}

6.避开!important

“!important”会给日后的维护带来麻烦,使开发者难以查找样式问题。如果在书写时发现新样式无法复写旧样式。通常有两个原因:要么新样式写在了旧样式的前面,要么新样式对应的选择器的权重比旧样式的更低。针对后一种情况,只要增加新样式选择器的权重值就可以完全避开这个问题,无需用到“!important”。

推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.test-selector-6 .test-selector-7
{
 font-size: 16px;
}

.test-selector-6 .test-selector-7 .test-selector-8
{
 font-size: 14px;
}

不推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.test-selector-6 .test-selector-7
{
 font-size: 16px;
}

.test-selector-8
{
 font-size: 14px !important;
}

7.规范注释

在单列注释中,星号与内容之间留一个半角空格。

推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/* 这是第一段注释文字。 */

// 这是第二段注释文字。复制代码

不推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/*这里是一段注释文字。*/

//这是第二段注释文字。复制代码

在多列注释中,多个星号要排成一条线。星号与内容之间同样留一个半角空格。

推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 这里是一段注释文字。
 * 这是第二段注释文字。
 */

不推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
*这里是一段注释文字。
*这是第二段注释文字。
*/

在文档注释中,除了要按照多列注释的写法以外,还要用标识符来说明文档中的某一部分,标识符后的冒号右侧与说明文字之间留一个半角空格。

推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**

* @name: 文件名;

* @description: 描述文字;

* @author: 张三、李四;

* @update: 2018年12月19日。

*/

不推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**

* @name:文件名;

* @description:描述文字;

* @author:张三、李四;

* @update:2018年12月19日。

*/

8.将标准属性置于底部

有些属性在部分浏览器中尚未完全标准化,每家浏览器开发商对这些属性的实现效果或许并不统一,因此目前需要在开头加入浏览器厂商的专有字符串。因此同一个属性需要写多次,但有一条需要注意:将不带前置标记的属性置于最下方。

推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.test-selector-9
{
 opacity: 0;
 -webkit-transition: opacity 3s;
 -moz-transition: opacity 3s;
 -ms-transition: opacity 3s;
 -o-transition: opacity 3s;
 transition: opacity 3s;
}

不推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.test-selector-9
{
 opacity: 0;
 -webkit-transition: opacity 3s;
 transition: opacity 3s;
 -moz-transition: opacity 3s;
 -ms-transition: opacity 3s;
 -o-transition: opacity 3s;
}

9.注意标点符号

每个属性独占一列。紧接样式属性的冒号,其后面要留一个半角空格。值以分号结尾。

推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.test-selector-10
{
 opacity: .5;
}

不推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.test-selector-10
{
 opacity:.5
}

10.样式块间留一空行

样式选择器及其样式块与周遭内容要保留一空行以避免内容过于拥挤,妨碍寻找。

推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.test-selector-11
{
 opacity: 0.5;
}

.test-selector-12
{
 font-size: 16px;
}

.test-selector-13
{
 overflow: hidden;
}

不推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.test-selector-11
{
 opacity: 0.5;
}
.test-selector-12
{
 font-size: 16px;
}
.test-selector-13
{
 overflow: hidden;
}

11.将过长的内容折为若干列

同一属性的值不止一个或值过长时,以逗号分割这些值,每个逗号后添加一个空格,过长的值可以另起一列。

推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.test-selector-14
{
 linear-gradient(135deg, deeppink 25%, transparent 25%) - 50px 0,
 linear-gradient(225deg, deeppink 25%, transparent 25%) - 50px 0,
 linear-gradient(315deg, deeppink 25%, transparent 25%),
 linear-gradient(45deg, deeppink 25%, transparent 25%);
}

不推荐的写法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.test-selector-14
{
 linear-gradient(135deg, deeppink 25%, transparent 25%) - 50px 0, linear-gradient(225deg, deeppink 25%, transparent 25%) - 50px 0, linear-gradient(315deg, deeppink 25%, transparent 25%), linear-gradient(45deg, deeppink 25%, transparent 25%);
}

12.避开CSS Hack

所谓“CSS Hack”,就是在样式表中加入少许特殊符号,让能够辨识不同符号的浏览器在同一个元素上计算出来的样式各不相同。出现CSS Hack的原因就在于老式的浏览器(诸如饱受诟病的Internet Explorer 6)对同一套样式表的计算结果与其它浏览器的并不相同,这就很有可能会造成版式上的错乱。因此在过去,我们通常要针对个别怪异的浏览器撰写有针对性的CSS。如width: 300px; _width: 200px;对其它浏览器来说,该选择器的宽度值应为300个像素,但IE 6能够辨识出底线,因此它计算出的宽度就是200个像素。

13.减少使用影响性能的属性

样式表中不要含有过多的滤镜表达式和repeat关键字等,这些属性会降低网页的渲染性能。若要重复背景图片,那么原图的宽高各不小于8px。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
Python编程思想(12):for-in循环
for-in循环可以用于遍历范围、列表、元素和字典等可迭代对象包含的元素。for-in循环的语法格式如下:
蒙娜丽宁
2020/06/16
3.7K0
【Python入门第十讲】字典
字典(Dictionary)是 Python 中常用的数据结构之一,用于存储键值对(key-value pairs)。字典的特点是可变的、无序的,且键(key)必须是唯一的,但值(value)可以重复。
不惑
2024/02/01
2350
【Python入门第十讲】字典
python中字典的排序(Ordered
Help on built-in function sorted in module builtins:
py3study
2020/01/06
2.6K0
Python字典不是不可以排序,是你方法没用对!
摘要:排序是个古老的话题,不过对于字典的排序,常常会让 小白手足无措。好像没有找到可以排序字典的函数呢!到底是按key排序,还是按value排序呢?字典到底可不可以按value排序呢?排完序后,还可以通过key检索吗?当然,还会抛出很多问题,而本文将完美地给出了这些问题的答案!
蒙娜丽宁
2021/02/19
1.1K0
网络工程师学Python-5-Python 字典
Python 字典(Dictionary)是一种可变、无序、键值对(Key-Value Pair)的数据结构,用于存储和管理一组数据。字典通过键(Key)来访问对应的值(Value),类似于实际生活中的字典,可以通过关键词找到对应的解释或定义。
网络技术联盟站
2023/04/17
9830
网络工程师学Python-5-Python 字典
Python全网最全基础课程笔记(八)——字典,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!
get() 方法提供了一种更安全的访问字典项的方式,如果指定的键不存在,则返回一个默认值(默认为 None),而不是抛出 KeyError。
小白的大数据之旅
2024/11/20
1720
Python全网最全基础课程笔记(八)——字典,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!
Python之有序字典(OrderedDict)与 普通字典(dict)
之前我认为python中的字典是无序的,因为它是按照hash来存储的,最近开发过程中对数据序列化之后,返回了OrderedDict类型数据,返回数据格式如下
SEian.G
2021/10/22
3.2K0
day08-字典
字典(Dict)是一种可变、无序的数据类型;那等等...我们回忆一下,字符串列表元祖是什么样的?
似小陈吖
2024/01/18
1480
13 个非常有用的 Python 代码片段,建议收藏!
假设我们在 Python 中有两个列表,我们希望将它们合并为字典形式,其中一个列表的项作为字典的键,另一个作为值。这是在用 Python 编写代码时经常遇到的一个非常常见的问题
周萝卜
2022/09/28
7370
13 个非常有用的 Python 代码片段,建议收藏!
详解Python中列表、元组、字典,所有操作,一网打尽
列表(List)是Python中最常用的数据结构之一,它是一个可变的、有序的元素集合。
统计学家
2024/09/23
1420
详解Python中列表、元组、字典,所有操作,一网打尽
Python内置数据结构之字典(完整版)
今天主要讲解上次未完成的内置数据结构-字典。小白这几天比较忙,忙的忘记了健身及写作,特发此文以作补偿。 Python字典简介 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 这种key-value存储方式,在放进去的时候,必须根据key算出value的存放位置,这样,取的时候才能根据key直接拿到value。 请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的。 和list比较,di
1846122963
2018/03/09
8790
python 字典一些常见的魔法方法以及遇到的面试题
dict 类型不但在各种程序里广泛使用,它也是 Python 语言的基石。模块的命名空间、实例的属性和函数的关键字参数中都可以看到字典的身影。跟它有关的内置函数都在__builtins__.__dict__模块中。正是因为字典至关重要,Python 对它的实现做了高度优化,而散列表则是字典类型性能出众的根本原因。
用户4945346
2020/07/20
7620
[编程经验] Python之collections模块
collections模块是一个不用不知道,一用就上瘾的模块。因为它提供了几种非常方便的数据结构和方法,在有些情况下特别好用。今天给大家总结一下其中的OrderDict和Counter两个方法,在平时我经常用的方法,希望你也能喜欢它。然后还有比如deque,namedtuple,defaultdict等也是很有的方法,了解了以后重点是熟练的使用,灵活的应用到你的具体任务中,是需要掌握的。 1. OrderDict # Example 1 dict_1 = dict() dict_1['A'] = "I lo
用户1622570
2018/04/11
6800
[PYthon] 字典
Python 中的字典(Dictionary)是一种非常强大且常用的数据结构,它提供了键-值对之间的映射
DevKevin
2024/03/19
1070
[PYthon] 字典
零基础学习 Python 之字典
大家好,这里是零基础学习 Python 系列,在这里我将从最基本的Python 写起,然后再慢慢涉及到高阶以及具体应用方面。我是完全自学的 Python,所以很是明白自学对于一个人的考验,所以在这里我会尽我最大的努力,把 Python 尽可能简单的表述清楚,让更多想要学习 Python 的朋友能够入门。同时写这个教程也算是对自己之前所学知识的一个巩固和提高,喜欢的朋友们可以点个关注,有问题欢迎随时和我交流。本文所有的代码编写均是Python3 版本。
编程文青李狗蛋
2019/11/07
4160
Python学习——collections系列
一 ,计数器(counter) Counter是对字典类型的补充,用于追踪值得出现次数 ps:具备字典的所有功能 + 自己的功能 例: >>> from collections import Counter >>> c = Counter('aadsassdsdads') >>> print(c) Counter({'a':4,'d':4,'s':5}) 基本操作方法: >>> c = Counter('abcdeabcdabcaba') 1.most_common(N)数量从大到小排列,获取
zenRRan
2018/04/10
7100
Python 字典 dict
有时候为了方便起见,就算某个键在映射里不存在,我们也希望在通过 这个键读取值的时候能得到一个默认值。有两个途径能帮我们达到这个目的,一个是通过 defaultdict,这个类型而不是普通的 dict,另一个 是给自己定义一个 dict 的子类,然后在子类中实现 __missing__ 方法。
为为为什么
2022/08/09
8530
Python 字典 dict
13 个非常有用的 Python 代码片段
假设我们在 Python 中有两个列表,我们希望将它们合并为字典形式,其中一个列表的项作为字典的键,另一个作为值。这是在用 Python 编写代码时经常遇到的一个非常常见的问题
Python学习者
2023/03/18
7700
python简单的分析文本
import collections import re #读取tips.txt文件内容,type(mytips)=str with open("tips.txt","r",encoding="utf-8") as tip: mytips=tip.read().lower() #正则去除非中英文字符, strip_file=re.sub(r"\W+","",mytips) print("正则去除非中英文字符:\n{}".format(strip_file)) print() #筛选
py3study
2020/01/02
7280
#小手一抬学Python# Python字典已经掌握了【附源码】
已经学完了列表与元组,那这两个都是按照顺序排列的,所以可以用索引取到值,本篇博客要学习的是字典,由上文可知,字典肯定就是不能按照索引取到值,就是没顺序,非序列的数据结构。
程序员迪迪
2022/01/04
7330
相关推荐
Python编程思想(12):for-in循环
更多 >
LV.8
这个人很懒,什么都没有留下~
目录
  • 1.模块化命名
  • 2.选择器皆为小写形式
  • 3.每个选择器独占一列
  • 4.避开HTML标记
  • 5.少用ID
  • 1.按顺序排列属性
  • 2.缩写属性
  • 3.去除小数开头的0
  • 4.缩写十六进位值
  • 5.合理使用引号
  • 6.避开!important
  • 7.规范注释
  • 8.将标准属性置于底部
  • 9.注意标点符号
  • 10.样式块间留一空行
  • 11.将过长的内容折为若干列
  • 12.避开CSS Hack
  • 13.减少使用影响性能的属性
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档