如何“document.createElement"工作到“显示”;财产
how "document.createElement" works to "display" property
我发现了一个有趣的现象,它在Firefox和Chrome中的表现不同。
用F12打开你的devTool浏览器,然后输入如下:
var span=document.createElement("span");
document.defaultView.getComputedStyle(span).display;
在Firefox中返回"block",在Chrome中返回""
。我第一次遇到这种情况是在Firefox中,它让我惊讶的是,结果是"block"!然而,当document.body.appendChid(span)
时,它是ok的。
我在MDN中搜索,但最后没有任何收获。我猜document.defaultView.getComputedStyle
是受浏览器渲染引擎的影响。"display"属性是在渲染引擎将元素渲染到DOM树之后设置的。gecko(Firefox)将其默认值设置为"block",而webkit(Chrome)将其设置为"。
这是因为规范没有指定DOM外的元素是否具有计算样式。
Firefox认为它们可以。它们会受到文档中样式表的影响。
console.log(getComputedStyle(document.createElement('span')).display);
// "flex" on Firefox
span { display: flex; }
Chrome认为他们没有,所以返回空字符串。您需要将它们附加到文档中才能使用getComputedStyle
。
这在cloneNode的www-style: computedStyle中讨论过
你得到display: block
而不是最初的inline
,因为,根据CSS显示,
根元素的显示类型总是被阻塞。
当您在文档外部创建span
元素时,它没有父元素,因此它是根元素。然后inline
变成block
。
span { display: inline-block }
,那么也会得到block
。span { display: inline-flex }
可以得到flex
, span { display: inline-table }
可以得到table
,以此类推。
相关文章:
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何在生成下载文件时显示加载动画
- React重新渲染但未显示正确的组件
- nodejs-expressjs上传图像并显示它们
- 使用JSP从服务器检索和显示图像
- 音频控件在mouseover上显示,在mouseout上淡出
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 显示5秒后隐藏潜水
- 画廊图像未显示
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 高亮显示时编辑文本大小和颜色
- 有时数据是't显示在浏览器中
- 当鼠标悬停在文本中的单词上时显示警报
- 如何“document.createElement"工作到“显示”;财产
- CSS选择器与多个字段和"显示"财产