2017-04-27 40 views
3

是否可以根据其祖先的CSS属性值选择元素?比方说,我有以下HTML文本:我可以使用纯CSS设计基于其祖先位置属性的元素吗?

<div><!-- ancestor --> 
    <!-- I may have N level descendants which are as well ancestors for the upcoming div --> 
    <div class="myTarget"> 
    The div I want to target 
    </div> 
</div> 

我不知道比如果他们中的一个具有CSS属性display: table-cell那么我想myTargetposition: absolute其他祖先什么,否则应该是position: relative

.myTarget { 
    position: relative; 
} 

/************************************************************************************************* 
* This is actually the question, how to target .myTarget when some ancestor div contains a given 
* cssProperty. Code below is just pseudo-code not actual CSS. 
*************************************************************************************************/ 
div[cssProperty=desiredValue] .myTarget { 
    position: absolute; 
} 

我的猜测是,我不能,但因为它是可能的选择根据其属性我想,也许这应该是一个办法是根据它的CSS属性选择以及元素。

+3

我认为这将是可能的,如果你的CSS会内联,比'DIV [风格=“显示:表单元格“]'。或者使用JS来检查父项属性 – Justinas

+0

是的,您可以基于祖先属性设置样式元素,其称为css属性样式。阅读关于它[这里](https://www.w3schools.com/css/css_attribute_selectors.asp) –

+0

可以很容易地完成,如果你可以添加一个类到具有display:table-cell的元素。 – nivesnine

回答

0

我的解决方案将是一个类:

<div class="ancestor"> <!-- ancestor --> 
    <div class="myTarget"> 
    The div I want to target 
    </div> 
</div> 

而CSS:

.myTarget { 
    position: relative; 
} 

div.ancestor > .myTarget { 
    position: absolute!important; 
} 
+0

不幸的是,它不是一个选项,因为最初我无法控制我的祖先。当然,我可以通过JS获得访问权限,但这正是我试图避免的情况,也是我询问是否有机会用纯CSS实现目标的原因。 – Miles

相关问题