整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

HTML(5) 代码规范

TML 代码约定

很多 Web 开发人员对 HTML 的代码规范知之甚少。

在2000年至2010年,许多Web开发人员从 HTML 转换到 XHTML。

使用 XHTML 开发人员逐渐养成了比较好的 HTML 编写规范。

而针对于 HTML5 ,我们应该形成比较好的代码规范,以下提供了几种规范的建议。

使用正确的文档类型

文档类型声明位于HTML文档的第一行:

<!DOCTYPE html>

如果你想跟其他标签一样使用小写,可以使用以下代码:

<!doctype html>

使用小写元素名

HTML5 元素名可以使用大写和小写字母。

推荐使用小写字母:

  • 混合了大小写的风格是非常糟糕的。

  • 开发人员通常使用小写 (类似 XHTML)。

  • 小写风格看起来更加清爽。

  • 小写字母容易编写。

不推荐:

<SECTION>

<p>这是一个段落。</p>

</SECTION>

非常糟糕:

<Section>

<p>这是一个段落。</p>

</SECTION>

推荐:

<section>

<p>这是一个段落。</p>

</section>

关闭所有 HTML 元素

在 HTML5 中, 你不一定要关闭所有元素 (例如 <p> 元素),但我们建议每个元素都要添加关闭标签。

不推荐:

<section>

<p>这是一个段落。

<p>这是一个段落。

</section>

推荐:

<section>

<p>这是一个段落。</p>

<p>这是一个段落。</p>

</section>

关闭空的 HTML 元素

在 HTML5 中, 空的 HTML 元素也不一定要关闭:

我们可以这么写:

<meta charset="utf-8">

也可以这么写:

<meta charset="utf-8" />

在 XHTML 和 XML 中斜线 (/) 是必须的。

如果你期望 XML 软件使用你的页面,使用这种风格是非常好的。

使用小写属性名

HTML5 属性名允许使用大写和小写字母。

我们推荐使用小写字母属性名:

  • 同时使用大小写是非常不好的习惯。

  • 开发人员通常使用小写 (类似 XHTML)。

  • 小写风格看起来更加清爽。

  • 小写字母容易编写。

不推荐:

<div CLASS="menu">

推荐:

<div class="menu">

属性值

HTML5 属性值可以不用引号。

属性值我们推荐使用引号:

  • 如果属性值含有空格需要使用引号。

  • 混合风格不推荐的,建议统一风格。

  • 属性值使用引号易于阅读。

以下实例属性值包含空格,没有使用引号,所以不能起作用:

<table class=table striped>

以下使用了双引号,是正确的:

<table class="table striped">

图片属性

图片通常使用 alt 属性。 在图片不能显示时,它能替代图片显示。

<img src="html5.gif" alt="HTML5" style="width:128px;height:128px">

定义好图片的尺寸,在加载时可以预留指定空间,减少闪烁。

<img src="html5.gif" alt="HTML5" style="width:128px;height:128px">

空格和等号

等号前后可以使用空格。

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

但我们推荐少用空格:

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

避免一行代码过长

使用 HTML 编辑器,左右滚动代码是不方便的。

每行代码尽量少于 80 个字符。

空行和缩进

不要无缘无故添加空行。

为每个逻辑功能块添加空行,这样更易于阅读。

缩进使用两个空格,不建议使用 TAB。

比较短的代码间不要使用不必要的空行和缩进。

不必要的空行和缩进:

<body>

<h1>菜鸟教程</h1>

<h2>HTML</h2>

<p>

菜鸟教程,学的不仅是技术,更是梦想。

菜鸟教程,学的不仅是技术,更是梦想。

菜鸟教程,学的不仅是技术,更是梦想,

菜鸟教程,学的不仅是技术,更是梦想。

</p>

</body>

推荐:

<body>

<h1>菜鸟教程</h1>

<h2></h2>

<p>菜鸟教程,学的不仅是技术,更是梦想。

菜鸟教程,学的不仅是技术,更是梦想。

菜鸟教程,学的不仅是技术,更是梦想。

菜鸟教程,学的不仅是技术,更是梦想。</p>

</body>

表格实例:

<table>

<tr>

<th>Name</th>

<th>Description</th>

</tr>

<tr>

<td>A</td>

<td>Description of A</td>

</tr>

<tr>

<td>B</td>

<td>Description of B</td>

</tr>

</table>

列表实例:

<ol>

<li>London</li>

<li>Paris</li>

<li>Tokyo</li>

</ol>

省略 <html> 和 <body>?

在标准 HTML5 中, <html> 和 <body> 标签是可以省略的。

以下 HTML5 文档是正确的:

实例:

<!DOCTYPE html>

<head>

<title>页面标题</title>

</head>

<h1>这是一个标题</h1>

<p>这是一个段落。</p>

尝试一下 »

不推荐省略 <html> 和 <body> 标签。

<html> 元素是文档的根元素,用于描述页面的语言:

<!DOCTYPE html>

<html lang="zh">

声明语言是为了方便屏幕阅读器及搜索引擎。

省略 <html> 或 <body> 在 DOM 和 XML 软件中会崩溃。

省略 <body> 在旧版浏览器 (IE9)会发生错误。

省略 <head>?

在标准 HTML5 中, <head>标签是可以省略的。

默认情况下,浏览器会将 <body> 之前的内容添加到一个默认的 <head> 元素上。

实例

<!DOCTYPE html>

<html>

<title>页面标题</title>

<body>

<h1>这是一个标题</h1>

<p>这是一个段落。</p>

</body>

</html>

尝试一下 »

现在省略 head 标签还不推荐使用。

元数据

HTML5 中 <title> 元素是必须的,标题名描述了页面的主题:

<title>菜鸟教程</title>

标题和语言可以让搜索引擎很快了解你页面的主题:

<!DOCTYPE html>

<html lang="zh">

<head>

<meta charset="UTF-8">

<title>菜鸟教程</title>

</head>

HTML 注释

注释可以写在 <!-- 和 --> 中:

<!-- 这是注释 -->

比较长的评论可以在 <!-- 和 --> 中分行写:

<!--

这是一个较长评论。 这是 一个较长评论。这是一个较长评论。

这是 一个较长评论 这是一个较长评论。 这是 一个较长评论。

-->

长评论第一个字符缩进两个空格,更易于阅读。

样式表

样式表使用简洁的语法格式 ( type 属性不是必须的):

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

短的规则可以写成一行:

p.into {font-family: Verdana; font-size: 16em;}

长的规则可以写成多行:

body {

background-color: lightgrey;

font-family: "Arial Black", Helvetica, sans-serif;

font-size: 16em;

color: black;

}

  • 将左花括号与选择器放在同一行。

  • 左花括号与选择器间添加以空格。

  • 使用两个空格来缩进。

  • 冒号与属性值之间添加已空格。

  • 逗号和符号之后使用一个空格。

  • 每个属性与值结尾都要使用符号。

  • 只有属性值包含空格时才使用引号。

  • 右花括号放在新的一行。

  • 每行最多 80 个字符。

在逗号和分号后添加空格是常用的一个规则。

在 HTML 中载入 JavaScript

使用简洁的语法来载入外部的脚本文件 ( type 属性不是必须的 ):

<script src="myscript.js">

使用 JavaScript 访问 HTML 元素

一个糟糕的 HTML 格式可能会导致 JavaScript 执行错误。

以下两个 JavaScript 语句会输出不同结果:

实例

var obj = getElementById("Demo")

var obj = getElementById("demo")

HTML 中 JavaScript 尽量使用相同的命名规则。

访问 JavaScript 代码规范。

使用小写文件名

大多 Web 服务器 (Apache, Unix) 对大小写敏感: london.jpg 不能通过 London.jpg 访问。

其他 Web 服务器 (Microsoft, IIS) 对大小写不敏感: london.jpg 可以通过 London.jpg 或 london.jpg 访问。

你必须保持统一的风格,我们建议统一使用小写的文件名。

文件扩展名

HTML 文件后缀可以是 .html (或r .htm)。

CSS 文件后缀是 .css

JavaScript 文件后缀是 .js

.htm 和 .html 的区别

.htm 和 .html 的扩展名文件本质上是没有区别的。浏览器和 Web 服务器都会把它们当作 HTML 文件来处理。

区别在于:

.htm 应用在早期 DOS 系统,系统现在或者只能有三个字符。

在 Unix 系统中后缀没有特别限制,一般用 .html。

技术上区别

如果一个 URL 没有指定文件名 (如 http://www.runoob.com/css/), 服务器会返回默认的文件名。通常默认文件名为 index.html, index.htm, default.html, 和 default.htm。

如果服务器只配置了 "index.html" 作为默认文件,你必须将文件命名为 "index.html", 而不是 "index.htm"。

但是,通常服务器可以设置多个默认文件,你可以根据需要设置默认文件吗。

不管怎样,HTML 完整的后缀是 ".html"。

如您还有不明白的可以在下面与我留言或是与我探讨QQ群308855039,我们一起飞!

级元素:div , p , form, ul, li , ol, dl, form, address, fieldset, hr, menu, table

行内元素:span, strong, em, br, img , input, label, select, textarea, cite,

内联元素(inline element)a - 超链接

b - 粗体(不推荐)br - 换行

em - 强调

font - 字体设定(不推荐)

i - 斜体

img - 图片

input - 输入框

label - 表格标签

select - 选择框

small - 小字体文本

span - 常用内联容器,定义文本内区块

strong - 粗体强调

sub - 下标

sup - 上标

textarea - 多行文本输入框

块元素(block element)* blockquote - 块引用

* center - 居中

* div - 常用块级容易,也是css layout的主要标签

* dl - 定义列表

* form - 交互表单

* h1 - 大标题

* h2 - 副标题

* h3 - 3级标题

* h4 - 4级标题

* h5 - 5级标题

* h6 - 6级标题

* hr - 水平分隔线

* ol - 排序表单

* p - 段落

* pre - 格式化文本

* table - 表格

* ul - 无序列表

块级元素和行内元素的区别:

1)块级元素会独占一行,其宽度自动填满其父元素宽度

行内元素不会独占一行,相邻的行内元素会排列在同一行里,知道一行排不下,才会换行,其宽度随元素的内容 而变化

2) 块级元素可以设置 width, height属性,行内元素设置width, height无效

3) 块级元素可以设置margin 和 padding. 行内元素的水平方向的padding-left,padding-right,margin-left,margin-right 都产生边距效果,但是竖直方向的padding-top,padding-bottom,margin-top,margin-bottom都不会产生边距效果。

文章自留地:

成笑笑博客_一个.Net和安卓技术狂爱者博客。

主要以发布和分享.Net和安卓文章为主,争做全栈开发工程师,爱学习,爱挑战,爱编程。用技术改变生活。

欢迎关注,微信公众号:net知识分享(net4k8k)[做个12k的技术员].博客网址:www.chengxiaoxiao.com.

欢迎加入qq技术交流群:538742639.

TML DOM 节点

在 HTML DOM (Document Object Model) 中, 每个东西都是 节点 :

  • 文档本身就是一个文档对象

  • 所有 HTML 元素都是元素节点

  • 所有 HTML 属性都是属性节点

  • 插入到 HTML 元素文本是文本节点

  • 注释是注释节点


元素对象

在 HTML DOM 中, 元素对象代表着一个 HTML 元素。

元素对象 的 子节点可以是, 可以是元素节点,文本节点,注释节点。

NodeList 对象 代表了节点列表,类似于 HTML元素的子节点集合。

元素可以有属性。属性属于属性节点。


浏览器支持

所有主流浏览器都支持 元素对象 和 NodeList 对象。.


属性和方法

以上属性和方法可适用于所有 HTML 元素:

属性 / 方法描述
element.accessKey设置或返回accesskey一个元素
element.addEventListener()向指定元素添加事件句柄
element.appendChild()为元素添加一个新的子元素
element.attributes返回一个元素的属性数组
element.childNodes返回元素的一个子节点的数组
element.classlist返回元素的类名,作为 DOMTokenList 对象。
element.className设置或返回元素的class属性
element.clientHeight在页面上返回内容的可视高度(不包括边框,边距或滚动条)
element.clientWidth在页面上返回内容的可视宽度(不包括边框,边距或滚动条)
element.cloneNode()克隆某个元素
element.compareDocumentPosition()比较两个元素的文档位置。
element.contentEditable设置或返回元素的内容是否可编辑
element.dir设置或返回一个元素中的文本方向
element.firstChild返回元素的第一个子节点
element.focus()设置文档或元素获取焦点
element.getAttribute()返回指定元素的属性值
element.getAttributeNode()返回指定属性节点
element.getElementsByTagName()返回指定标签名的所有子元素集合。
element. getElementsByClassName()返回文档中所有指定类名的元素集合,作为 NodeList 对象。
element.getFeature()返回指定特征的执行APIs对象。
element.getUserData()返回一个元素中关联键值的对象。
element.hasAttribute()如果元素中存在指定的属性返回 true,否则返回false。
element.hasAttributes()如果元素有任何属性返回true,否则返回false。
element.hasChildNodes()返回一个元素是否具有任何子元素
element.hasFocus()返回布尔值,检测文档或元素是否获取焦点
element.id设置或者返回元素的 id。
element.innerHTML设置或者返回元素的内容。
element.insertBefore()现有的子元素之前插入一个新的子元素
element.isContentEditable如果元素内容可编辑返回 true,否则返回false
element.isDefaultNamespace()如果指定了namespaceURI 返回 true,否则返回 false。
element.isEqualNode()检查两个元素是否相等
element.isSameNode()检查两个元素所有有相同节点。
element.isSupported()如果在元素中支持指定特征返回 true。
element.lang设置或者返回一个元素的语言。
element.lastChild返回的最后一个子元素
element.namespaceURI返回命名空间的 URI。
element.nextSibling返回该元素紧跟的一个节点
element.nodeName返回元素的标记名(大写)
element.nodeType返回元素的节点类型
element.nodeValue返回元素的节点值
element.normalize()使得此成为一个"normal"的形式,其中只有结构(如元素,注释,处理指令,CDATA节和实体引用)隔开Text节点,即元素(包括属性)下面的所有文本节点,既没有相邻的文本节点也没有空的文本节点
element.offsetHeight返回,任何一个元素的高度包括边框和填充,但不是边距
element.offsetWidth返回元素的宽度,包括边框和填充,但不是边距
element.offsetLeft返回当前元素的相对水平偏移位置的偏移容器
element.offsetParent返回元素的偏移容器
element.offsetTop返回当前元素的相对垂直偏移位置的偏移容器
element.ownerDocument返回元素的根元素(文档对象)
element.parentNode返回元素的父节点
element.previousSibling返回某个元素紧接之前元素
element.querySelector()返回匹配指定 CSS 选择器元素的第一个子元素
document.querySelectorAll()返回匹配指定 CSS 选择器元素的所有子元素节点列表
element.removeAttribute()从元素中删除指定的属性
element.removeAttributeNode()删除指定属性节点并返回移除后的节点。
element.removeChild()删除一个子元素
element.removeEventListener()移除由 addEventListener() 方法添加的事件句柄
element.replaceChild()替换一个子元素
element.scrollHeight返回整个元素的高度(包括带滚动条的隐蔽的地方)
element.scrollLeft返回当前视图中的实际元素的左边缘和左边缘之间的距离
element.scrollTop返回当前视图中的实际元素的顶部边缘和顶部边缘之间的距离
element.scrollWidth返回元素的整个宽度(包括带滚动条的隐蔽的地方)
element.setAttribute()设置或者改变指定属性并指定值。
element.setAttributeNode()设置或者改变指定属性节点。
element.setIdAttribute()
element.setIdAttributeNode()
element.setUserData()在元素中为指定键值关联对象。
element.style设置或返回元素的样式属性
element.tabIndex设置或返回元素的标签顺序。
element.tagName作为一个字符串返回某个元素的标记名(大写)
element.textContent设置或返回一个节点和它的文本内容
element.title设置或返回元素的title属性
element.toString()一个元素转换成字符串
nodelist.item()返回某个元素基于文档树的索引
nodelist.length返回节点列表的节点数目。