Селектор потомков не работает

Когда я пытаюсь нацелить все якорные элементы внутри элемента p, используя селектор потомков. Правила применяются только к дочерним элементам, а не к вложенным элементам.

p a {
  display: inline;
  color: red;
}
<p>
  <a href="http://www.reddit.com">Go to Reddit website</a>
  <a href="http://www.quora.com">Go to QUORA</a>
  <div>
    <a href="http://www.channel9.com">channel9</a> 
  </div>
</p>

5 ответов

Решение

Кажется, ваш HTML является недействительным, попробуйте заменить p с div, Он должен работать. Что-то вроде ниже -

div a {
  display: inline;
  color: red;
}
<div>
  <a href="http://www.reddit.com">Go to Reddit website</a>
  <a href="http://www.quora.com">Go to QUORA</a>
  <div>
    <a href="http://www.channel9.com">channel9</a>  
  </div>
</div>

Для деталей - почему <p> тег не может содержать <div> тег внутри него?

p тег не может иметь div тег внутри него. Так как это недействительный HTML, ваш браузер исправляет это для вас. Закрывает p пометить, как только он видит div тег. А также добавляет стартовую p тег для закрытия p тег

Ваш фактический HTML

<p>
   <a href="http://www.reddit.com">Go to Reddit website</a>
   <a href="http://www.quora.com">Go to QUORA</a>
   <div>
        <a href="http://www.channel9.com">channel9</a>  
   </div>
</p>

Что это на самом деле делает

<p>
   <a href="http://www.reddit.com">Go to Reddit website</a>
   <a href="http://www.quora.com">Go to QUORA</a>
</p>
<div>
   <a href="http://www.channel9.com">channel9</a>  
</div>
<p></p>

И так как a тег с текстом channel9 не внутри p тэг, твой css не имеет никакого эффекта

<p>
   <a href="http://www.reddit.com">Go to Reddit website</a>
   <a href="http://www.quora.com">Go to QUORA</a>
   <div>
        <a href="http://www.channel9.com">channel9</a>  
   </div>
</p>

CSS

a {
   display: inline;
   color: red;
}

Вы не можете использовать div внутри элемента a p

p a {
  display: inline;
  color: red;
}
<p>
  <a href="http://www.reddit.com">Go to Reddit website</a>
  <a href="http://www.quora.com">Go to QUORA</a>
  <span>
    <a href="http://www.channel9.com">channel9</a> 
  </span>
</p>

Пожалуйста, используйте этот код вместо кода выше.

.clr-rd a {
  color: red;
  display: inline;
}
<div class="clr-rd">
  <p>
    <a href="http://www.reddit.com">Go to Reddit website</a>
    <a href="http://www.quora.com">Go to QUORA</a>
    <div>
      <a href="http://www.channel9.com">channel9</a> 
    </div>
  </p>
</div>

Другие вопросы по тегам