百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

CSS书写规范

zhezhongyun 2024-12-03 06:25 81 浏览

编码规范

CSS样式表是一个序列通用字符集,传输和存储过程中,这些字符必须由支持 US-ASCII(例如 UTF-8, ISO 8859-x, SHIFT JIS 等)字符编码方式编译

文档内嵌样式表编码

When a style sheet is embedded in another document, such as in the STYLE element or "style" attribute of HTML, the style sheet shares the character encoding of the whole document.

当样式出现在其它文档,如 HTML 的 STYLE 标签或标签属性 "style",样式的编码由文档的决定。

文档外链样式表编码

When a style sheet resides in a separate file, user agents must observe the following priorities when determining a style sheet's character encoding (from highest priority to lowest):

An HTTP "charset" parameter in a "Content-Type" field (or similar parameters in other protocols)BOM and/or [@charset ]()or other metadata from the linking mechanism (if any)charset of referring style sheet or document (if any)Assume UTF-8

文档外链样式表的编码可以由以下各项按照由高到低的优先级顺序决定:

  1. HTTP “Content-Type” 字段参数 “charset”(或其它协议相似的参数)
  2. BOM(byte-order mark)和(或)[@charset ]()
  3. Link 中的元数据设置(如果有的话)
  4. 引用样式表字符集或文档编码(如果有的话)
  5. 假定为 UTF-8 编码

样式表编码

Authors using an [@charset ]() rule must place the rule at the very beginning of the style sheet, preceded by no characters. (If a byte order mark is appropriate for the encoding used, it may precede the [@charset ]() rule.)

[@charset ]() must be written literally, i.e., the 10 characters '[@charset ]() "' (lowercase, no backslash escapes), followed by the encoding name, followed by '";'.

  • @charset规则一定要在样式文件的第一行首个字符位置开始,否则的话就会有机会让 BOM 设置生效(如果有设置 BOM 的话)而优于 [@charset ]() 作为样式表的编码
  • @charset ""; 一定要写上,并且用小写字母,不能出现转义符

团队约定

  • 样式文件必须写上 [@charset ]() 规则,并且一定要在样式文件的第一行首个字符位置开始写,编码名用 “UTF-8”
  • 字符 [@charset ]() ""; 都用小写字母,不能出现转义符,编码名允许大小混写
  • 考虑到在使用“UTF-8”编码情况下 BOM 对代码的污染和编码显示的问题,在可控范围下,坚决不使用 BOM。(更多关于 BOM 可参考 BOM的介绍 和 「带 BOM 的 UTF-8」和「无 BOM 的 UTF-8」有什么区别? )

推荐:

@charset "UTF-8";

.jdc{}

不推荐:

/**
 * @desc File Info
 * @author Author Name
 * @date 2015-10-10
 */
 
/* @charset规则不在文件首行首个字符开始 */
@charset "UTF-8";

.jdc{}
@CHARSET "UTF-8";
/* @charset规则没有用小写 */

.jdc{}
/* 无@charset规则 */
.jdc{}

更多关于样式编码:CSS style sheet representation

代码风格

代码格式化

样式书写一般有两种:一种是紧凑格式 (Compact)

.jdc{ display: block;width: 50px;}

一种是展开格式(Expanded)

.jdc{
    display: block;
    width: 50px;
}

团队约定

统一使用展开格式书写样式

代码大小写

样式选择器,属性名,属性值关键字全部使用小写字母书写,属性字符串允许使用大小写。

/* 推荐 */
.jdc{
    display:block;
}
    
/* 不推荐 */
.JDC{
    DISPLAY:BLOCK;
}

选择器

  • 尽量少用通用选择器 *
  • 不使用 ID 选择器
  • 不使用无具体语义定义的标签选择器
/* 推荐 */
.jdc {}
.jdc li {}
.jdc li p{}

/* 不推荐 */
*{}
#jdc {}
.jdc div{}

代码缩进

统一使用四个空格进行代码缩进,使得各编辑器表现一致(各编辑器有相关配置)

.jdc {
    width: 100%;
    height: 100%;
}

分号

每个属性声明末尾都要加分号;

.jdc {
    width: 100%;
    height: 100%;
}

代码易读性

左括号与类名之间一个空格,冒号与属性值之间一个空格

推荐:

.jdc { 
    width: 100%; 
}

不推荐:

.jdc{ 
    width:100%;
}

逗号分隔的取值,逗号之后一个空格

推荐:

.jdc {
    box-shadow: 1px 1px 1px #333, 2px 2px 2px #ccc;
}

不推荐:

.jdc {
    box-shadow: 1px 1px 1px #333,2px 2px 2px #ccc;
}

为单个css选择器或新申明开启新行

推荐:

.jdc, 
.jdc_logo, 
.jdc_hd {
    color: #ff0;
}
.nav{
    color: #fff;
}

不推荐:

.jdc,jdc_logo,.jdc_hd {
    color: #ff0;
}.nav{
    color: #fff;
}

颜色值 rgb() rgba() hsl() hsla() rect() 中不需有空格,且取值不要带有不必要的 0

推荐:

.jdc {
    color: rgba(255,255,255,.5);
}

不推荐:

.jdc {
    color: rgba( 255, 255, 255, 0.5 );
}

属性值十六进制数值能用简写的尽量用简写

推荐:

.jdc {
    color: #fff;
}

不推荐:

.jdc {
    color: #ffffff;
}

不要为 0 指明单位

推荐:

.jdc {
    margin: 0 10px;
}

不推荐:

.jdc {
    margin: 0px 10px;
}

属性值引号

css属性值需要用到引号时,统一使用单引号

/* 推荐 */
.jdc { 
    font-family: 'Hiragino Sans GB';
}

/* 不推荐 */
.jdc { 
    font-family: "Hiragino Sans GB";
}

属性书写顺序

建议遵循以下顺序:

  1. 布局定位属性:display / position / float / clear / visibility / overflow
  2. 自身属性:width / height / margin / padding / border / background
  3. 文本属性:color / font / text-decoration / text-align / vertical-align / white- space / break-word
  4. 其他属性(CSS3):content / cursor / border-radius / box-shadow / text-shadow / background:linear-gradient ...
.jdc {
    display: block;
    position: relative;
    float: left;
    width: 100px;
    height: 100px;
    margin: 0 10px;
    padding: 20px 0;
    font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
    color: #333;
    background: rgba(0,0,0,.5);
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    -o-border-radius: 10px;
    -ms-border-radius: 10px;
    border-radius: 10px;
}

mozilla官方属性顺序推荐

CSS3浏览器私有前缀写法

CSS3 浏览器私有前缀在前,标准前缀在后

.jdc {
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    -o-border-radius: 10px;
    -ms-border-radius: 10px;
    border-radius: 10px;
}

更多关于浏览器私有前辍写法:#Vendor-specific extensions

参考阅读

Google Code Guide

相关推荐

css 垂直居中的几种实现方式(css怎么实现垂直居中)

前言设计是带有主观色彩的,同样网页设计中的css一样让人摸不头脑。网上列举的实现方式一大把,或许在这里你都看到过,但既然来到这里我希望这篇能让你看有所收获,毕竟这也是前端面试的基础。实现方式备注:...

CSS 中各种居中你真的玩明白了么(css中的居中属性)

页面布局中最常见的需求就是元素或者文字居中了,但是根据场景的不同,居中也有简单到复杂各种不同的实现方式,本篇就带大家一起了解下,各种场景下,该如何使用CSS实现居中前言页面布局中最常见的需求就是元...

浅谈3种css技巧——两端对齐(css两侧对齐)

在出里文字比较多的网页,文字对齐其中采用的两端对齐,两端对齐的方法有三种方法,如下:1.使用text-align:justifytext-align:justify属性是全兼容的,使用它实现两端对...

从零开发HarmonyOS(鸿蒙)运动手表小游戏—数字华容道

本个demo将从零基础开始完成鸿蒙小游戏APP在可穿戴设备上的编译,此处以运动手表为例,在项目中我们所使用到的软件为DevEcoStudio,下载地址为:DevEcoStudio下载、DevEco...

教师如何制作随机点名系统,活跃课堂气氛

上课点名抽学生回答问题,做游戏……由老师口头点名,点谁回答总有点老师本人的情绪,且显得毫无趣味,但做一个点名系统,就不一样了,电脑随机抽出的名字,不仅公平,还会给孩子们带来一种不一样的感受。那么怎么做...

看京铁人如何破解电煤运输"烤"验

“天气太热了!空调是我的避暑必备神器再往冰箱里冻些雪糕和西瓜电风扇也要24小时上岗了”近日京津冀地区迎来高温天气小伙伴们都在分享解暑妙招但这些妙招背后都离不开一个字——“电”为确保电力平稳“迎峰度夏”...

回家的路就是最美的风景 幸福就在前方

2025年春运启动以来,无数在外游子踏上归乡旅程。为了帮助更多旅客按时回家过年,还有很多人不分昼夜、不辞辛苦地奔波在铁路线上。“我的列车飞驰而过,那是梦想的前方,回家的路就是最美的风景。”END&l...

如何做出一个香消玉殒的网页文字特效

最近,迷上了CSS3特效,空闲时间学一些小案例,非专业,爱好。不断学习也能掌握一些更为全面的html,css,JavaScript的知识,以小博大,从兴趣出发再掌握更多网页开发知识。闲言少叙,直接开怼...

第1000篇原创,我想对你说______(2021我想对你说1000)

亲爱的小伙伴今天您看到的这篇推送是“北京铁路”发布的第1000篇原创作品!这不仅是一个数字的跨越更是我们一路走来与每一位关注者共同铸就的辉煌里程碑每一篇文章都承载着我们的心血与热情每一次传播都离不开大...

动车组的“家”在哪里?(动车组的"家"在哪里?举例说明)

夜幕降临随着动车组列车驶入站台乘客陆续离开动车组也完成了一天的工作准备启程回“家”有小伙伴儿会问“为什么大多数动车组列车夜间不运行呢?”这是因为白天行驶一天的动车组要利用晚上的时间进行全面检查、维修和...

这套铁路“高考”卷,请你来作答(郑州铁路职业技术学院高考河南录取分数线)

今天是2025年全国高考的第一天小编为大家准备了一套北京铁路版的试卷满分120分共12道单选题快来试试你能得多少分吧!·<animateattributeName="opacity"begi...

HarmonyOS Text组件Span间距解决方案

HarmonyOSText组件Span间距解决方案一、问题分析在HarmonyOS开发中,Text组件内的Span子组件无法直接设置margin/padding属性,需要通过文本级属性实现间距控制。...

考“火车驾驶证”,难不难?(火车驾驶证怎么考需要什么条件)

····<animateattributeName="height"begin="0.1"dur="0.01s"fill="freeze"to="0"/>00:0002:59未加...

高温?京铁人:我有“物理外挂”!(点开看有多爽)

近几日华北地区气温不断上升高温来袭坚守岗位的京铁人开启清凉避暑的“物理外挂”快动动手指点开看看吧·<animateattributeName="opacity"begin="click+0....

2025年Top30 CSS面试题及答案(css常考面试题)

概述CSS(层叠样式表)是构建美观、响应式网站的关键技术。无论您是在准备前端开发者面试还是复习知识,这里都有一份精心挑选的2025年每个开发者都应该知道的30个CSS面试题及答案。1.什么是CSS...