HTML编码规范

本篇文章是基于王叨叨大佬师父维护的文档梳理的,有兴趣可以去看一下原文HTML编码规范。

1. 缩进与换行

【建议】 使用 2 个空格作为一个缩进层级,不允许使用tab字符

解释:

​ 具体项目,可以使用2个空格,也可以使用4个空格,依据组内的规范定,但项目内部要统一。

​ 为啥可以用4个空格而不能用tab字符呢?因为虽然tab字符和4个空格表面上看起来实现的效果是一样的。但是在不同的编辑器里tab的长度可能不一样。这会导致有tab字符的代码,用不同的编辑器打开时,格式可能会乱。但是,敲一下tab肯定比敲四下空格的效率要高。目前,很多编辑器都能够将tab字符设置成4个空格(敲一下tab相当于敲了4个空格)。

【强制】 对于style和script中的代码,一级缩进要与style和script标签缩进同级

<!--  样式内容的一级缩进与所属的 style 标签对齐  -->
<style>
.main {color: red;
}
</style><!-- 脚本代码的一级缩进与所属的 script 标签对齐 -->
<script>
document.write("Hello World!");
</script>

【建议】 每行不得超过 120 个字符。

解释:

​ 过长的代码不容易阅读与维护。

2. 命名

【强制】 id、class 必须全字母单词小写,单词间以 - 分隔。

【强制】 class 必须代表相应模块或部件的内容及功能,不得以样式信息进行命名。

示例:

<!-- good -->
<div class="sidebar"></div><!-- bad -->
<div class="left"></div>

【强制】 id必须保证页面的唯一。

【强制】 同一页面,应避免使用相同的name和id。

解释:

​ IE浏览器比较低的版本会混淆元素的 id 和name属性。如此document.getElementById 获取的就不是期望中的结果。

示例:

<input name="foo">
<div id="foo"></div>
<script>
alert(document.getElementById('foo').tagName);
</script>

 ​ 正常应该显示DIV,但在IE7浏览器下显示的却是INPUT。

【建议】 id、class命名,在避免冲突并描述清楚的前提下尽可能短。

【强制】 禁止为了hook脚本,创建无样式信息的class。

解释:

​ hook机制:简单来说就是提前列出所有可能的情况,减少if-else的使用。

​ 不允许 class 只用于JS选择某些元素,class应该具有明确的语义和样式。否则容易导致CSS样式泛滥。

​ 使用id、属性选择作为hook是更好的方式。

3. 标签

【强制】 标签名必须使用小写字母

【强制】 对于无需自闭合的标签,不允许自闭合

解释:

​ 我记得之前看菜鸟的html文档时,里面要求:所有的标签都必须要闭合。所以之前都憨憨的闭合所有标签。查了一下发现:XHTML要求所有标签都闭合,但是HTML5不做强制要求了。所以为了代码简洁、提高效率,无需自闭合的标签不许闭合。

​ 常见无需自闭合标签有:input、br、img、hr等。

示例:

<!-- bad -->
<input type="text" name="title" /><!-- good -->
<input type="text" name="title">

【强制】 对 html5 中规定允许省略的闭合标签,不允许省略闭合标签。

【强制】 标签使用必须符合标签嵌套规则。

规则:

  • 块级元素能包含块级元素和内联元素,内联元素只能包含内联元素。
  • 标题和段落中不能包含块级元素。
  • 块级元素与块级元素并列,内联元素与内联元素并列。

例如:div不得置于p和h1~h6中,tbody必须置于table中。

【建议】 HTML标签的使用应该遵循标签的语义。

常见标签语义:

  • p 段落
  • h1~h6 层级标题
  • strong、em 粗体、斜体强调
  • ins 插入,带有下划线 。( 经常与 del标签 一同使用,来描述文档中的更新和修正 )
  • del 删除,带有删除线
  • abbr 缩写,表示一个缩写形式。(在某些浏览器上,当把鼠标移至缩写词上,title可被用来展示完整版本)
  • code 表示代码。(code标签内内容暗示这段文本是源程序代码)
  • cite 表示书籍或杂志等的标题,表示对某个参考文献的引用。
  • q 短的引用,带有引号。
  • blockquote 块引用,长的引用,标签之间的文本都会从常规文本中分离出来,并且在左右两边缩进(外边距),而且有时会使用斜体。即:块引用拥有它们自己的空间。
  • ul 无序列表
  • ol 有序列表
  • dl 定义列表。(dl、dt、dd经常一起使用)
  • dt 定义列表中的项目
  • dd 描述列表中的项目

 

【强制】 不允许使用过时的旧标签,使用新标签或者CSS代替。

如下:

  • b ==> strong
  • center
  • tt

【建议】 在CSS可以实现相同需求的情况下不得使用表格进行布局。

解释:

​ 复杂的表格设计不易,修改更复杂,最后生成的网页代码有许多冗余,还有很多没有任何意义的元素,文件量庞大,下载慢,解析速度也慢,维护和更新困难。

【建议】 标签的使用应尽量简洁,减少不必要的标签。

示例:

<!-- good -->
<img class="avatar" src="image.png"><!-- bad -->
<span class="avatar"><img src="image.png">
</span>

4. 属性

【强制】 属性名必须全部使用小写字母,不允许驼峰命名格式。

【强制】 属性值必须用双引号包围,不允许使用单引号及其它。

【建议】 布尔类型的属性,建议不添加属性值。

【建议】 自定义属性建议以 xxx- 为前缀,推荐使用 data-。

解释:

​ 使用前缀有利于区分自定义属性和原有属性。

5. html文件标识和编码

【强制】 使用HTML5的 doctype 来启用标准模式,建议使用大写的 DOCTYPE

示例:

<!DOCTYPE html>

【建议】 启用IE Edge模式。

解释:

​ IE=Edge表示:永远以最新的IE版本模式来显示网页;IE=8表示:以IE8引擎来渲染页面。

示例:

<meta http-equiv="X-UA-Compatible" content="IE=Edge"

【建议】 在html标签上设置正确的 lang 属性

解释:

​ 搜索引擎无法判断页面的内容是什么语言,“en”代表英语,”zh-CN”代表中文。

示例:

<html lang="zh-CN">

6. head标签内包含内容

【强制】 页面必须使用精简形式,明确指定字符编码。指定字符编码的 meta 元素必须是 head 的第一个直接子元素。

【建议】 html文件使用无BOM的UTF-8编码。

解释:

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

【强制】 页面必须包含title标签声明标题。

【强制】 title必须作为head的直接子元素,并紧随charset声明之后。

解释:

​ title中如果包含ASCII之外的字符,浏览器需要知道字符编码类型才能进行解码,否则可能导致乱码。

示例:

<head><meta charset="UTF-8"><titlle>页面标题</titlle>
</head>

【强制】 保证favicon可访问。

解释:

​ 在未指定favicon时,大多数浏览器会请求Web Server根目录下的facicon.ico。为了保证favicon可访问,避免404,必须遵循以下两种方法之一:

​ ① 在文本 Server 根目录放置 favicon.ico文件。

​ ② 使用link指定favicon

示例:

<link rel="shortcut icon" href="path/to/favicon.ico">

【建议】 若界面欲对移动设备友好,需指定页面的 viewport。

解释:

​ viewport是用户网页的可视区域(视区)。手机浏览器是把页面放在一个虚拟的“窗口”(viewport)中,通常这个虚拟的“窗口”(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中,导致页面展示不正常。用户可以通过平移或缩放来看网页的不同部分。

示例:

<meta name="viewport" content="width=device-width, initial-scale=1.0">
  • width: 可视窗口宽度,可以指定一个值,如:600;或取特殊值,如设备宽度:device-width。
  • height:可视窗口高度,可指定一个值或是特殊值:设备高度:device-height。
  • initial-scale:初始缩放比例,即:当页面第一次加载时缩放比例。
  • maximum-scale、minimum-scale:允许用户缩放的最大、最小比例。
  • user-scalable:用户是否可以手动缩放。

7. CSS和JavaScript引入

【强制】 引入CSS时必须指明 rel=”stylesheet”。

示例:

<link rel="stylesheet" href="page.css">

【建议】 引入CSS和JavaScript时无须指明type属性。

解释:

​ text/css和text/javascript是type的默认值。

【建议】 样式定义放在外部的CSS中,行为定义放在外部的JavaScript中。

解释:

​ 结构——样式——行为的代码分离,有利于提高代码的可阅读性和可维护性。

【建议】 CSS外部文件都应在head全部引入。

解释:

​ 在页面渲染过程中,避免新的CSS导致样式的重新绘制,页面闪烁。

【建议】 JavaScript应放在页尾,或采用异步加载。

解释:

​ 页面在渲染的同时会同步读取javaScript文件,避免页面渲染速度过慢。

【建议】移动环境或只针对现代浏览器设计的Web应用,如果引用外部资源的URL协议部分与页面相同,建议省略协议前缀。

解释:

​ 使用相对路径引入CSS,在IE7/8下,会发两次请求,是否使用相对协议应当充分考虑页面针对的环境。

8. 图片

【强制】 禁止img的src取值为空。延迟加载的图片也要增加默认的src。

解释:

​ 当img的src取值为空时,浏览器会认为这是一个缺省值,值的内容为当前网页的路径。浏览器会再次加载图片。

【建议】 避免为img添加不必要的title属性。

解释:

​ 多余的title影响看图体验,并且增加了页面尺寸。

【建议】 为重要图片添加alt属性。

【建议】 添加width和height属性,避免页面抖动。

【建议】 有下载需求的图片采用img标签实现,无下载需求的图片采用CSS背景图实现。

解释:

  • 产品logo、用户头像、用户产生的图片等有潜在下载需求的图片,以img标签实现。
  • icon、背景、代码使用的图片等无下载需求的图片,以CSS背景图实现。

9. 表单

【强制】有文本标题的控件必须使用label标签将其与其标题相关联。

解释:

​ 当用户点击label标签中的文字,焦点会移动至对应元素上。

​ 有两种实现方式:

​ (1) 将控件置于label内。

​ (2) 将label的for属性指向控件的id。

​ 推荐使用第一种,减少不必要的id。如果DOM结构不允许直接嵌套,则应该使用第二种。

示例:

<!-- 推荐  -->
<label>用户名:<input type="text">
</label><label for="userName">用户名:</label>
<input type="text" id="userName">

【强制】使用button元素时必须指明type属性。

解释:

​ 因为button元素的默认type为submit(除IE浏览器,IE的默认type为button),如果被置于form元素中,点击后将导致表单提交。为清楚区分每个button的功能,必须给出type属性。

​ button的type类型主要分为3种: submit(提交按钮)、button(普通按钮)、reset(重置按钮—表单数据重置)

【建议】 负责主要功能的按钮在视觉上的顺序应靠前,且突出。

解释:

负责主要功能的按钮应相对靠前,以提高可访问性。减少非主要按钮的视觉效果。

10. 多媒体

【建议】 当使用audio和video标签来播放音频或视频时,应尽量覆盖到常用的格式。

解释:

​ 音频应覆盖格式:MP3、WAV、Ogg

​ 视频应覆盖格式:MP4、WebM、Ogg

【建议】在支持HTML5的浏览器中优先使用audio和video标签来定义音视频元素。

【建议】 使用退化到插件的方式来对多浏览器进行支持。

解释:

​ object标签定义一个嵌入的对象。可以使用该标签向页面添加多媒体。

<audio controls><source src="audio.mp3" type="audio/mpeg"><source src="audio.ogg" type="audio/ogg"><object width="100" height="50" data="audio.mp3"><embed width="100" height="50" src="audio.swf"></object>
</audio><video width="100" height="50" controls><source src="video.mp4" type="video/mp4"><source src="video.ogg" type="video/ogg"><object width="100" height="50" data="video.mp4"><embed width="100" height="50" src="video.swf"></object>
</video>

【建议】只在必要的时候开启音视频的自动播放。

【建议】 在object标签内部提供指示不支持该标签的说明。

<object width="100" height="50" data="something.swf">DO NOT SUPPORT THIS TAG</object>

我不是创造者,我只是学习者,希望大家一起进步!!!

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

HTML 编码(字符集)总结,你了解了多少

Web 浏览器必须知道要使用哪个字符集&#xff0c;才能正确显示 HTML 页面。 文章目录 Web 浏览器必须知道要使用哪个字符集&#xff0c;才能正确显示 HTML 页面。前言一、HTML charset 属性二、字符集之间的差异ASCII 字符集ANSI 字符集 (Windows-1252)ISO-8859-1 字符集UTF-8 …

【HTML基础笔记】之【常用编码】

HTML 常用编码 4.1 HTML 实体编码 HTML实体编码&#xff0c;也即HTML中的转义字符。 在 HTML 中&#xff0c;某些字符是预留的&#xff0c;例如在 HTML 中不能使用小于号<和大于号>&#xff0c;这是因为浏览器会误认为它们是标签。如果希望正确地显示预留字符&#xf…

CTR预估之DNN系列模型:FNN/PNN/DeepCrossing

前言 在上一篇文章中 CTR预估之FMs系列模型:FM/FFM/FwFM/FEFM&#xff0c;介绍了FMs系列模型的发展过程&#xff0c;开启了CTR预估系列篇章的学习。FMs模型是由线性项和二阶交互特征组成&#xff0c;虽然有自动学习二阶特征组合的能力&#xff0c;一定程度上避免了人工组合特征…

SQL SERVER DATEPART函数

定义&#xff1a; DATEPART函数返回指定日期的指定部分。 语法&#xff1a; DATEPART(datepart,date) 参数&#xff1a; ①datepart 参数可以是下列的值&#xff1a; datepart缩写年(Year)YEAR, YY, YYYY季度(Quarter)Q, QQ, QUARTER月(Month)M, MM, MONTH年中的日(Day of year…

DATEPART SQL函数

This article explores the DATEPART SQL function and its use in writing t-SQL queries. In the previous article, SQL Convert Date Functions and Formats, we explored various data formats and convert them using SQL Convert function. 本文探讨了DATEPART SQL函数…

mysql datepart_SQL Server DATEPART() 函数用法

用法&#xff1a; DATEPART() 函数用于返回日期/时间的单独部分&#xff0c;比如年、月、日、小时、分钟等等。返回的类型为整型。若要返回字符型可以用DATENAME()函数&#xff0c;可用于时间日期之间的拼接&#xff0c;用法和DATEPART()类似 语法&#xff1a; DATEPART(datepa…

mysql datepart_表达式中datepart函数用法及其与sqlserver depart函数、Mysql week函数的差异...

Wyn Reports支持丰富的函数&#xff0c;这些函数是实现各种计算需求的表达式的基础。 DatePart函数一个日期类函数&#xff0c;返回一个 Integer 值&#xff0c;其中包含给定 Date 值的指定部分(年&#xff0c;月&#xff0c;日&#xff0c;时&#xff0c;分&#xff0c;秒&…

DatePart 函数

DatePart 函数 适用于: Microsoft Office Access 2007 全部显示 全部隐藏 返回变量型&#xff08;整型&#xff09;&#xff0c;其中包含给定日期的指定部分。 语法 DatePart(interval, date [, firstdayofweek] [, firstweekofyear] ) DatePart 函数的语法包含以下参数 &…

sql学习---datepart函数的使用

DATEPART 返回代表指定日期的指定日期部分的整数。 语法 DATEPART ( datepart ,date ) 参数 datepart 是指定应返回的日期部分的参数。下表列出了 Microsoft SQL Server™ 识别的日期部分和缩写。 如图&#xff1a; 另外补充&#xff1a; 当 group by datepart (yyyy,date), da…

datepart函数用法及其与sqlserver depart函数、Mysql week函数的差异

Wyn Reports支持丰富的函数&#xff0c;这些函数是实现各种计算需求的表达式的基础。DatePart函数一个日期类函数&#xff0c;返回一个 Integer 值&#xff0c;其中包含给定 Date 值的指定部分&#xff08;年&#xff0c;月&#xff0c;日&#xff0c;时&#xff0c;分&#xf…

sqlserver 截取日期年份和月份使用datepart函数

sqlserver 截取日期年份和月份使用datepart函数,函数使用方法如下&#xff1a; 一、函数功能&#xff1a;DATEPART() 函数用于返回日期/时间的单独部分&#xff0c;比如年、月、日、小时、分钟等等。 二、语法&#xff1a;DATEPART(datepart,date) 三、参数说明&#xff1a;…

第四十五章 SQL函数 DATEPART

文章目录 第四十五章 SQL函数 DATEPART大纲参数描述Datepart 参数日期输入格式无效的参数错误代码范围和值检查示例 第四十五章 SQL函数 DATEPART 日期/时间函数&#xff0c;返回表示日期/时间表达式指定部分的值的整数。 大纲 DATEPART(datepart,date-expression)参数 dat…

继瑞吉外卖后的又一个项目——SpringBoot+Vue的前后端博客系统

文章目录 博客系统项目介绍前言项目演示前台演示后台演示 组织结构后端组织结构前端组织结构 技术选型前端技术后端技术架构图系统架构图业务架构图 模块介绍前端模块后端模块 环境搭建开发工具开发环境项目运行 未完待续结语 博客系统项目介绍 前言 本项目已开源在Gitee 后端…

使用PS制作毛玻璃效果

无论是在前端界面设计上还是海报制作上&#xff0c;模糊都是一种非常高级、流行的处理手法。 在2013年6月7日&#xff0c;IOS7在开发者大会上发布&#xff0c;IOS7一改以往的拟物化设计&#xff0c;以最简单的点线面引领了设计行业的风潮 IOS7上的毛玻璃效果 毛玻璃设计风格的…

html做出文字凹凸效果,css3怎么实现字体凹陷凸出效果?(附代码)

本篇文章主要给大家介绍用css3实现字体凹陷或凸出效果的实现方法。 我们在设计网页时&#xff0c;常常会需要考虑到用户体验&#xff0c;那么足够美观的网页才能吸引住用户。为了让网页内容更加丰富好看&#xff0c;我们可能会使用ps做出很多特效&#xff0c;其实除了ps&#x…

css3实现div的凸起或凹陷效果

简单的小知识 div的凸起和凹陷效果之前一直觉得是背景渐变等方式实现&#xff0c;最近突然发现只需要对div的边框进行区别设置即可&#xff0c;感觉非常神奇&#xff0c;于是分享一下。 请仔细观察对比示例中四周边框的设置&#xff0c;边框宽度是不一样的。效果在最后 示例…

PS实例一 制作凹陷的按钮(斜面和浮雕的使用)

首先看下效果 主要只是斜面和浮雕效果 1、 建两个图层 2、 双击图层2 选中斜面和浮雕效果 3、选择强光 4、ctrl 鼠标点击图层1中的内容&#xff0c;编辑->描边 5 复制图层1和图层2 按住ctrl选择图层1和图层2 点击链接图层 6 调整大小 75% 7 双击图层2副本中的斜面和浮雕调…

css实现按钮凸起和凹陷效果

今天用CSS实现一下按钮按下凹陷和弹起凸起的效果。 先来看看效果吧&#xff1a; html: <div class"btn-list"><div class"btn active"><span class"btn-text">按钮1</span></div><div class"btn"…

Ps 毛玻璃效果

哈喽&#xff0c;各位小伙伴&#xff01;今天我们来学习一下如何制作毛玻璃效果&#xff1f; 复制图层 导入一张图片&#xff0c;Ctrlj复制一层&#xff0c;右键—智能对象&#xff08;目的&#xff1a;方便后期更换图片&#xff09; 画矩形 画矩形(不要描边)&#xff0c;…

ps中字凹进去效果

1、写出字 2、把带字的图层复制一份&#xff08;或者两份&#xff09;&#xff0c;把在下面图层的字颜色改为“白色” 3、白色字体的图层&#xff0c;向下 向右移动一次&#xff0c;把图层模式改为“柔光”&#xff0c;就出来这样的效果