CSS编码规范

———————- 加微信和老王聊技术、聊产品、 聊运营。 定期组织主题性远程语音讨论。 进群加微信 技术微信群: 加微信:wonter 发送:技术Q 医疗微信群: 加微信:wonter 发送:医疗Q

———————-

推荐阅读:

CSS 作为网页样式的描述语言,在百度一直有着广泛的应用。本文档的目标是使 CSS 代码风格保持一致,容易被理解和被维护。

虽然本文档是针对 CSS 设计的,但是在使用各种 CSS 的预编译器(如 less、sass、stylus 等)时,适用的部分也应尽量遵循本文档的约定。

2 代码风格

解释:

UTF-8 编码具有更广泛的适应性。BOM 在使用程序或工具处理文件时可能造成不必要的干扰。

示例:

示例:

示例:

示例:

解释:

常见不可分割的场景为URL超长。

示例:

示例:

示例:

解释:

不允许使用单引号,不允许不使用引号。

示例:

示例:

示例:

3 通用

解释:

在性能和维护性上,都有一定的影响。

示例:

示例:

示例:

解释:

border / margin / padding 等缩写会同时设置多个属性的值,容易覆盖不需要覆盖的设定。如某些方向需要继承其他声明的值,则应该分开设置。

示例:

解释:

  • Formatting Model 相关属性包括: position / top / right / bottom / left / float / display / overflow
  • Box Model 相关属性包括: border / margin / padding / width / height
  • Typographic 相关属性包括: font / line-height / text-align / word-wrap
  • Visual 相关属性包括: background / color / transition / list-style

另外,如果包含 content 属性,应放在最前面。

示例:

解释:

触发 BFC 的方式很多,常见的有:

  • float 非 none
  • position 非 static
  • overflow 非 visible

另需注意,对已经触发 BFC 的元素不需要再进行 clearfix。

解释:

必须注意的是,仅在设计上 确实不允许任何其它场景覆盖样式 时,才使用内联的 !important 样式。通常在第三方环境的应用中使用这种方案。下面的 z-index 章节是其中一个特殊场景的典型样例。

解释:

同层的多个元素,如多个由用户输入触发的 Dialog,在该层级内使用相同的 z-index 或递增 z-index

建议每层包含100个 z-index 来容纳足够的元素,如果每层元素较多,可以调整这个数值。

解释:

可控环境分成两种,一种是自身产品线环境;还有一种是可能会被其他产品线引用,但是不会被外部第三方的产品引用。

不建议取值为 2147483647。以便于自身产品线被其他产品线引用时,当遇到层级覆盖冲突的情况,留出向上调整的空间。

解释:

第三方环境对于开发者来说完全不可控。在第三方环境下的元素,为了保证元素不被其页面其他样式定义覆盖,需要采用此做法。

4 值与单位

解释:

文本类型的内容可能在选择器、属性值等内容中。

示例:

示例:

示例:

示例:

示例:

解释:

带有alpha的颜色信息可以使用 rgba()。使用 rgba() 时每个逗号后必须保留一个空格。

示例:

示例:

示例:

示例:

解释:

示例:

5 文本编排

解释:

所谓英文 Family Name,为字体文件的一个元数据,常见名称如下:

字体操作系统Family Name 宋体 (中易宋体) Windows SimSun 黑体 (中易黑体) Windows SimHei 微软雅黑 Windows Microsoft YaHei 微软正黑 Windows Microsoft JhengHei 华文黑体 Mac/iOS STHeiti 冬青黑体 Mac/iOS Hiragino Sans GB 文泉驿正黑 Linux WenQuanYi Zen Hei 文泉驿微米黑 Linux WenQuanYi Micro Hei

示例:

解释:

示例:

示例:

解释:

由于 Windows 的字体渲染机制,小于 12px 的文字显示效果极差、难以辨认。

解释:

由于中文字体没有 italic 风格的实现,所有浏览器下都会 fallback 到 obilique 实现 (自动拟合为斜体),小字号下 (特别是 Windows 下会在小字号下使用点阵字体的情况下) 显示效果差,造成阅读困难。

解释:

CSS 的字重分 100 – 900 共九档,但目前受字体本身质量和浏览器的限制,实际上支持 400700 两档,分别等价于关键词 normalbold

示例:

解释:

line-height 设置为数值,浏览器会基于当前元素设置的 font-size 进行再次计算。在不同字号的文本段落组合中,能达到较为舒适的行间间隔效果,避免在每个设置了 font-size 都需要设置 line-height

line-height 用于控制垂直居中时,还是应该设置成与容器高度一致。

示例:

6 变换与动画

示例:

解释:

  • transform: translate(npx, npx);
  • transform: scale(n);
  • transform: rotate(ndeg);
  • opacity: 0..1;

典型的,可以使用 translate 来代替 left 作为动画属性。

示例:

7 响应式

示例:

示例:

8 兼容性

解释:

标准属性放在最后,按冒号对齐方便阅读,也便于在编辑器内进行多行编辑。

示例:

解释:

如果能通过合理的 HTML 结构或使用其他的 CSS 定义达到理想的样式,则不应该使用 hack 手段解决问题。通常 hack 会导致维护成本的增加。

解释:

尽量使用符合 CSS 语法的 selector hack,可以避免一些第三方库无法识别 hack 语法的问题。

示例:

示例:

Original: https://www.cnblogs.com/Javame/p/14681551.html
Author: CTO老王
Title: CSS编码规范

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/537026/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java (计算机编程语言)

    Java (计算机编程语言) Java (计算机编程语言)https://baike.baidu.com/item/Java/85979?fr=aladdin Original: …

    Java 2023年5月29日
    064
  • 新款F系列虚拟机

    我们宣布,10款全新的优化版虚拟机今天正式面市。这款名为”F系列”的全新虚拟机,基于因特尔2.4 千兆赫Xeon® E5-2673 v3(Haswell)处…

    Java 2023年5月30日
    086
  • 数据库

    1、数据库的基本概念 1.1 数据库是干什么的? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。 每个数据库都有一个或多个不同的 API 用于创建,访问,管…

    Java 2023年6月7日
    098
  • 中招了,重写TreeMap的比较器引发的问题…

    需求背景 给一个无序的map,按照value的值进行排序,value值越小,排在越前面。 key和value都不为null value可能相同 返回结果为一个相同的有序map 代码…

    Java 2023年5月29日
    065
  • Kotlin学习快速入门(9)—— 密封类的使用

    原文地址: Kotlin学习快速入门(9)—— 密封类的使用 – Stars-One的杂货小窝 代码逻辑中,很多时候我们会需要分支语句,来根据数据的情况走不同的处理逻辑…

    Java 2023年6月13日
    0104
  • 3-面向对象(1)

    一、类与对象 1.面向对象学习的三条主线 Java类及类的成员:属性、方法、构造器;代码块、内部类 面向对象的大特征:封装性、继承性、多态性、(抽象性) 其它关键字:this、su…

    Java 2023年6月7日
    072
  • 如何防止订单重复支付?

    大家好,我是老三,想必大家对在线支付都不陌生,今天和大家聊聊如何防止订单重复支付。 看看订单支付流程 我们来看看,电商订单支付的简要流程: 从下单/计算开始: 下单/结算:这一步虽…

    Java 2023年6月5日
    090
  • springboot nginx 配置

    安装nginx参考本人另一篇博客:http://www.cnblogs.com/gmq-sh/p/5750833.html spring-boot需要启动nginx的,用于监听启动…

    Java 2023年5月30日
    059
  • Mybatis系列全解(一):手写一套持久层框架

    Mybatis系列全解(一):手写一套持久层框架 Mybatis系列全解(一):手写一套持久层框架 Mybaits系列全解 (持续更新) 一、JDBC是谁? + * –…

    Java 2023年6月7日
    084
  • 设计模式二:webMVC

    model:观察者模式,对view和controller一无所知,即完全decouple。仅知道有observer需要它去通知 view:组合模式实现的jsp等用户界面。当发生页面…

    Java 2023年6月9日
    061
  • 元宇宙(metaverse)中文社区-工程实践

    欢迎访问元宇宙中文社区,在这里大家可以提问,回答,分享,诉说,一起构建一个元宇宙社区。 2021年”元宇宙”的这个词的火热程度在业内绝对不亚于疫情,趁着这个…

    Java 2023年6月5日
    097
  • v-if判断是否包含字符串

    csharp;gutter:true;删除 signature:祸兮福所倚,福兮祸所伏 Original: https://www.cnblogs.com/xnuuuu/p/132…

    Java 2023年6月9日
    073
  • Spring 中经典的 9 种设计模式,打死也要记住啊!

    来源:blog.csdn.net/caoxiaohong1005 转载: https://mp.weixin.qq.com/s/HdOKIp_rFgX-h65M0pRK9Q 1.简…

    Java 2023年5月30日
    070
  • MySQL的优化

    字符串char 定长字符串如 char(8) 低于8个,剩下的用空格填充,高于8个,报异常varchar 不定长字符串如 varchar(8)低于8个,经历收缩过程,变为实际大小….

    Java 2023年6月6日
    0106
  • Spring(一)-初识 + DI+scope

    1、获取bean实例的三种方式 UTF-8 4.3.18.RELEASE 1.16.18 4.11 org.springframework spring-beans ${sprin…

    Java 2023年6月15日
    082
  • java基础篇—-数组

    数组是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来唯一确定数组中的元素. 一、一维数组 1.声明 数据类型[] 数组名; 或者是 数据类…

    Java 2023年6月8日
    081
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球