HTML5 移动Web开发从入门到精通(微课精编版)
上QQ阅读APP看书,第一时间看更新

4.4 HTML5全局属性

HTML5除了支持HTML4原有的全局属性之外,还添加了8个新的全局属性。所谓全局属性是指可以用于任何HTML元素的属性。

4.4.1 可编辑内容

contenteditable属性的主要功能是允许用户可以在线编辑元素中的内容。contenteditable是一个布尔值属性,可以指定为true或false。

注意,该属性还有个隐藏的inherit(继承)状态,属性为true时,元素被指定为允许编辑;属性为false时,元素被指定为不允许编辑;未指定true或false时,则由inherit状态来决定,如果元素的父元素是可编辑的,则该元素就是可编辑的。

【示例】在下面的示例中为正文文本包含框<div>标签加上contenteditable属性后,该包含框包含的文本就变成可编辑的了,浏览者可自行在浏览器中修改内容,执行结果如图4.11所示。

图4.11 可编辑文本

在编辑完元素中的内容后,如果想要保存其中内容,只能使用JavaScript脚本把该元素的innerHTML发送到服务器端进行保存,因为改变元素内容后该元素的innerHTML内容也会随之改变,目前还没有特别的API来保存编辑后元素中的内容。

提示:在JavaScript脚本中,元素还具有一个isContentEditable属性,当元素可编辑时,该属性值为true;当元素不可编辑时,该属性值为false。利用这个属性,可以实现对编辑数据的后期操作。

4.4.2 快捷菜单

contextmenu属性用于定义元素的上下文菜单。所谓上下文菜单,就是会在用户右键单击元素时出现。

【示例】下面的示例是使用contextmenu属性定义div元素的上下文菜单,其中contextmenu属性的值是要打开的menu元素的id属性值。

当用户右键单击元素时,会弹出一个上下文菜单,从中可以选择指定的快捷菜单项目,如图4.12所示。

图4.12 打开上下文菜单

提示:目前只有Firefox支持contextmenu属性。

4.4.3 自定义属性

使用data-*属性可以自定义用户数据。具体应用包括如下两点。

  •  data-*属性用于存储页面或元素的私有数据。
  •  data-*属性赋予所有HTML元素嵌入自定义属性的能力。

存储的自定义数据能够被页面的JavaScript脚本利用,以创建更好的用户体验,方便Ajax调用或服务器端数据库查询。

data-*属性包括以下两部分。

  •  属性名:不应该包含任何大写字母,并且在前缀"data-"之后必须有至少一个字符。
  •  属性值:可以是任意字符串。

当浏览器解析时,会忽略前缀"data-",取用其后的自定义属性。

【示例1】下面的示例是使用data-*属性为每个列表项目定义一个自定义属性type。这样在JavaScript脚本中可以判断每个列表项目包含信息的类型。

【示例2】以上面的示例为基础,下面的示例是使用JavaScript脚本访问每个列表项目的type属性值,演示效果如图4.13所示。

图4.13 访问列表项目的type属性值

访问元素的自定义属性,可以通过元素的dataset.对象获取,该对象存储了元素所有自定义属性的值。访问规则与CSS脚本化访问相同。对于复合属性名,通过驼峰命名法访问,如animal-type,访问时使用animalType,避免连字符在脚本中引发的歧义。

注意,目前IE暂不支持这种访问方式。

4.4.4 定义可拖动操作

draggable属性可以定义元素是否可以被拖动。属性取值说明如下。

  •  true:定义元素可拖动。
  •  false:定义元素不可拖动。
  •  auto:定义使用浏览器的默认行为。

draggable属性常用在拖放操作中,详细说明请参考后面章节的“拖放API”。

4.4.5 拖动数据

dropzone属性定义在元素上拖动数据时,是否复制、移动或链接被拖动数据。属性取值说明如下。

  •  copy:拖动数据会产生被拖动数据的副本。
  •  move:拖动数据会导致被拖动数据被移动到新位置。
  •  link:拖动数据会产生指向原始数据的链接。

例如:

    <div dropzone="copy"></div>

提示:目前所有主流浏览器都不支持dropzone属性。

4.4.6 隐藏元素

在HTML5中,所有元素都包含一个hidden属性。该属性设置元素的可见状态,取值为一个布尔值,当设为true时,元素处于不可见状态;当设为false时,元素处于可见状态。

【示例】下面使用hidden属性定义段落文本隐藏显示。

    <p hidden><img src="images/1.jpg" width="200" /></p>

hidden属性可用于防止用户查看元素,直到匹配某些条件,如选择了某个复选框。然后,在页面加载之后,可以使用JavaScript脚本删除该属性,删除之后该元素变为可见状态,同时元素中的内容也即时显示出来。

提示:除了IE,所有主流浏览器都支持hidden属性。

4.4.7 语法检查

spellcheck属性定义是否对元素进行拼写和语法检查。可以对以下内容进行拼写检查。

  •  input元素中的文本值(非密码)。
  •  textarea元素中的文本。
  •  可编辑元素中的文本。

spellcheck属性是一个布尔值的属性,取值包括true和false,为true时表示对元素进行拼写和语法检查,为false时则不检查元素。用法如下。

    <!--以下两种书写方法正确-->
    <textarea spellcheck="true" >
    <input type=text spellcheck=false>
    <!--以下书写方法错误-->
    <textarea spellcheck >

注意,如果元素的readonly属性或disabled属性设为true,则不执行拼写检查。

【示例】下面的示例设计两段文本,第一段文本可编辑、可语法检查;第二段文本可编辑,但不允许语法检查。当编辑文本时,第一段文本显示检查状态,而第二段忽略,效果如图4.14所示。

图4.14 段落文本检查状态比较

4.4.8 翻译内容

translate属性定义是否应该翻译元素内容。取值说明如下。

  •  yes:定义应该翻译元素内容。
  •  no:定义不应翻译元素内容。

【示例】下面的示例演示了如何使用translate属性。

    <p translate="no">请勿翻译本段。</p>
    <p>本段可被译为任意语言。</p>

提示:目前,所有主流浏览器都无法正确地支持translate属性。