HTML5的結構和語義(5):交互

  HTML 5 也被稱為 Web Applications 1.0。為了實現(xiàn)這個目標播玖,增加了幾個為 Web 頁面提供交互體驗的新元素:

  details

  datagrid

  menu

  command

  這些元素都可以根據(jù)用戶的操作和選擇改變顯示的內(nèi)容氯檐,而不需要從服務器裝載新頁面。

details

  details 元素表示在默認情況下可能不顯示的詳細信息≡悍拢可選的 legend 元素可以提供詳細信息的摘要毙玻。

  details 元素的用途之一是提供腳注和尾注豌蟋。例如:

The bill of a Craveri's Murrelet is about 10% thinner

than the bill of a Xantus's Murrelet.

<details>

<legend>[Sibley, 2000]</legend>

<p>Sibley, David Allen, The Sibley Guide to Birds,

(New York: Chanticleer Press, 2000) p. 247

</p>

</details>

  沒有指定具體的顯示方式主到。瀏覽器可以選用腳注地淀、尾注和工具提示等方式。

  每個 details 元素可以有一個 open 屬性排惨。如果設置了這個屬性运准,那么詳細信息在最初就顯示出來幌氮。如果沒有設置這個屬性,那么會隱藏它們戳吝,直到用戶要求顯示它們浩销。無論是哪種情況,用戶都可以通過單擊一個圖標或其他控件來顯示或隱藏詳細信息听哭。

datagrid

  datagrid 元素提供一個網(wǎng)格控件慢洋。可以用它顯示樹陆盘、列表和表格普筹,用戶和腳本可以更新這些界面元素。與之相反隘马,傳統(tǒng)的表格主要用來顯示靜態(tài)數(shù)據(jù)太防。

  datagrid 從它的內(nèi)容(一個 table、select 或其他 HTML 元素)獲得初始數(shù)據(jù)酸员。例如蜒车,代碼 9 中的 datagrid 包含一張成績表。在這個示例中幔嗦,datagrid 的數(shù)據(jù)來自一個 table酿愧。更簡單的一維 datagrid 可以從 select 元素獲得數(shù)據(jù)。如果使用其他 HTML 元素邀泉,那么每個子元素成為網(wǎng)格中的一行嬉挡。

<datagrid>

<table>

<tr><td>Jones</td><td>Allison</td><td>A-</td><td>B </td><td>A</td></tr>

<tr><td>Smith</td><td>Johnny</td><td>A</td><td>C </td><td>A</td></tr>

<tr><td>Willis</td><td>Sydney</td><td>C-</td><td>D</td><td>F</td></tr>

<tr><td>Wilson</td><td>Frank</td><td>B-</td><td>B </td><td>A</td></tr>

</table>

</datagrid>

  這個元素與常規(guī)表格的區(qū)別在于,用戶可以選擇行汇恤、列和單元格庞钢;把行、列和單元格折疊起來因谎;編輯單元格基括;刪除行、列和單元格财岔;對網(wǎng)格排序风皿;以及在客戶機瀏覽器中直接進行其他數(shù)據(jù)操作饭冬。可以用 JavaScript 代碼監(jiān)視更新揪阶。Document Object Model(DOM)中增加了 HTMLDataGridElement 接口以支持這個元素(代碼 10 HTMLDataGridElement)昌抠。

interface HTMLDataGridElement : HTMLElement {

attribute DataGridDataProvider data;

readonly attribute DataGridSelection selection;

attribute boolean multiple;

attribute boolean disabled;

void updateEverything();

void updateRowsChanged(in RowSpecification row, in unsigned long count);

void updateRowsInserted(in RowSpecification row, in unsigned long count);

void updateRowsRemoved(in RowSpecification row, in unsigned long count);

void updateRowChanged(in RowSpecification row);

void updateColumnChanged(in unsigned long column);

void updateCellChanged(in RowSpecification row, in unsigned long column);

};

  還可以使用 DOM 在網(wǎng)格中動態(tài)地裝載數(shù)據(jù)。也就是說鲁僚,datagrid 可以不包含那些提供初始數(shù)據(jù)的子元素炊苫。可以用一個 DataGridDataProvider 對象設置它(代碼 11 DataGridDataProvider)冰沙。這樣就可以從數(shù)據(jù)庫侨艾、XmlHttpRequest 或者 JavaScript 代碼能夠訪問的任何資源裝載數(shù)據(jù)。

interface DataGridDataProvider {

void initialize(in HTMLDataGridElement datagrid);

unsigned long getRowCount(in RowSpecification row);

unsigned long getChildAtPosition(in RowSpecification parentRow,

in unsigned long position);

unsigned long getColumnCount();

DOMString getCaptionText(in unsigned long column);

void getCaptionClasses(in unsigned long column, in DOMTokenList classes);

DOMString getRowImage(in RowSpecification row);

HTMLMenuElement getRowMenu(in RowSpecification row);

void getRowClasses(in RowSpecification row, in DOMTokenList classes);

DOMString getCellData(in RowSpecification row, in unsigned long column);

void getCellClasses(in RowSpecification row, in unsigned long column,

in DOMTokenList classes);

void toggleColumnSortState(in unsigned long column);

void setCellCheckedState(in RowSpecification row, in unsigned long column,

in long state);

void cycleCell(in RowSpecification row, in unsigned long column);

void editCell(in RowSpecification row, in unsigned long column, in DOMString data);

};

menu 和 command

  menu 元素實際上在 HTML 2 中就出現(xiàn)了拓挥。在 HTML 4 中廢棄了它唠梨,但是 HTML 5 又恢復了它并指定了新的意義。在 HTML 5 中侥啤,menu 包含 command 元素当叭,每個 command 元素引發(fā)一個操作。例如盖灸,代碼 12 HTML 5 菜單 是一個彈出警告框的菜單蚁鳖。

<menu>

<command onclick="alert('first command')" label="Do 1st Command"/>

<command onclick="alert('second command')" label="Do 2nd Command"/>

<command onclick="alert('third command')" label="Do 3rd Command"/>

</menu>

  還可以用 checked="checked" 屬性將命令轉換為復選框。通過指定 radiogroup 屬性赁炎,可以將復選框轉換為單選按鈕醉箕,這個屬性的值是互相排斥的按鈕的組名。

  除了簡單的命令列表之外徙垫,還可以使用 menu 元素創(chuàng)建工具欄或彈出式上下文菜單讥裤,這需要將 type 屬性設置為 toolbar 或 popup。例如姻报,代碼 13. HTML 5 工具欄 顯示一個與 WordPress 等 blog 編輯器相似的工具欄己英。它使用 icon 屬性鏈接到按鈕的圖片。

<menu type="toolbar">

<command onclick="insertTag(buttons, 0);" label="strong" icon="bold.gif"/>

<command onclick="insertTag(buttons, 1);" label="em" icon="italic.gif"/>

<command onclick="insertLink(buttons, 2);" label="link" icon="link.gif"/>

<command onclick="insertTag(buttons, 3);" label="b-quote" icon="blockquote.gif"/>

<command onclick="insertTag(buttons, 4);" label="del" icon="del.gif"/>

<command onclick="insertTag(buttons, 5);" label="ins" icon="insert.gif"/>

<command onclick="insertImage(buttons);" label="img" icon="image.gif"/>

<command onclick="insertTag(buttons, 7);" label="ul" icon="bullet.gif"/>

<command onclick="insertTag(buttons, 8);" label="ol" icon="number.gif"/>

<command onclick="insertTag(buttons, 9);" label="li" icon="item.gif"/>

<command onclick="insertTag(buttons, 10);" label="code" icon="code.gif"/>

<command onclick="insertTag(buttons, 11);" label="cite" icon="cite.gif"/>

<command onclick="insertTag(buttons, 12);" label="abbr" icon="abbr.gif"/>

<command onclick="insertTag(buttons, 13);" label="acronym" icon="acronym.gif"/>

</menu>

  label 屬性提供菜單的標題逗抑。例如剧辐,代碼14. HTML 5 Edit 菜單 顯示一個 Edit 菜單寒亥。

<menu type="popup" label="edit">

<command onclick="undo()" label="Undo"/>

<command onclick="redo()" label="Redo"/>

<command onclick="cut()" label="Cut"/>

<command onclick="copy()" label="Copy"/>

<command onclick="paste()" label="Paste"/>

<command onclick="delete()" label="Clear"/>

</menu>

  菜單可以嵌套在其他菜單中邮府,形成層次化的菜單結構。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末溉奕,一起剝皮案震驚了整個濱河市褂傀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌加勤,老刑警劉巖仙辟,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件同波,死亡現(xiàn)場離奇詭異,居然都是意外死亡叠国,警方通過查閱死者的電腦和手機未檩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粟焊,“玉大人冤狡,你說我怎么就攤上這事∠钐模” “怎么了悲雳?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長香追。 經(jīng)常有香客問我合瓢,道長,這世上最難降的妖魔是什么透典? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任晴楔,我火速辦了婚禮,結果婚禮上峭咒,老公的妹妹穿的比我還像新娘滥崩。我一直安慰自己,他們只是感情好讹语,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布钙皮。 她就那樣靜靜地躺著,像睡著了一般顽决。 火紅的嫁衣襯著肌膚如雪短条。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天才菠,我揣著相機與錄音茸时,去河邊找鬼。 笑死赋访,一個胖子當著我的面吹牛可都,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蚓耽,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼渠牲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了步悠?” 一聲冷哼從身側響起签杈,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鼎兽,沒想到半個月后答姥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铣除,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年鹦付,在試婚紗的時候發(fā)現(xiàn)自己被綠了尚粘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡敲长,死狀恐怖背苦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情潘明,我是刑警寧澤行剂,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站钳降,受9級特大地震影響厚宰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜遂填,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一铲觉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吓坚,春花似錦撵幽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至哆窿,卻和暖如春链烈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挚躯。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工强衡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人码荔。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓漩勤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親缩搅。 傳聞我的和親對象是個殘疾皇子越败,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容