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)

大家都在看

  • 手动模拟JDK动态代理

    作者:赐我白日梦 https://www.cnblogs.com/ZhuChangwu/p/11648911.html 为哪些方法代理? 实现自己动态代理,首先需要关注的点就是,代…

    Java 2023年5月30日
    064
  • Set集合

    一、Set集合简介 Set集合简单来说相当于一个桶,程序可以依次的把多个对象丢进桶中(Set集合) Set继承于Collection接口,是一个不允许出现重复元素,并且无序的集合,…

    Java 2023年6月9日
    065
  • tengine、nginx配置正向代理,其他内网机器通过代理访问外网,支持https

    cd /usr/local/src wget https://tengine.taobao.org/download/tengine-2.3.3.tar.gz tar zxvf t…

    Java 2023年5月30日
    044
  • X86寄存器

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月9日
    075
  • 线程池

    1、池化技术(思想) (1)池化技术:程序运行的本质->占用系统的资源,优化资源的使用便是池化技术 (2)简单理解:实现准备好一些资源,有人要用,就来这个池拿,用完放回即可。…

    Java 2023年6月5日
    061
  • 关于java中使用split方法末尾空值被丢弃的问题

    嗯… 在最近的一次项目中,使用split方法分割字符串后得到的数组与预期不符。 查找原因后发现,使用默认的split方法时,会默认丢弃字符串末尾的空值,而字符串中间的空…

    Java 2023年5月29日
    061
  • 阿里面试:dubbo的服务引用过程

    上篇文章我们已经了解了 Dubbo 服务暴露全过程,这篇文章我就带着大家再来看看 Dubbo 服务引入全流程,这篇服务引入写完下一篇就要来个全链路打通了,看看大家看完会不会有种任督…

    Java 2023年6月9日
    067
  • linux下安装jdk8

    1、下载jdk8安装包 2、拷贝到指定目录下(比如:/usr/package) 3、解压到安装目录下(比如:/usr/soft/java) tar -zxvf jdk-8u121-…

    Java 2023年6月8日
    063
  • Dos基本命令

    打开CMD的方式 开始 >> Windows系统 >> 命令提示符 Win键+R键 >> 输入cmd打开控制台(推荐使用) 在任意文件夹下面,按…

    Java 2023年6月6日
    081
  • 「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之联合索引(十一)

    基于Vue和Quasar的前端SPA项目实战之联合索引(十一) 回顾 通过之前文章基于Vue和Quasar的前端SPA项目实战之动态表单(五)的介绍,关于表单元数据配置相关内容已经…

    Java 2023年6月6日
    070
  • YOLOX 0.1.0 环境配置

    YOLOX训练自己的数据集 一、准备数据集 配置好Pascal VOC格式的数据集,放入datasets文件夹下,或者跟项目名在同一级目录下也行。VOC数据集的格式为: VOCde…

    Java 2023年6月15日
    053
  • Java连载145-对象概论总结

    对象概论总结 抽象过程 每一个对象看起来都有点像一个微型计算机–它具有状态,还具有操作,用户可以要求对象执行这些操作 可以把消息想象为对某个特定对象的方法的调用请求 &…

    Java 2023年6月13日
    080
  • Spring TX 原理

    调试环境:https://gitee.com/jhxxb/MySpringBoot/tree/master/Spring-Base/src/test/java 源码 从 @Enab…

    Java 2023年5月30日
    0221
  • 【LEETCODE】71、验证二叉树的前序序列化

    简单粗暴,代码有待优化,不过自己独立完成,没有参考任何材料,还是比较满意的 package y2019.Algorithm.stack.medium; import java.ut…

    Java 2023年6月5日
    088
  • java的同步方法和同步代码块,对象锁,类锁区别

    java;gutter:true; /*<em> * @author admin * @date 2018/1/12 9:48 * 作用在同一个实例对象上讨论 * sy…

    Java 2023年5月29日
    050
  • Day15

    package com.oop.demo07;public class Person { //1 赋初值 { System.out.println("匿名代码块&quot…

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