HTML5+CSS3从入门到精通(微课精编版)
上QQ阅读APP看书,第一时间看更新

2.5 HTML5新的全局属性

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

2.5.1 contentEditable——可编辑内容

视频讲解

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

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

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

图2.22 可编辑文本

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

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

2.5.2 contextmenu——快捷菜单

视频讲解

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

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

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

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

图2.23 打开上下文菜单

2.5.3 data——自定义属性

视频讲解

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

 data-*属性用于存储页面或元素的私有数据。

 data-*属性赋予所有HTML元素嵌入自定义属性的能力。

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

data-*属性包括两部分:

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

 属性值:可以是任意字符串。

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

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

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

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

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

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

2.5.4 draggable——可拖动

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

 true:定义元素可拖动。

 false:定义元素不可拖动。

 auto:定义使用浏览器的默认行为。

draggable属性常用在拖放操作中,详细说明请参考第15章拖放API。

2.5.5 dropzone——拖动数据

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

 copy:拖动数据会产生被拖动数据的副本。

 move:拖动数据会导致被拖动数据被移动到新位置。

 link:拖动数据会产生指向原始数据的链接。

例如:

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

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

2.5.6 hidden——隐藏

视频讲解

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

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

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

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

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

2.5.7 spellcheck——语法检查

视频讲解

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

 input元素中的文本值(非密码)。

 <textarea>元素中的文本。

 可编辑元素中的文本。

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

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

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

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

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

2.5.8 translate——可翻译

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

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

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

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

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

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