HTML 屬性
本章介紹 HTML 的標簽內(nèi)屬性控制方式以及幾種通用的屬性的簡單介紹。屬性是 HTML 標簽內(nèi)提供的附加信息,一般用于描述標簽或者控制標簽的展現(xiàn)形式。
屬性大部分情況下以鍵值對方式出現(xiàn),比如 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 屬性規(guī)定了元素的類名,類名命名必須以字母為開頭,內(nèi)容中可以包含大小寫字母和下劃線("_")或者橫杠("-"),類名是區(qū)分大小寫的,類名可以定義多個,以 “ ” 空格隔開,例如定義了段落元素。
<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 屬性定義了網(wǎng)頁或者元素的語言,是否定義 lang 屬性對網(wǎng)頁或者標簽的展現(xiàn)影響不大,但是可以幫助搜索引擎或者瀏覽器區(qū)分出網(wǎng)頁的語言。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 屬性定義了元素的行內(nèi)樣式(也叫內(nèi)聯(lián)樣式),行內(nèi)樣式優(yōu)先于任何其他形式定義的樣式。
其他兩種定義元素樣式的方式是:
- style 標簽;
- 引入 css 樣式文件。
<style>
.test{
}
</style><!-- 使用標簽的方式 -->
<link href="/css/test.css" /> <!-- 使用引用的方式 -->
其中 css 樣式的優(yōu)先級是: 行內(nèi)樣式 > 標簽方式 > 引用文件 方式。
關(guān)于樣式的內(nèi)容本章節(jié)不做具體討論。
1.6 tabindex
tabindex 屬性用于定義元素的 tab 鍵的控制順序,即焦點的順序。
tabindex 的值可以在 1 到 32767 之間的任意數(shù)字。當用戶使用 tab 鍵在網(wǎng)頁中移動控件時,將首先移動到具有最小 tabindex 屬性的控件上,然后依次按從小到大移動。
如果兩個元素的 tabindex 的屬性值相等,瀏覽器會按照代碼出現(xiàn)的順序移動。當一個元素的 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 屬性定義元素內(nèi)文本的方向。參數(shù)值有 2 種:
- ltr 默認值。文字按從左到右的方向;
- rtl 文字按照從右到左的方向。
1.8 title
title 屬性用于指定元素的備注信息。這些信息通常是指,鼠標移動到元素上并且停留一段時間時,瀏覽器的提示框內(nèi)的文本。
<p title="test123456789" style="word-wrap:break-all;width:30px;white-space: nowrap; text-overflow: ellipsis;overflow: hidden;">test123456789</p> <!-- 定義一個段落 -->
上面的代碼實現(xiàn)的功能是:當段落文字超出段落寬度時,顯示省略號,并且鼠標移上去可顯示全部內(nèi)容:

2. HTML5 新增全局屬性
2.1 contentEditable
這個屬性是用來將一個標簽變成可編輯的類型,可能了解的人并不太多,在加入 HTML5 標準以前,瀏覽器也有部分支持。比較通用的創(chuàng)建一個可編輯標簽的方式是,使用表單 input 或者 textarea 的方式,不過都有一定的局限性。
- 會跟隨 form 表單提交內(nèi)容,有時候你可能并不需要;
- 展現(xiàn)樣式比較單一。
使用 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 模擬實現(xiàn)。
2.3 data-*
這個屬性是 HTML5 中用于存儲自定義屬性值,自定義屬性值用于方便開發(fā)者存儲一些簡單的數(shù)據(jù)內(nèi)容,而不需從服務器端獲取。
在 HTML4 中自定義屬性的方式很有可能會跟系統(tǒng)關(guān)鍵字沖突,而 data-* 會被客戶端忽略。
- data- 后邊必須至少有一個字符,不要包含大寫字符;
- JavaScript 可以用 getAttribute 函數(shù)獲取自定義屬性;
- HTML5 原生函數(shù)支持使用 dataset / setAttribute 來 獲取/操作自定義屬性。
下面是 JavaScrip t使用 getAttribute 函數(shù)獲取自定義屬性的例子:
<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
這個屬性用來標識元素是否支持被拖動,如果沒有被設置則按照瀏覽器默認的方式來執(zhí)行,屬性可選值有 true/false/auto 。默認情況下,只有圖片、鏈接是可以拖動的。需要配合定義 ondragstart 事件來實現(xiàn)拖動之后的響應機制。
上述標簽,當鼠標點擊段落且移動時,呈現(xiàn)出可拖動樣式:

如果未定義 draggable 屬性,鼠標點擊段落且拖動會選中文本:

2.5 dropzone
dropzone 屬性是指在元素上拖動數(shù)據(jù)時,是否拷貝、移動或鏈接被拖動數(shù)據(jù)。目前所有主流瀏覽器暫不支持該屬性。
2.6 hidden
hidden 用來設置元素是否應該被隱藏,當該屬性設置為 hidden 或者 true 時,瀏覽器將不再渲染該元素。在早期的 HTML4 中,通過設置 css 樣式 display:none 可以實現(xiàn)相同的效果。
上述表單在瀏覽器不顯示任何效果,只有當提交表單時數(shù)據(jù)才會提交到服務器端。
2.7 spellcheck
spellcheck 屬性定義是否對元素進行拼寫檢查,目前該屬性支持非密碼的 input 標簽、textarea 中的文本,可編輯元素中的文本。spellcheck 的值有 true 和 false。
2.8 translate
translate 屬性定義渲染元素時是否需要對內(nèi)容進行翻譯,目前所有主流瀏覽器都不支持該屬性。
3. 總結(jié)
回顧本章,介紹了 HTML 通用的 8 個屬性,以及 HTML5 新增的 8 個通用屬性。通用的屬性一般對大部分元素標簽都支持,但是 HTML5 目前是新標準,所有有些屬性不能百分之百兼容所有的瀏覽器。因為瀏覽器更新迭代速度較快,所以在此沒有對瀏覽器兼容性做深入講解,大家在實際使用的時候可以在 w3c 官網(wǎng)或者其他網(wǎng)站手冊中查詢對照。
慕少3449830 ·
2025 imooc.com All Rights Reserved |