Shadow Dom ::content css 选择器优先级?
Shadow Dom ::content css selector priority?
我有这样的影子 dom 元素:
<style>
::content div{
padding-left:130px;
}
</style>
<div class="shadow">
foo
<content select="div"></content>
</div>
从页面上加载的样式尝试使用这样的选择器覆盖它
.shadow /deep/ div{
padding-left:50px;
}
但是阴影内部的选择器dom具有更高的优先级。我发现给第二个选择器更高优先级的唯一方法是使用 important。还有别的办法吗?
如果你的 div
来自光线 DOM,你实际上并不需要 /deep/
。
我认为您有两个同等重要的选择器:::content div
和 .shadow div
。解决这个问题的一种方法是给你的 div
一个 class,并让压倒一切的样式使用它来提高他们的分数。
例如:jsbin
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Polymer</title>
<script src="http://www.polymer-project.org/components/webcomponentsjs/webcomponents.js"></script>
<link rel="import" href="http://www.polymer-project.org/components/polymer/polymer.html">
<style>
.widget .special {
color: blue;
}
</style>
</head>
<body>
<polymer-element name="x-foo">
<template>
<style>
::content > div {
color: red;
}
</style>
<h1>Hello from x-foo</h1>
<content select="div"></content>
</template>
<script>
Polymer({
});
</script>
</polymer-element>
<x-foo class="widget">
<div class="special">Hello World</div>
</x-foo>
</body>
</html>
我有这样的影子 dom 元素:
<style>
::content div{
padding-left:130px;
}
</style>
<div class="shadow">
foo
<content select="div"></content>
</div>
从页面上加载的样式尝试使用这样的选择器覆盖它
.shadow /deep/ div{
padding-left:50px;
}
但是阴影内部的选择器dom具有更高的优先级。我发现给第二个选择器更高优先级的唯一方法是使用 important。还有别的办法吗?
如果你的 div
来自光线 DOM,你实际上并不需要 /deep/
。
我认为您有两个同等重要的选择器:::content div
和 .shadow div
。解决这个问题的一种方法是给你的 div
一个 class,并让压倒一切的样式使用它来提高他们的分数。
例如:jsbin
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Polymer</title>
<script src="http://www.polymer-project.org/components/webcomponentsjs/webcomponents.js"></script>
<link rel="import" href="http://www.polymer-project.org/components/polymer/polymer.html">
<style>
.widget .special {
color: blue;
}
</style>
</head>
<body>
<polymer-element name="x-foo">
<template>
<style>
::content > div {
color: red;
}
</style>
<h1>Hello from x-foo</h1>
<content select="div"></content>
</template>
<script>
Polymer({
});
</script>
</polymer-element>
<x-foo class="widget">
<div class="special">Hello World</div>
</x-foo>
</body>
</html>