HTML 属性
本章介绍 HTML 的标签内属性控制方式以及几种通用的属性的简单介绍。属性是 HTML 标签内提供的附加信息,一般用于描述标签或者控制标签的展现形式。
属性大部分情况下以键值对方式出现,比如 key='value'。
1. 全局属性
全局属性是大部分标签都可以使用的属性,常用到的有以下 8 个:
- accesskey
- class
- id
- lang
- style
- tabindex
- dir
- title
下面我们具体来看一下他们的用法。
1.1 accesskey
accessKey 属性定义了使元素获得焦点的快捷键。
例如,定义了一组表单元素 :
<input type="text" accesskey='h' value="按下alt+h"/><br/>
<a href='http://www.baidu.com' accesskey="a">按下alt+a</a><br/>
<button accesskey="b">按下alt+b</button><br/>
<label accesskey="c">按下alt+c</label><br/>
<legend accesskey="d">按下alt+d</legend><br/>
<textarea accesskey="g">按下alt+g</textarea>
在浏览器中,当你同时按下 ALT+h 键,焦点会自动切换到上边的表单标签。
目前有 <a> <area> <button> <input> <label> <legend> <textarea>元素支持 accessKey 属性。
1.2 class
class 属性规定了元素的类名,类名命名必须以字母为开头,内容中可以包含大小写字母和下划线("_")或者横杠("-"),类名是区分大小写的,类名可以定义多个,以 “ ” 空格隔开,例如定义了段落元素。
<p class="class1 class2 class3"></p>
相当于给 p 元素定义了 class1 class2 class3 3个类。
给元素定义类相当于给元素打了个标签,在 JavaScript 中操作 DOM 提供了便捷,例如可以通过:
<p class="class1 class2 class3">我是一个段落</p>
<button onclick='hideTest()'>点击隐藏</button>
<button onclick='showTest()'>点击显示</button>
<script>
function hideTest(){
var a = document.getElementsByClassName("class1"); //这样可以获取所有 class 包含test的标签
a[0].style.display = 'none';
}
function showTest(){
var a = document.getElementsByClassName("class1"); //这样可以获取所有 class 包含test的标签
a[0].style.display = 'block';
}
</script>
以上 demo 通过点击按钮,基于操控对应 DOM 的 class 来控制按钮的显示与隐藏。
1.3 id
id 属性类似于 class,不同的是 id 是唯一标签,不能重复;
<div id='test'></div>
类似于class,id 也是用于操作 dom 的标记,例如:
<p id='test' class="class1 class2 class3">我是一个段落</p>
<button onclick='hideTest()'>点击隐藏</button>
<button onclick='showTest()'>点击显示</button>
<script>
function hideTest(){
var a = document.getElementById("test"); //这样可以获取所有 class 包含test的标签
a.style.display = 'none';
}
function showTest(){
var a = document.getElementById("test"); //这样可以获取所有 class 包含test的标签
a.style.display = 'block';
}
</script>
以上 demo 通过点击按钮,基于操控对应 dom 的 class 来控制按钮的显示与隐藏。
1.4 lang
lang 属性定义了网页或者元素的语言,是否定义 lang 属性对网页或者标签的展现影响不大,但是可以帮助搜索引擎或者浏览器区分出网页的语言。ISO 639-1 为各种语言定义了缩略词。
| Language | ISO Code |
|---|---|
| Abkhazian | ab |
| Afar | aa |
| Afrikaans | af |
| Albanian | sq |
| Amharic | am |
| Arabic | ar |
| Armenian | hy |
| Assamese | as |
| Aymara | ay |
| Azerbaijani | az |
| Bashkir | ba |
| Basque | eu |
| Bengali (Bangla) | bn |
| Bhutani | dz |
| Bihari | bh |
| Bislama | bi |
| Breton | br |
| Bulgarian | bg |
| Burmese | my |
| Byelorussian (Belarusian) | be |
| Cambodian | km |
| Catalan | ca |
| Chinese (Simplified) | zh |
| Chinese (Traditional) | zh |
| Corsican | co |
| Croatian | hr |
| Czech | cs |
| Danish | da |
| Dutch | nl |
| English | en |
| Esperanto | eo |
| Estonian | et |
| Faeroese | fo |
| Farsi | fa |
| Fiji | fj |
| Finnish | fi |
| French | fr |
| Frisian | fy |
| Galician | gl |
| Gaelic (Scottish) | gd |
| Gaelic (Manx) | gv |
| Georgian | ka |
| German | de |
| Greek | el |
| Greenlandic | kl |
| Guarani | gn |
| Gujarati | gu |
| Hausa | ha |
| Hebrew | he, iw |
| Hindi | hi |
| Hungarian | hu |
| Icelandic | is |
| Indonesian | id, in |
| Interlingua | ia |
| Interlingue | ie |
| Inuktitut | iu |
| Inupiak | ik |
| Irish | ga |
| Italian | it |
| Japanese | ja |
| Javanese | jv |
| Kannada | kn |
| Kashmiri | ks |
| Kazakh | kk |
| Kinyarwanda (Ruanda) | rw |
| Kirghiz | ky |
| Kirundi (Rundi) | rn |
| Korean | ko |
| Kurdish | ku |
| Laothian | lo |
| Latin | la |
| Latvian (Lettish) | lv |
| Limburgish ( Limburger) | li |
| Lingala | ln |
| Lithuanian | lt |
| Macedonian | mk |
| Malagasy | mg |
| Malay | ms |
| Malayalam | ml |
| Maltese | mt |
| Maori | mi |
| Marathi | mr |
| Moldavian | mo |
| Mongolian | mn |
| Nauru | na |
| Nepali | ne |
| Norwegian | no |
| Occitan | oc |
| Oriya | or |
| Oromo (Afan, Galla) | om |
| Pashto (Pushto) | ps |
| Polish | pl |
| Portuguese | pt |
| Punjabi | pa |
| Quechua | qu |
| Rhaeto-Romance | rm |
| Romanian | ro |
| Russian | ru |
| Samoan | sm |
| Sangro | sg |
| Sanskrit | sa |
| Serbian | sr |
| Serbo-Croatian | sh |
| Sesotho | st |
| Setswana | tn |
| Shona | sn |
| Sindhi | sd |
| Sinhalese | si |
| Siswati | ss |
| Slovak | sk |
| Slovenian | sl |
| Somali | so |
| Spanish | es |
| Sundanese | su |
| Swahili (Kiswahili) | sw |
| Swedish | sv |
| Tagalog | tl |
| Tajik | tg |
| Tamil | ta |
| Tatar | tt |
| Telugu | te |
| Thai | th |
| Tibetan | bo |
| Tigrinya | ti |
| Tonga | to |
| Tsonga | ts |
| Turkish | tr |
| Turkmen | tk |
| Twi | tw |
| Uighur | ug |
| Ukrainian | uk |
| Urdu | ur |
| Uzbek | uz |
| Vietnamese | vi |
| Volapuk | vo |
| Welsh | cy |
| Wolof | wo |
| Xhosa | xh |
| Yiddish | yi, ji |
| Yoruba | yo |
| Zulu | zu |
1.5 style
style 属性定义了元素的行内样式(也叫内联样式),行内样式优先于任何其他形式定义的样式。
其他两种定义元素样式的方式是:
- style 标签;
- 引入 css 样式文件。
<style>
.test{
}
</style><!-- 使用标签的方式 -->
<link href="/css/test.css" /> <!-- 使用引用的方式 -->
其中 css 样式的优先级是: 行内样式 > 标签方式 > 引用文件 方式。
关于样式的内容本章节不做具体讨论。
1.6 tabindex
tabindex 属性用于定义元素的 tab 键的控制顺序,即焦点的顺序。
tabindex 的值可以在 1 到 32767 之间的任意数字。当用户使用 tab 键在网页中移动控件时,将首先移动到具有最小 tabindex 属性的控件上,然后依次按从小到大移动。
如果两个元素的 tabindex 的属性值相等,浏览器会按照代码出现的顺序移动。当一个元素的 tabindex 设置为 -1,那么这个元素会排除在 tab 的移动顺序之外。
<a href="http://www.baidu.com.cn/" tabindex="1">焦点1</a>
<a href="http://www.baidu.com.cn/" tabindex="2">焦点2</a>
<a href="http://www.baidu.com.cn/" tabindex="3">焦点3</a>
<a href="http://www.baidu.com.cn/" tabindex="4">焦点4</a>
<a href="http://www.baidu.com.cn/" tabindex="5">焦点5</a>
在上述示例中,通过点击键盘的 tab 键可以看到焦点依次按顺序通过链接标签。
1.7 dir
dir 属性定义元素内文本的方向。参数值有 2 种:
- ltr 默认值。文字按从左到右的方向;
- rtl 文字按照从右到左的方向。
1.8 title
title 属性用于指定元素的备注信息。这些信息通常是指,鼠标移动到元素上并且停留一段时间时,浏览器的提示框内的文本。
<p title="test123456789" style="word-wrap:break-all;width:30px;white-space: nowrap; text-overflow: ellipsis;overflow: hidden;">test123456789</p> <!-- 定义一个段落 -->
上面的代码实现的功能是:当段落文字超出段落宽度时,显示省略号,并且鼠标移上去可显示全部内容:

2. HTML5 新增全局属性
2.1 contentEditable
这个属性是用来将一个标签变成可编辑的类型,可能了解的人并不太多,在加入 HTML5 标准以前,浏览器也有部分支持。比较通用的创建一个可编辑标签的方式是,使用表单 input 或者 textarea 的方式,不过都有一定的局限性。
- 会跟随 form 表单提交内容,有时候你可能并不需要;
- 展现样式比较单一。
使用 div + css + contentEditable 可以解决以上的问题,例如:
以上定义了一个段落,如果没有加 contentEditable 属性的话,段落只是展示作用,当加了 contentEditable 属性之后,鼠标点击此段落之后可以编辑段落文字。

2.2 contextmenu
contextmenu 属性用于制定 div 元素的右键单击菜单,需要配合 menu 标签使用,例如:
<div contextmenu='test'>
<menu type="context" id="test">
<menuitem label="刷新"></menuitem> <!-- 菜单1 -->
<menuitem label="回退"></menuitem> <!-- 菜单2 -->
</menu>
</div>
这个功能类似于桌面应用的右键菜单功能,但是目前只有 Firefox 浏览器支持 contextmenu 属性,不支持的浏览器可以使用 div + css 模拟实现。
2.3 data-*
这个属性是 HTML5 中用于存储自定义属性值,自定义属性值用于方便开发者存储一些简单的数据内容,而不需从服务器端获取。
在 HTML4 中自定义属性的方式很有可能会跟系统关键字冲突,而 data-* 会被客户端忽略。
- data- 后边必须至少有一个字符,不要包含大写字符;
- JavaScript 可以用 getAttribute 函数获取自定义属性;
- HTML5 原生函数支持使用 dataset / setAttribute 来 获取/操作自定义属性。
下面是 JavaScrip t使用 getAttribute 函数获取自定义属性的例子:
<script>
function show(animal) {
var type = animal.getAttribute("data-type");
alert(animal.innerHTML + "是一种" + type + "。");
}
</script>
<ul>
<li onclick="show(this)" id="owl" data-type="标记语言">html</li>
<li onclick="show(this)" id="salmon" data-type="脚本语言">JavaScript</li>
<li onclick="show(this)" id="tarantula" data-type="层叠样式表">css</li>
</ul>
以上示例通过 data-type 保存了无序列表中每个条目的类型值,通过点击列表条目可以弹出类型值。

2.4 draggable
这个属性用来标识元素是否支持被拖动,如果没有被设置则按照浏览器默认的方式来执行,属性可选值有 true/false/auto 。默认情况下,只有图片、链接是可以拖动的。需要配合定义 ondragstart 事件来实现拖动之后的响应机制。
上述标签,当鼠标点击段落且移动时,呈现出可拖动样式:

如果未定义 draggable 属性,鼠标点击段落且拖动会选中文本:

2.5 dropzone
dropzone 属性是指在元素上拖动数据时,是否拷贝、移动或链接被拖动数据。目前所有主流浏览器暂不支持该属性。
2.6 hidden
hidden 用来设置元素是否应该被隐藏,当该属性设置为 hidden 或者 true 时,浏览器将不再渲染该元素。在早期的 HTML4 中,通过设置 css 样式 display:none 可以实现相同的效果。
上述表单在浏览器不显示任何效果,只有当提交表单时数据才会提交到服务器端。
2.7 spellcheck
spellcheck 属性定义是否对元素进行拼写检查,目前该属性支持非密码的 input 标签、textarea 中的文本,可编辑元素中的文本。spellcheck 的值有 true 和 false。
2.8 translate
translate 属性定义渲染元素时是否需要对内容进行翻译,目前所有主流浏览器都不支持该属性。
3. 总结
回顾本章,介绍了 HTML 通用的 8 个属性,以及 HTML5 新增的 8 个通用属性。通用的属性一般对大部分元素标签都支持,但是 HTML5 目前是新标准,所有有些属性不能百分之百兼容所有的浏览器。因为浏览器更新迭代速度较快,所以在此没有对浏览器兼容性做深入讲解,大家在实际使用的时候可以在 w3c 官网或者其他网站手册中查询对照。