div
является блочным элементом, span
является встроенным.
Это означает, что для их семантического использования следует использовать div для обтекания разделов документа, а интервалы - для обтекания небольших частей текста, изображений и т. Д.
Например:
<div>This a large main division, with <span>a small bit</span> of spanned text!</div>
Обратите внимание, что нельзя размещать элемент уровня блока внутри встроенного элемента, поэтому:
<div>Some <span>text that <div>I want</div> to mark</span> up</div>
... незаконно.
РЕДАКТИРОВАТЬ: Начиная с HTML5, некоторые элементы блока могут быть размещены внутри некоторых встроенных элементов. См. Ссылку MDN здесь для довольно четкого списка. Вышеприведенное все еще является недопустимым, поскольку <span>
принимает только контент фраз, а <div>
является содержимым потока.
Вы просили привести несколько конкретных примеров, так же как и на моем сайте по боулингу, BowlSK :
<div id="header">
<div id="userbar">
Hi there, <span class="username">Chris Marasti-Georg</span> |
<a href="/edit-profile.html">Profile</a> |
<a href="http://www.bowlsk.com/_ah/logout?...">Sign out</a>
</div>
<h1><a href="/">Bowl<span class="sk">SK</span></a></h1>
</div>
Хорошо, что происходит? В верхней части моей страницы у меня есть логический раздел, «заголовок». Поскольку это раздел, я использую div (с соответствующим идентификатором). В этом у меня есть пара разделов: панель пользователя и фактическое название страницы. В заголовке используется соответствующий тег h1
. Панель пользователя, являющаяся разделом, заключена в div
. В пределах этого имя пользователя заключено в span
, чтобы я мог изменить стиль. Как видите, я также обернул span
около 2 букв в названии - это позволяет мне менять их цвет в моей таблице стилей.
Также обратите внимание, что HTML5 включает в себя широкий новый набор элементов, которые определяют общие структуры страниц, такие как article, section, nav и т. Д. Раздел 4.4 рабочего проекта HTML 5 перечисляет их и дает советы что касается их использования. HTML5 все еще является рабочей спецификацией, поэтому пока что нет ничего «окончательного», но весьма сомнительно, что какой-либо из этих элементов куда-то движется. Существует взлом javascript, который вам нужно будет использовать, если вы хотите стилизовать эти элементы в какой-то более старой версии IE - вам в основном нужно создать один из каждого элемента, используя document.createElement
, прежде чем любой из этих элементов будет указан в вашем источнике. Есть несколько библиотек, которые позаботятся об этом за вас - быстрый поиск в Google включил html5shiv .