2017-05-31 38 views
7

所以,这里是我的HTML的一个片段:是否可以设计CSS类相对于另一个CSS类(而不是外部类)?

<div class="stepwizard__step"> 
    <a class="btn btn-primary stepwizard__btn">1</a> 
    <p class="stepwizard__step-text">Payment</p> 
</div> 

基本上,我想要做的是,每次有一个引导主要按钮(.btn-primary),我想改变.stepwizard__step-text的颜色(在此时间情况下,“付款”)红色。

这可能吗?

我的第一反应是去尝试这样的:

.btn-primary > .stepwizard__step-text { 
    color: red; 
} 

,但后来我意识到,这是行不通的,因为stepwizard__step-text类不是btn-primary类中。

我意识到这是一个有点舒展的,但有在CSS的方式来检查的stepwizard__step内部存在的btn-primary类,如果是的话,到stepwizard__step-text颜色变为红色?如果没有,任何人都可以想办法做到这一点?

+0

请问'p'被称呼*始终*紧跟在'a.btn-primary'。 – Shaggy

+0

在这种情况下,是的 – AliciaGuerra

回答

3

元素>元素选择器用于选择具有特定父元素的元素。

注意:未选择不直接指定父级子元素的元素。

所以,必须使用+选择:

元素+元件选择器用于选择被后(未内侧)第一指定元件立即置于元件。

阅读更多:

https://www.w3schools.com/cssref/sel_element_gt.asp

你的情况变化如下代码:

.btn-primary + p.stepwizard__step-text { 
 
    color: red; 
 
}
<div class="stepwizard__step"> 
 
    <a class="btn btn-primary stepwizard_btn">1</a> 
 
    <p class="stepwizard__step-text">Payment</p> 
 
</div>

1

你可以这样做:

.btn-primary+p.stepwizard__step-text { 
 
    color: red; 
 
}
<div class="stepwizard__step"> 
 
    <a class="btn btn-primary stepwizard_btn">1</a> 
 
    <p class="stepwizard__step-text">Payment</p> 
 
</div>

希望工程为您的使用!

+0

@ehsan嗯,我没有复制你的答案?但是,我确实看到我们的答案非常相似。 – TheDarkKnight

+0

工作!非常感谢!我很高兴知道这可以做到! – AliciaGuerra

+0

@ehsan为什么downvote? O.o – TheDarkKnight

1

这里是解决方案:

。stepwizard__step> A + P {颜色:红;}

.stepwizard__step A + P {颜色:红;}

.stepwizard__step .btn-primary + p {color:red;}

.stepwizard__step .btn小学+ .stepwizard__step文本{颜色:红色;}

让我知道,如果有任何其他的混乱呢?

+0

为了什么被问,这些都是错误的,酒吧的最后一个。 – Shaggy

3

是否有CSS的方式来检查的stepwizard__step内部存在的btn-primary类,如果是的话,到stepwizard__step-text颜色变为红色?

是的,但只有当stepwizard__step-textbtn-primary。这是因为规则只会沿着DOM树走下去,而不会走向父元素或前辈。

的规则可以如下构建:

  1. 选择.btn-primary.stepwizard__step ...

    .stepwizard__step .btn-primary 
    
  2. ...并定位了.stepwizard__step-text未来right after it

    .stepwizard__step .btn-primary + .stepwizard__step-text 
    

如果有可以是.btn-primary.stepwizard__step-text之间的元件,在最后选择器使用的~代替+。这是general sibling selector

你的例子会变成如下所示。

.stepwizard__step .btn-primary ~ .stepwizard__step-text { 
 
    color: red; 
 
}
<div class="stepwizard__step"> 
 
    <a class="btn btn-primary stepwizard_btn">1</a> 
 
    <p class="stepwizard__step-text">Payment</p> 
 
</div>

+2

“这是因为规则只往下走的DOM树(CSS =层叠样式表)。”常见的误解; CSS中的级联与树遍历无关。但除此之外,这是唯一值得提升的答案。 – BoltClock

+0

@BoltClock真的吗?那么今天我学到了。 I̶'̶l̶l̶删除我删除它从我的答案,并会做一些阅读然后:-) –

+0

简而言之,级联是指每个元素风格的分辨率。样特异性,多次声明,内嵌样式的东西,!重要的是,等继承是*不*包括属性值从父母转移到小孩级联的一个方面,但风格决议最终还是发生在本地。正如你可以想象的,继承不会从前面的兄弟姐妹到后面的兄弟姐妹。 – BoltClock

相关问题