2017-04-27 64 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

相關問題