我想使用支持非Shadow-DOM的浏览器测试Polymer应用程序,例如Firefox,PhantomJS,以及其他使用WebDriver的浏览器。 当我使用
之类的东西时,Firefox和PhantomJS的WebDriver命令失败driver.findElement(const By.cssSelector('* /deep/ #some-div'));
当无法使用polyfill时,是否有一些规则如何最好地翻译/接近这些选择器:
/deep/
::shadow
:host()
:host-context()
:content
我想创建一个函数,在发送请求之前,为不支持它们的浏览器自动将这些选择器转换为非阴影DOM选择器,为此我需要知道如何翻译它们。
答案 0 :(得分:2)
问题有点陈旧,但如果你还没有想出来的话。
:host {
opacity: 0.4;
transition: opacity 420ms ease-in-out;
}
:host(:hover) {
opacity: 1;
}
:host(:active) {
position: relative;
top: 3px;
left: 3px;
}
/*Convert it to*/
x-element {
opacity: 0.4;
transition: opacity 420ms ease-in-out;
}
x-element:hover {
opacity: 1;
}
x-element:active {
position: relative;
top: 3px;
left: 3px;
}
<selector>
)伪类与主机元素匹配,如果它或其任何祖先与<selector>
匹配。例如:
仅当自定义元素是具有类.different
的元素的后代时,以下规则才适用于自定义元素。
:host-context(.different) {
color: red;
}
<body class="different">
<x-foo></x-foo>
</body>
用简单的东西替换这个并不是一件容易的事。即使webcomponents polyfill也没有尝试。我想不出任何css只能实现这一目标。
::content > h3 {
color: green;
}
/*replace it with*/
x-element h3 {
color: green;
}
>
,因为在分发后不受支持的浏览器中,h3将不再是x-element的直接后代。鉴于内容选择器的使用方式,我建议在任何可用的地方删除子选择器。
答案 1 :(得分:1)
/deep/
可以删除::shadow
可以替换为>
还不了解其他人