web组件——影子DOM元素中的媒体查询应用于哪个视口



关于影子DOM样式的HTML5 Rocks教程没有讨论媒体查询。因为阴影边界应该免费提供样式封装,所以如果@media查询应用于宿主元素的大小,而不是浏览器的视口,那将是非常简洁的。

这将解决媒体查询被黑客攻击的问题,而在现实中我们需要@element查询,截至2015年7月,它只存在于GitHub上的一个废弃的回购。

唉,不行。Shadow DOM中的@media查询查看浏览器的视口,而不是主机元素的尺寸。

var root = document.querySelector('div').createShadowRoot();
root.innerHTML = '<style>@media (min-width: 600px) { h3 { color: red; }}</style>' + 
                 '<h3>If this text is not red, you live far in the future</h3>';
<div style="border: 1px solid black; width: 100px"><h3>Light DOM</h3></div>

这可能是因为如果Shadow DOM元素以与主机不兼容的方式调整自己的大小,可能会出现循环问题。

最新更新