2013-03-21 3 views
0

Мое понятие css ниже следующее: будет соответствовать всем элементам img с атрибутом класса, который содержит значение «left» и потомок элемента p. Это верно?descendant selector

p img.left { float: left; margin: 0.9em 0.9em 0.9em 0; padding: 0; } 
+0

вы пробовали его и что-то пошло не так? – fcalderan

+0

Я пытаюсь создать тему на основе существующей, но не могу найти такой элемент в выводе html – walter

ответ

2

Да, это совершенно верно; ваш селектор будет match bothimg elements:

<p> 
    <img class="left" src="http://lorempixel.com/200/200/nightlife" /> 
    <span><img class="left" src="http://lorempixel.com/300/300/nature" /></span> 
</p> 

Вы могли бы, если вы хотите, чтобы выбрать только первый уровень img.left потомков p тега:

p > img.left { 
    /* CSS */ 
} 

JS Fiddle demo.

Это будет не соответствует img в пределах span.

Кроме того, вы могли бы соответствовать только img внутри span:

p span img, 
p span > img, 
span img, 
span > img { 
    /* CSS */ 
} 

JS Fiddle demo.

Ссылки:

1

Вы верны.

p img.left {} 

HTML:

<p> 
    <img class="left" /> * MATCHES THIS * 
    <img /> * NOT THIS * 
</p> 
<div> 
    <img class="left" /> * NOT THIS * 
    <img /> * NOT THIS * 
</div> 

<p> 
    <img class="left" /> * MATCHES THIS * 
    <img /> * NOT THIS * 
    <span> 
     <img class="left" /> * ALSO MATCHES THIS * 
     <img /> * NOT THIS * 
    </span> 
</p> 

С p > img.left {} он не будет соответствовать img внутри div Thats внутри p

+0

«div» не является допустимым дочерним элементом 'p'; поэтому [правило CSS не будет создавать или не влиять на 'img' в' div' в 'p'] (http://jsfiddle.net/davidThomas/F3AEJ/2/). –

+0

LOL это очень верно. Не уверен, что я думал. Фиксация сейчас. – Michael