HTML 5.2 新特性介绍

104 篇文章 0 订阅
104 篇文章 1 订阅

原生的 元素

在 HTML 5.2 的所有变化里我感到最为激动的就是引入了 元素,实现了浏览器原生的对话框。对话框在 web 开发中非常常见,但是现在每个实现都不太一样。另一方面,实现一个支持无障碍化的对话框很难,实际上,现在 web 上使用的大多数对话框对于视觉障碍人士来说都是难以使用的。

新引入的

首先,使用

image

默认情况下,对话框是不可见的,除非你设置了open属性。

image

open属性可以通过 HTMLDialogElement上的 show()和close()方法来改变。

image

目前,Chrome 已经支持了 元素,而在 Firefox 中可以通过配置打开这一特性。具体情况可以查看 https://caniuse.com/#feat=dialog。

在 iframe 里使用支付请求 API

支付请求 API 是由浏览器原生提供支付方式,旨在为用户在 web 上进行支付提供一个标准而且一致的方法。它让浏览器提供统一一致的界面来搜集用户的支付信息,而不是让用户填写各个网站自己的支付表单。

在 HTML 5.2 之前,支付请求 API 不能在 iframe 中 使用。这使得那些第三方提供的嵌入式支付解决方案(例如 Stripe、Paystack)完全无法利用这个 API,因为它们的支付接口都是需要在一个 iframe 中进行处理的。

HTML 5.2 为 iframe 引入了一个 allowpaymentrequest 属性,设置这个属性就可以允许 iframe 中使用支付请求 API 了。

image

为苹果设备定义不同尺寸的图标

通过在 HTML 文档的头部使用 <linkrel=“icon”>,我们可以定义网页的图标。同时,还可以使用 sizes属性来定义多个不同尺寸的图标。

image

虽然这个定义完全是建议性的,但它允许浏览器来自主决定使用哪个图标。尤其是像现在大多数设备的最优图标尺寸都不一样,只有浏览器自己才知道怎样的图标尺寸更为合适。

在 HTML 5.2 以前, sizes 属性仅仅当 link 标签的 rel 属性为 icon 时才视为有效。可是,苹果的 iOS 设备并不支持这种 sizes 属性,它引入了一个私有的 rel 值 apple-touch-icon,用于定义网页在苹果设备上的图标。

在 HTML 5.2 中,规范的这一限制被去除,当 rel 为 icon 或 apple-touch-icon 时都可以使用 sizes 属性。

新的有效写法

除了引入一些新特性,HTML 5.2 中也把一些之前被规范认为无效的 HTML 写法变成有效。

多个 元素

元素用于表达网页的主体内容。对于在多个网页中会反复出现的内容,我们可以把它们放在 header、section 或者别的元素中,但 元素是被设计用于专门放置页面上特定且唯一的内容的。因此,在 HTML 5.2 之前,规范要求

元素在页面的 DOM 结构中只能出现一次。

可是随着单页应用的流行,我们难以再去坚持这一准则。可以设想会有这样一种情况:DOM 中有需要有多个 元素,但在同一时间用户只会看到其中一个。

在 HTML 5.2 中,现在只要能保证用户同时只能看到一个 元素,我们就可以在页面中多次使用这个标签。其它不显示的 元素必须通过 hidden 属性设置为隐藏。

image

我们都很清楚利用 CSS 有多种办法可以隐藏元素。可是对于页面上的多个 元素,我们必须用 hidden 属性将目前不需要显示的元素进行隐藏。任何别的方法,比如 display:none; 或者 visibility:hidden;,都会被规范认为是无效的。

在 中定义样式

一般情况下,我们都会使用

在 HTML 5.2 中,在 中的任何地方都可以定义

image

可是仍然需要注意的是,从性能角度考虑,样式定义最好还是放在 中。规范中也提到:

在文档的头部使用样式元素是一种更为可取的做法。在文档体内使用样式可能会导致页面样式重排、触发重新布局或(和)重绘,因此应该谨慎使用这一方式。

还应当注意的是,像在上面这个例子中,样式定义仍然是作用于全局的。在 HTML 文档内出现的样式定义仍然会应用于在其前面的元素之上,这也是它会造成重绘的原因。

在 内使用 h# 标签

用于在表单中表示一个 的标题。在 HTML 5.2 之前, 中的内容只能使用纯文本,现在我们可以在其中使用 h# 标签。

image

当我们想使用 来为表单中不同部分进行分组时,这一用法非常有用。就像上面这个例子,使用 h# 标签可以让那些依赖于文档大纲视图进行导航的用户更为方便地跳转到这些表单分组区域。

被移除的特性

在 HTML 5.2 中,有些特性被移除了,包括:

  • keygen:用于为表单生成公钥
  • menu 和 menuitem:用于创建导航或菜单

新的视为无效的写法

最后,还有一些开发实践被规范认为是无效的。

元素中不允许包含行内、浮动或者块级元素

在 HTML 5.2 中,

元素只能包含短语内容(译者注:phrasing content,具体解释可参见这里)。下列元素类型不能再被嵌套在一个段落中:

  • 行内块
  • 行内表格
  • 浮动或者定位的块

不再需要严格的 Doctype 声明

我们终于可以和下面这种严格的文档类型说明说再见了:

<!DOCTYPE HTML PUBLIC 
"-//W3C//DTD HTML 4.01//EN"
 "http://www.w3.org/TR/html4/strict.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

如果你依然在编程的世界里迷茫,不知道自己的未来规划,可以加入前端学习进阶内推交流群685910553前端资料分享)。里面可以与大神一起交流并走出迷茫。

新手可免费领取学习资料,看看前辈们是如何在编程的世界里傲然前行不停更新最新的教程和学习方法(详细的前端项目实战教学视频),

有想学习web前端的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值