Переопределить стиль CSS родительского элемента, не затрагивая другие элементы

#css #overriding #parent

#css #переопределение #родительский

Вопрос:

Я хотел бы знать, как отобразить элемент, содержащийся в родительском элементе, который имеет характеристики «display: none». Но оставьте другие дочерние элементы под этим родительским элементом нетронутыми. Вот простой пример:

 <div id="parent">
    <p id="item1">Item should show</p>
    <p id="item2">Item should show</p>
    <p id="item3">Item should not show</p>
<div><!--/parent-->

<style>
    #parent {display: none;}
    #item3 {display: block !important;}
</style>
  

Итак, в этом примере я хочу, чтобы отображался #item3, но остальная часть #parent и его дочерние элементы не отображались. Я знаю, что существуют обходные пути, которые включают изменение CSS каждого отдельного элемента, но я работаю здесь с десятками элементов, и мне было интересно, возможно ли это, даже через JS. Заранее спасибо.

Ответ №1:

Почему бы вам не использовать вместо:

 #parent>p{display:none;}
#item3{display:block;}
  

Таким образом, все дочерние элементы p в вашем родительском элементе не будут отображаться, но будет отображаться конкретный #item3 .

Ответ №2:

Если вы скроете родительский элемент, дочерние элементы не могут быть показаны.

Почему бы вам не скрыть нежелательные дочерние элементы и не показать только те, которые нужно показать.

 <div id="parent">
<p id="item1" class="hide">Item should show</p>
<p id="item2" class="hide">Item should show</p>
<p id="item3" class="show">Item should not show</p>
  

И ваш CSS будет.

 .hide{display:none;}
.show{display:block; }