上下文相关 CSS 样式
Context Senstive CSS Style
我在 .css 文件中指定特定样式时遇到问题。我希望 h1 具有基于 div 其 in
的上下文相关样式
我也在尝试避免 !important 的 use/overuse 并用 #id 标记每个实例。如果我必须为每种样式使用 !important 或 #id,我认为它也可以在线完成。简而言之,我想要基于标签所在标签的不同样式。
所以...给定 class="A" 和 class="B"
如果像这样的标签在 div 中并且 class="A" 那么我希望它具有 A 的样式,而不管 class="B" 定义不同。
在 .css 文件中将 B 放在 A 之后之前,此代码一直有效。那么 B 赢得样式 war.
<div class="A">
<h1>some text right aligned</h1>
<p> some text left aligned</p>
</div>
.A
{
some styles
}
.A h1
{
text-align: right;
}
.A p
{
text-align: left;
}
这破坏了上面的内容
.B
{
some styles
}
.B h1, p
{
text-align: center;
}
这取决于Specificity 概念。
你可以解决这个问题,例如,在定义为 .A
的每个 属性 后附加 !important
.A
{
some styles !important
}
.A h1
{
text-align: right !important;
}
.A p
{
text-align: left !important;
}
或者在容器 DIV 上再添加一个 css class 并使 .A 后代规则更加具体,这要归功于这个额外的 class.
<div class="high A">
<h1>some text right aligned</h1>
<p> some text left aligned</p>
</div>
.high.A
{
some styles
}
.high.A h1
{
text-align: right;
}
.high.A p
{
text-align: left;
}
.B
{
some styles
}
.B h1, p
{
text-align: center;
}
这样,为 .A
class 定义的规则比 .B
定义的规则更具体
因为.B h1, p
这指定了所有 Ps 而不是 Ps 与 .B class 相关,并且因为 .B 最后被声明它覆盖了以前的样式。
操作方法如下:
<div class="a">
<h1>right-aligned text</h1>
<p>left-aligned text</p>
</div>
<div class="b">
<h1>center-aligned text</h1>
<p>center-aligned text</p>
</div>
和css:
.a h1 { text-align: right; }
.a. p { text-align: left; }
.b h1, .b p { text-align: center; }
js fiddle: http://jsfiddle.net/uadkrj9u/
我看到的与您的代码唯一的冲突是 'p' 标记在底部重新设置了样式。有逗号意味着它现在与'.B'无关,并且将被重新设计,因为它的位置来自'.A p'。所以你需要:
.B h1, .B p
{
text-align: center;
}
确保
不受另一个 class 的影响。那将是唯一的较低代码 'destroys'.
你的引号乱七八糟,我的浏览器无法显示。从技术上讲,none 你的风格来自你给我的代码。否则他们会,尽管 B 存在于样式表中,因为 HTML/CSS 支持元素的最具体样式。
<div class=”A”>
<div class="A">
其他答案中的人说 P 可能会导致问题,但因为您已经有 .A p {}
,所以更笼统的 p {}
不会覆盖它,因为它不太具体。
您还可以通过将元素放在具有特定 class 的父元素 div 中来添加特定性。更具体将覆盖样式而无需使用 !important
或使用 ID(尽管这种方法没有任何问题,除非您需要使用多个)
<style>
.parent-div .A {
...
}
</style>
<div class="parent-div">
<div class=”A”>
<h1>some text right aligned</h1>
<p> some text left aligned</p>
</div>
<div>
我在 .css 文件中指定特定样式时遇到问题。我希望 h1 具有基于 div 其 in
的上下文相关样式我也在尝试避免 !important 的 use/overuse 并用 #id 标记每个实例。如果我必须为每种样式使用 !important 或 #id,我认为它也可以在线完成。简而言之,我想要基于标签所在标签的不同样式。
所以...给定 class="A" 和 class="B"
如果像这样的标签在 div 中并且 class="A" 那么我希望它具有 A 的样式,而不管 class="B" 定义不同。
在 .css 文件中将 B 放在 A 之后之前,此代码一直有效。那么 B 赢得样式 war.
<div class="A">
<h1>some text right aligned</h1>
<p> some text left aligned</p>
</div>
.A
{
some styles
}
.A h1
{
text-align: right;
}
.A p
{
text-align: left;
}
这破坏了上面的内容
.B
{
some styles
}
.B h1, p
{
text-align: center;
}
这取决于Specificity 概念。
你可以解决这个问题,例如,在定义为 .A
!important
.A
{
some styles !important
}
.A h1
{
text-align: right !important;
}
.A p
{
text-align: left !important;
}
或者在容器 DIV 上再添加一个 css class 并使 .A 后代规则更加具体,这要归功于这个额外的 class.
<div class="high A">
<h1>some text right aligned</h1>
<p> some text left aligned</p>
</div>
.high.A
{
some styles
}
.high.A h1
{
text-align: right;
}
.high.A p
{
text-align: left;
}
.B
{
some styles
}
.B h1, p
{
text-align: center;
}
这样,为 .A
class 定义的规则比 .B
因为.B h1, p
这指定了所有 Ps 而不是 Ps 与 .B class 相关,并且因为 .B 最后被声明它覆盖了以前的样式。
操作方法如下:
<div class="a">
<h1>right-aligned text</h1>
<p>left-aligned text</p>
</div>
<div class="b">
<h1>center-aligned text</h1>
<p>center-aligned text</p>
</div>
和css:
.a h1 { text-align: right; }
.a. p { text-align: left; }
.b h1, .b p { text-align: center; }
js fiddle: http://jsfiddle.net/uadkrj9u/
我看到的与您的代码唯一的冲突是 'p' 标记在底部重新设置了样式。有逗号意味着它现在与'.B'无关,并且将被重新设计,因为它的位置来自'.A p'。所以你需要:
.B h1, .B p
{
text-align: center;
}
确保
不受另一个 class 的影响。那将是唯一的较低代码 'destroys'.
你的引号乱七八糟,我的浏览器无法显示。从技术上讲,none 你的风格来自你给我的代码。否则他们会,尽管 B 存在于样式表中,因为 HTML/CSS 支持元素的最具体样式。
<div class=”A”>
<div class="A">
其他答案中的人说 P 可能会导致问题,但因为您已经有 .A p {}
,所以更笼统的 p {}
不会覆盖它,因为它不太具体。
您还可以通过将元素放在具有特定 class 的父元素 div 中来添加特定性。更具体将覆盖样式而无需使用 !important
或使用 ID(尽管这种方法没有任何问题,除非您需要使用多个)
<style>
.parent-div .A {
...
}
</style>
<div class="parent-div">
<div class=”A”>
<h1>some text right aligned</h1>
<p> some text left aligned</p>
</div>
<div>