Какова цель селектора " div " и почему так много разработчиков используют его в своих таблицах стилей?
просматривая таблицы стилей с популярных и непопулярных веб-сайтов, я нашел div
селектор включен в них. Нижние четыре примера были взяты из таблиц стилей популярных сайтов Переполнение Стека, Github, Youtube & Twitter:
div.form-item-info{padding:4px 0 4px 4px;width:80%;color:#777;}
.searchFooterBox div span.smallLabel{font-size:14px}
#readme.rst div.align-right{text-align:left;}
.hentry .actions>div.follow-actions{visibility:visible;text-align:left;}
Я считаю, что я могу проектировать полностью функционирующие таблицы стилей CSS без использования div
селектор так что вопрос:
что такое div
селектора функции?
&
почему так много разработчиков используют его?
EDIT:
чтобы быть ясным, при использовании div
селектор, что это значит, когда div
появляется перед id или класс?
например:
div.foo { color:black; }
div#bar { color:gray; }
и что значит div
появляется после id или класс?
для пример:
.foo div { color:black; }
#bar div { color:gray; }
когда div
селектор появляется после идентификатора или класса после него должен появиться другой селектор?
например:
#foo div span { color:black; }
#foo div p { color:black; }
5 ответов
- быть более явным в вашем селекторе облегчает запоминание того, как выглядит структура HTML. Через несколько месяцев я могу читать CSS и, основываясь на моих явных правилах, я могу автоматически отображать структуру в моей голове, не возвращаясь к HTML.
- , указав имя узла перед классом или ID, правило становится более конкретным. Если вы хотите переопределить
.foo { color:black; }
для div, который имеет класс foo, просто сделайтеdiv.foo { color:red; }
. Абзацы, которые имеют классfoo
будет черным, в то время как divs будет красным. - это может быть полезно, если вы хотите обслуживать различные правила css на основе структуры HTML. В правилах ниже, любая span внутри div является красный. Любой прямой пролет под
#foo
синего цвета.
CSS:
#foo div span { color:red; }
#foo span { color:blue; }
html для этого:
<div id="foo"><span>blah</span> <div><span>blah</span></div> </div>
Живая демо, что вы можете играть с:http://jsfiddle.net/6dw2r/
EDIT:
- div#foo соответствует div с идентификатором foo.
- div#foo div означает любые div потомки #foo.
- нет. Это не так.
читайте http://www.w3.org/TR/CSS2/selector.html#pattern-matching для дальнейших вопросов.
div.form-item-info{...} // all div elements that have class~=form-item-info
.form-item-info{...} // all elements that have class~=form-item-info
в HTML и XHTML
большинство других элементов (
,
, и т. д.) имеют специфические смысловые значения. Это плохая практика использовать, скажем, элемент для чего-то, что не является абзацем. Но Если вам нужно что-то чисто декоративное или группировать связанные элементы,
тег определяет деление или раздел в HTML-документе.
тег часто используется для группировки block-элементы для их форматирования стили.
http://www.w3schools.com/tags/tag_div.asp
они просто ясно говорят о своих селекторах, что, как правило, хорошо, так как вы более конкретны при обращении к элементам, которые будут стилизованы. (Меньше вероятность конфликтов и непредвиденных моделирование.)
div.foo { rule }
div#bar { rule }
это означает, что правило применяется только к элементам div с классом foo или id bar, и правило не будет применяться к элементам non-div с классом foo или id bar.
.foo div { rule }
#bar div { rule }
это означает, что правило применяется ко всем элементам div внутри любого элемента с классом foo или id bar. Это называется селектор.
#foo div span { rule }
#foo div p { rule }
когда селектор div появляется после идентификатора или класса, не требуется иметь другой селектор после него. Если есть такой селектор, правило будет применяться к выбранным элементам, только если они находятся внутри элемента div, который находится внутри элемента с идентификатором foo.
вы можете прочитать на ваших селекторах здесь: