2013-12-24 3 views
1

Какая разница в шаблоне селектора E * F и E F? Оба E * F и E F применяют соответствующий стиль до F, который является дочерним по отношению к E. Рассмотрим HTML:Родительский элемент в css

<div id= "parent"> 
    <div id="subparent"> 
     <div id="subsubparent"> 
      <input type="text"/> 
     </div> 
    </div> 
</div> 

и соответствующие CSS

#parent, #subparent{ 
    padding:20px; 
    background:green; 
    width: 400px; 
    height: 400px; 
} 
#subparent{ 
    background:black; 
    height:200px; 
    width:200px; 
} 
#subsubparent{ 
    background: blue; 
    width:100px; 
    height:100px; 
} 
div[id="parent"] input{ 
    width:50px; 

} 

Где div[id="parent"] input применения соответствующего стиля к входу, который является дочерним div#parent. Я в моем случае div#subparent является ребенком div#parent, div#subsubparent является ребенком div#subparent и input является ребенком div#subsubparent. Следовательно, input является дочерним по отношению к div#parent.

В случае E * F. E * соответствует любому элементу, в котором ребенок E и, следовательно, E * F mathces F элемент, который является ребенком E.

+0

как доказательство http://www.w3schools.com/cssref/css_selectors.asp – agconti

ответ

1

Что разница в шаблоне E * F и E F селектора?

E F соответствует любому F, который является потомком, если E. Селектор также соответствует, если F - это ребенок E.

E * F соответствует любому F, который является потомком любого потомка (*) из E. Селекторами не соответствует, если F - ребенок E.

Пример:

<div class="foo"> 
    <div class="bar"></div> 
    <div class="baz"> 
     <div class="bar"></div> 
    </div> 
</div> 

.foo .bar все матчи .bar элементы внутри .foo.

.foo * .bar только соответствует элементу .bar внутри .baz.


Другой способ смотреть на это: E F также может быть записана в виде E * F, E > F, следовательно E * F лишь подмножество из каких E F выбирает.

1

селекторы объясняются здесь:

http://www.w3.org/TR/CSS21/selector.html

E F 

означает, что все F детей Е.

E * F 

означает, что все F великие дети Е. То есть, F не может быть прямой ребенок Е. Это, как говорится, может быть на любом уровне ниже детей E.

Другая точность:

E > F 

означает F, но только если прямой потомок Е.

+0

* «означает все дети F E» * Будьте внимательны с терминологией. Ребенок - это только прямой потомок *. Пространство - это селектор потомков *, он выбирает * потомков * (включая детей). Это как в реальной жизни: ребенок вашего ребенка - ваш внук (или потомок), а не ваш ребенок. –

0

E * F матчей потомка F, что является потомком * (ничего), который является потомком E, в то время как E F матчей потомка F из E. E * F не соответствует его потомству, только потомкам его ребенка. Используйте > для ребенка.

+0

Не ребенок, потомок. Существует причина, по которой 'E F' вызывается * селектор потомков * и' E> F' * дочерний селектор *. –

Смежные вопросы