HTML + CSS 编程规范


个人主页:学习前端的小z
个人专栏:HTML5和CSS3悦读
本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论!


文章目录

  • 🍡编程规范 HTML + CSS
    • 🍦命名规范
    • 🍦常用命名
    • 🍦img 标签四要素
    • 🍦标签空行
    • 🍦转义符号
    • 🍦标签书写与嵌套
    • 🍦图片文件命名
  • 🍡CSS书写
    • 🍦注释
      • 🍧文件顶部注释
      • 🍧模块注释
      • 🍧简单注释
      • 🍧特殊注释
    • 🍦空格规范
    • 🍦选择器规范
    • 🍦属性规范
    • 🍦大小写规定
    • 🍦CSS内引号
    • 🍦CSS3兼容前缀
    • 🍦背景URL
    • 🍦CSS书写顺序
    • 🍦链接伪类顺序
    • 🍦CSS复合写法与单例写法
    • 🍦布局方式选择
    • 🍦定位z-index取值范围
    • 🍦css细节优化

🍡编程规范 HTML + CSS

🍦命名规范

HTML + CSS 命名规范

1. 命名需要是具备语义性的单词,不能用 数字 拼音   数字,符号开头正确示范 : wrap description title  content错误示范 :  aaaa a1 $we 4tdds
2. 命名需要多个单词连接的情况下, 标记语言中可以使用 _ - 进行连接 不能直接单词拼接 或者驼峰命名  注意: 书写风格必须统一 不容许出现 _ -一起使用的情况  PS: 更推荐使用 - 这样更清晰.正确示范 :  header-nav content-left slide-bar  错误示范 :  headernav slideBar ContentLeft
3. 命名需要进行适当的缩写, 单词连接层级不要超过4层正确示范 :  head-tit-ico 错误示范 :  header-title-left-logo-icon
4. 不容许通过1、2、3等序号进行命名正确示范: content-product错误示范: content1 content2: 
1. 避免class与ID重名 
2. id用于识别模块或一级结构区域 且必须唯一 不要改动线上项目ID名称

🍦常用命名

header内容contentfooter导航nav
子导航subnav栏目column主体main新闻news
版权copyright文章列表list加入joinus合作伙伴partner
标志logo侧栏sidebar横幅banner状态status
菜单menu子菜单submenu滚劢scroll搜索search
标签页tab提示信息msg小技巧tips标题title
指南guild服务service热点hot下载download
注册regsiter登录条loginbar按钮btn投票vote
注释note友情链接friend-link外套wrap面包屑bread-crumb
当前的current购物车shop图标icon文本txt
容器containerwrap

🍦img 标签四要素

为图像指定 height 和 width 属性是一个好习惯。如果设置了这些属性,就可以在页面加载时为图像预留空间。如果没有这些属性,浏览器就无法了解图像的尺寸,也就无法为图像保留合适的空间,因此当图像加载时,页面的布局就会发生变化。
img标签四要素 width height
四要素的width和height只需要写数字 图片的原始宽度和高度 不需要添加单位, 爬虫需要的是原始图片数据
alt不仅是图片替代文本而且起到让搜索引擎蜘蛛了解图片的内容,便于百度图片的收录以及优化。 alt还可以在图片无法加载的时候 显示图片描述文字 让用户了解这个图是做什么的
title不属于四要素 四要素有 src、width、height、alt

正确示范 : <img src='xxx/xxx.png' width='125' height='125' alt='示范'>
错误示范 :  <img src='xxx/xxx.png' width='125px' height='225px'>

🍦标签空行

HTML标签内部原则上不容许出现无意义的空行 但如果为源码 可基于保证可读性的原则上 对大块分区之间进行空行或 补充注释说明, 禁止出现连续两行以及以上的空行行为

<div class="header">......
</div>
<!-- content start -->
<div class="content"></div><div class="footer"></div>

🍦转义符号

为了避免在多类型HTML标签编辑 查阅 传输中 将符号误认为结构元素或关键字 在使用符号的时候统一用转义符

正确示范 :<p>3&gt;2</p>
错误示范 :<p>3>2</p>

🍦标签书写与嵌套

合理遵守标签书写与嵌套规则 满足w3c规范的同时避免不必要的兼容问题

  1. 所有标签书写必须在半角英文状态下小写输入
  2. 双标签必须闭合 单标签不写闭合符 (/)
  3. 子级标签相对父级标签进行一次TAB缩进 1tab = 2空格
  4. 属性值必须带有引号(单引号 or 双引号) 保证引号风格统一
  5. ul>li ol>li dl>dt>dd 是成套 并且为绝对父子关系标签 不容许在ul直接子代中插入非li的标签
  6. a标签内部不容许嵌套a标签
  7. 除了a之外的行内元素不容许嵌套块元素
  8. p dt h内不能嵌套块元素

🍦图片文件命名

	1. 图片后缀命名一律小写。2. 使用间隔符 - 进行连接。一般背景图片以bg-开头,按钮图片以btn-开头,图标图片以icon-开头,聚合图以spr-开头,后跟英文单词,如果名称过长,适当使用缩写

🍡CSS书写

🍦注释

CSS规则是使用     /*  需要注释的内容  */  进行注释的,即在需要注释的内容前使用 “/*” 标记开始注释,在内容的结尾使用 “*/”结束。

例如:

p {font-size: 14px;                 /* 所有的字体是14像素大小*/
}

🍧文件顶部注释

/** @description: xxxxx 中文说明* @author: zhifu.wang* @update: zhifu.wang (2012-10-17 18:32)*/

🍧模块注释

/* module: module1 by zhifu.wang */ ….
/* module: module2 by zhifu.wang */
模块注释必须单独写在一行

🍧简单注释

单行注释:/* this is a short comment */单行注释可以单独写在一行,也可以写在行尾多行注释:
/** this is comment line 1.* this is comment line 2.
*/多行注释必须写在单独行

🍧特殊注释

用于标注修改、待办等信息
/* TODO: xxxx by zhifu.wang 2012-10-18 18:32 */
/* BUGFIX: xxxx by zhifu.wang 2012-10-18 18:32 */
长度要求
注释中的每一行长度丌超过 40 个汉字,或者 80 个英文字符

🍦空格规范

【强制】 选择器 与 { 之间必须包含空格。

示例: .selector { }

【强制】 属性名 与之后的 : 之间不允许包含空格, : 与 属性值 之间必须包含空格。

示例:

color: red;

🍦选择器规范

【建议】 选择器的嵌套层级应不大于 3 级,位置靠后的限定条件应尽可能精确。

示例:

/* 规范 */
#username input {}
.comment .avatar {}/* 不规范 */
.page .header .login #username input {}
.comment div * {}

【建议】 并集选择器在逗号后换行书写下一个选择器

示例:

/* 规范 */
body,
ul,
p {}/* 不规范 */
body, ul, p {}

🍦属性规范

【强制】 属性定义必须另起一行。

示例:

/* 规范 */
.selector {margin: 0;padding: 0;
}/* 不规范 */
.selector { margin: 0; padding: 0; }

【强制】 属性定义后必须以分号结尾。

示例:

/* 规范 */
.selector {margin: 0;
}/* 不规范 */
.selector {margin: 0
}

🍦大小写规定

css虽然不区分大小写 按照惯例和规定 : 所有css文件中的代码都小写, 
/* 规范 */
#username input {text-align: center;
}/* 不规范 */
#username input {TEXT-ALIGN: center;
}

🍦CSS内引号

CSS内所有需要用到引号的部分统一推荐使用 双引号 (根据公司或者项目组来) 字体数字双引号

content: "."

🍦CSS3兼容前缀

如果使用 CSS3 的属性,如果有必要加入浏览器前缀,则按照

-webkit- / -moz- / -ms- / -o-
的顺序进行添加,标准属性写在最后,并且属性名称要对齐,例如:

div.animation-demo { -webkit-animation: mymove 5s infinite; -moz-animation: mymove 5s infinite; -o-animation: mymove 5s infinite; animation: mymove 5s infinite;
}

🍦背景URL

背景图片 background-image: url() 括号内部地址不使用引号包裹

background-image: url(img/banner.jpg)

🍦CSS书写顺序

良好的CSS书写顺序是前端工程师需要遵守并维护的重要规范

1. 位置属性 display position float overflow z-index list-style clear等可以决定元素渲染位置或层级 以及能够影响其他元素渲染位置或层级的属性
2. 自身属性  width height margin padding border background line-height 等可以影响盒子自身展示的属性
3. 文本属性  color font- text- word- 等作用于文本的样式属性
4. 其他与新增属性 cursor zoom transform box-shadow 等新增属性

原理

1. 浏览器解读HTML是从上之下单行解析, 如果没有良好的书写顺序, 例如先解析了 width height 那预渲染的时候 就会从默认位置 (当前文档流左上角) 进行渲染
2. 如果后续解析到了 位置属性 浏览器需要擦除之前 渲染好的模型 重新根据 渲染基准点(左上角)位置 和层级 进行重绘, 这样导致浏览器会重复解析同一个元素 造成不必要的重绘
3. 良好的书写顺序是 BAT等一线互联网企业都遵守的CSS书写规范 他可以帮助团队成员协作的时候 迅速排查和后期维护

错误示范

.selector {font-size: 12px;width: 150px;float: left;
}

正确示范

.selector {float: left;width: 150px;font-size: 12px;
}

🍦链接伪类顺序

链接的样式请严格按照:a:link-> a:visited-> a:hover-> a:active(LoVeHAte)的顺序添加

🍦CSS复合写法与单例写法

如果对目标样式的子属性需求小于3时 进行单例写法 避免复合写法造成的computed浪费
当子属性需求 大于等于3时 进行复合式写法 避免单例写法过于冗余和字节浪费
PS
margin和padding建议: 合并margin、padding、border的-left/-top/-right/-bottom的设置,尽量使用短名称。

错误示范

.selector {background: red;margin-top: 20px;margin-bottom: 20px;margin-left: 20px;margin-right: 20px;
}

正确示范

div {background-color: red;margin: 20px;
}

🍦布局方式选择

文档流 > 盒子模型距离调整(margin+padding) > 浮动 > 定位

定位元素会脱标并且独立新开文档流层级,高度依赖定位会导致浏览器压力大,并且在后期维护中因为定位元素并不能跟随文档流进行流动,所以维护成本高。

实际开发中 能用文档流+盒子模型处理的布局 轻易不使用浮动 能用浮动处理的布局 不要使用定位 。 只有在最关键的时刻才使用定位进行布局调整。

🍦定位z-index取值范围

合理规划z-index的取值范围 避免和他人组件层级冲突 需要组内协商

公共头部导航1999 - 2100
banner与二维码等弹出层999 - 1900
页面公共底部1999 - 2100
页面公共组件-1 - 999

🍦css细节优化

适当缩写 合理规划 兼容调整

  1. 0后面不需要单位,比如0px可以省略成0,0.8px可以省略成.8px
  2. HEX 16进制颜色代码 对 AABBCC格式缩写为 ABC 例: #336688 => #368
  3. 如果没有边框时,不要写成border:0,应该写成border:none
  4. 为了 SEO 和页面可用性,请使用 text-indent 来隐藏文本内容 text-indent:-9999px
  5. 使用背景图标请使用精灵图(csssprites) 合并图片 制作时颜色相近的放到临近位置
  6. 在H5 DTD规则下 省略 script link style 标签的 type属性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/824364.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter BeanShell调用Java方法加密

1、添加BeanShell前置处理器 由于请求接口时&#xff0c;会传加密参数。加密过程会在请求之前完成&#xff0c;所以需要使用前置处理器中beanshell preprocessor 2、编写BeanShell脚本 ①定义一个beashell变量&#xff1a;phoneNum&#xff0c;在Beanshell中可以直接调用Jmete…

小程序出现 非 h5 平台 :key 不支持表达式 ‘xx‘ 解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 执行代码的时候,uniapp的h5平台可以,但是微信小程序终端报如下错误: 19:37:46.620 提示:非 h5 平台 :key 不支持表达式 docheck_+index,详情参考: https://uniapp.dcloud.io/use

EFK环境搭建(基于K8S环境部署)

目录 一.环境信息二.安装nfs供应商三.安装elasticsearch四.安装kibana组件五.安装fluentd 一.环境信息 1.服务器及k8s版本 IP地址主机名称角色版本192.168.40.180master1master节点1.27192.168.40.181node1node1节点1.27192.168.40.182node2node2节点1.27 2.部署组件版本 序…

go语言并发实战——日志收集系统(三) 利用sarama包连接KafKa实现消息的生产与消费

环境的搭建 Kafka以及相关组件的下载 我们要实现今天的内容&#xff0c;不可避免的要进行对开发环境的配置&#xff0c;Kafka环境的配置比较繁琐&#xff0c;需要配置JDK,Scala,ZoopKeeper和Kafka&#xff0c;这里我们不做赘述&#xff0c;如果大家不知道如何配置环境&#x…

元宇宙-虚拟世界的安全风险如何应对

元宇宙&#xff08;Metaverse&#xff09;是一个虚拟时空间的集合&#xff0c;由一系列的增强现实&#xff08;AR&#xff09;、虚拟现实&#xff08;VR&#xff09;和互联网&#xff08;Internet&#xff09;所组成。这个虚拟时空间是一个持续存在的、由众多虚拟世界互相连接而…

MySQL常见问题汇总

1、"Host is not allowed to connect to this MySQL server" 方法1&#xff1a;GRANT ALL PRIVILEGES ON *.* TO root% WITH GRANT OPTION //赋予任何主机访问数据的权限 方法2&#xff1a;update user set host % where user root; 重启mysql 服务 2、mysqldum…

redis与etcd的对比

1.redis是一种高级的key&#xff1a;value存储系统&#xff0c;其中value支持五种数据类型&#xff1a; 1.1 字符串&#xff08;strings&#xff09; 1.2 字符串列表&#xff08;lists&#xff09; 1.3 字符串集合&#xff08;sets&#xff09; 1.4 有序字符串集合&#xff08;…

STM32 HAL库F103系列之ADC实验(1)

ADC工作原理&#xff1a; 1、输入通道&#xff1a; 2、转换序列&#xff1a; A/D转换被组织为两组&#xff1a;规则组&#xff08;常规转换组&#xff09;和注入组&#xff08;注入转换组&#xff09; 规则组最多可以有16个转换&#xff0c;注入组最多有4个转换 规则组和注入…

Hudi-IDEA编程

项目 一、HudiSparkKafka&#xff08;Scala&#xff09; 配置详见【1.Scala配置】 依赖详见【1.HudiSparkKafka依赖】 1-1 构建SparkSession对象 def main(args: Array[String]): Unit {//1.构建SparkSession对象val spark: SparkSession SparkUtils.createSparkSession(…

中科亿海微-CL1656功能验证开发板

I. 引言 A. 研究背景与意义 CL1656是一款精度高、功耗低、成本低的5V单片低功耗运放&#xff0c;由核心互联公司研发制造&#xff0c;CL1656 是一个 16-bit、快速、低功耗逐次逼近型 ADC&#xff0c;吞吐速率高达 250 kSPS&#xff0c;并且内置低噪声、宽 带宽采样保持放大器。…

基于双向长短期神经网络bilstm的径流量预测,基于gru神经网络的径流量预测

目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 BILSTM神经网络 基于双向长短期神经网络bilstm的径流量预测,基于gru神经网络的径流量预测 完整代码:基于双向长短期神经网络bilstm的径流量预测,基于gru神经网络的径流量预测(代码完整,数据齐全)资源-CSDN文库 https://dow…

HarmonyOS开发实例:【分布式新闻客户端】

介绍 本篇Codelab基于栅格布局、设备管理和多端协同&#xff0c;实现一次开发&#xff0c;多端部署的分布式新闻客户端页面。主要包含以下功能&#xff1a; 展示新闻列表以及左右滑动切换新闻Tab。点击新闻展示新闻详情页。点击新闻详情页底部的分享按钮&#xff0c;发现周边…

Elasticsearch:如何将 MongoDB 数据引入 Elastic Cloud

作者&#xff1a;Hemendra Singh Lodhi Elastic Cloud 是由 Elastic 提供的基于云的托管服务。Elastic Cloud 允许客户在亚马逊网络服务 (AWS)、谷歌云平台 (GCP) 和微软 Azure 上部署、管理和扩展他们的 Elasticsearch 集群。 MongoDB 是一种流行的 NoSQL 文档导向数据库&am…

web安全学习笔记(10)

记一下第十四节课的内容。 一、MySQL学习 数据库基本结构&#xff1a;库——表——列——值 在本地打开navicat&#xff0c;连接数据库&#xff0c;新建一个liuyan库、liuyan库下新建一个member表&#xff1a; 在表里随意添加一些数据&#xff1a; 下面我们学习MySQL查询。新…

36-5 Python 编写poc基础

一、相关概念介绍 在漏洞研究和网络安全领域,常常会遇到一些特定术语和概念,例如PoC、Exploit和Payload。下面是它们的概念介绍: PoC(Proof of Concept): PoC是“Proof of Concept”的缩写,意为“概念验证”或“概念证明”。在网络安全领域,PoC通常指的是一种演示性质…

【微服务】Gateway的基本配置详解

目录 什么是gateway 基本配置详解 1. 路由配置 2. 过滤器配置 3. 路由断言 4. 过滤器工厂 什么是gateway Spring Cloud Gateway 是 Spring Cloud 生态系统中的一个全新的微服务网关&#xff0c;它基于 Spring 5、Project Reactor 和 Spring Boot 2 技术栈&#xff0c;提供…

【Web】NewStarCTF 2022 题解(全)

目录 Week1 HTTP Head?Header! 我真的会谢 NotPHP Word-For-You Week2 Word-For-You(2 Gen) IncludeOne UnserializeOne ezAPI Week3 BabySSTI_One multiSQL IncludeTwo Maybe You Have To think More Week4 So Baby RCE BabySSTI_Two UnserializeT…

iOS知识点 --- Runtime

Objective-C (OC) 中的 Runtime 原理&#xff1a; Objective-C Runtime 是一套用于支持 Objective-C 动态特性的底层 C 语言 API。它为 Objective-C 提供了以下核心功能&#xff1a; 动态类型&#xff1a;在运行时确定对象的确切类型&#xff0c;允许在程序执行过程中进行类型…

C++修炼之路之STL_stack,queue和容器适配器

目录 前言 一&#xff1a;SLT中stack和queue的基本使用 1.在官网中对stack和queue的简单介绍 2.数据结构中栈和队列的基本知识和操作 3. STL中stack的接口函数及使用 4.STL中queue的接口函数及使用 二&#xff1a;容器适配器Container 三&#xff1a;使用容器适配器…

springboot Logback 不同环境,配置不同的日志输出路径

1.背景&#xff1a; mac 笔记本开发&#xff0c;日志文件写到/data/logs/下&#xff0c;控制台报出&#xff1a;Failed to create parent directories for [/data/logs/........... 再去手动在命令窗口创建文件夹data&#xff0c;报Read-only file system 2.修改logback-spri…