Shadow DOM

Shadow DOM是什么

Shadow DOM是Web Components规范中的一个组成部分。Web Components的概要介绍,可以参考之前的几篇博文:Web Components概述HTML Templates

在介绍Shadow DOM之前,可以先看一个例子。


新建一个HTML页面,代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Demo</title>
</head>
<body>
    <input type="time"/>
</body>
</html>

在浏览器中访问这个页面

(1)在Firefox(版本:35.0.1)下的效果如图1所示:



(2)在Chrome(版本:40.0.2214.93m)下的效果如图2所示:



我们知道,type=“time”是HTML5中新增的属性值,而且当浏览器还不支持相应的属性值时,浏览器会退化到type=“text”的形式,正如图1所示效果。

而浏览器支持该属性值的话,则能显示出我们想要的效果,如图2所示。


那么问题来了:图2的效果是怎么实现的呢?使用input标签,正常的效果应该是图1的呀,怎么会出现图2的效果呢?我们能否知道其实现的具体细节呢?如果能,我们能否也能实现类似的效果呢?

要想知道它是怎么实现的(也就是实现的具体细节),我们有一个方法,那就是【审查元素】,在Chrome下,选择【审查元素】,让我们看看它细节。

在调试面板中,我们看到:


这里看到的代码,跟源码一模一样。


这时我们需要打开调试面板的设置工具,并勾选其中的“Show user agent shadow DOM"选项,如图:




设置完成后,关闭设置面板,回到调试面板中,我们会看到如下图的效果:


这时,我们会看到在input标签里面其实包含着很多普通的HTML标签,如div、span等,这些标签都包含在”#shadow-root (user-agent)"里面。“#shadow-root”里面的内容(标签)就是Shadow DOM的内容,也就是说这就是Shadow DOM。


浏览器正是通过Shadow DOM,将一些内容封装起来作为一个完整的整体来实现某一个功能。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值