Ответ 1
сформировать сайт w3:
Элемент P представляет абзац. Он не может содержать элементы уровня блока (включая сам P).
Как я могу поместить div в абзац? Я изменил отображение на встроенный, но браузер разделил базовый абзац на два элемента, а div не будет членом абзаца.
сформировать сайт w3:
Элемент P представляет абзац. Он не может содержать элементы уровня блока (включая сам P).
нет, вы не можете вставить ничего, кроме встроенного элемента в <p>
, если вы хотите, чтобы код validate
из свойства def:
<!ELEMENT P - O (%inline;)* -- paragraph -->
Я знаю, что трудно понять те реплики порой, но бит в скобках означает, что <p>
может содержать только элементы inline
вы можете (и должны) использовать <span>
внутри <p>
, и при необходимости вы можете изменить его свойство отображения CSS на block
или inline-block
, и это было бы совершенно корректно, поскольку свойства CSS не изменяются фактические определения элемента.. в вашем случае это звучит так, как будто вам нужен встроенный элемент, поэтому просто используйте <span>
Сделайте диапазон, установите его стиль в блок.
<p>
paragraph text
<span style="display: block;">Span stuff</span>
</p>
Вы не можете вставить элемент <div>
внутри элемента <p>
в соответствии со стандартом HTML. Подумайте, почему вы даже хотите это сделать; это никогда не должно быть необходимым. Элемент <p>
может только и логически содержать только встроенные элементы и текст.
Div - это блок. Span inline. Оба они являются контейнерами. Вы должны установить отображение: inline для div с css. Конечно, он не пройдет проверку, поэтому лучше использовать span (inline) для достижения того же самого.
Для тех, кто считает, что валидация является решающей, на самом деле есть два способа получить div
внутри p
.
Один из способов - использовать манипуляцию dom в script. Например
var theDiv = document.createElement("div");
theDiv.appendChild(document.createTextNode("inserted"));
var theP = document.getElementsByTagName("p")[0];
theP.insertBefore(theDiv, theP.firstChild);
Смотрите здесь: http://www.alohci.net/text/html/div-in-p-by-script.htm.ashx
Другой способ - использовать XHTML и обслуживать его с типом содержимого XML. (Нет поддержки в IE до IE9)
Смотрите здесь: http://www.alohci.net/application/xhtml+xml/div-in-p-by-mime.htm.ashx
(Помните, однако, что пока это возможно - это все еще недействительно.)
Но Ты делает жизненно важный момент. Семантически это вздор. Вы не ставили блок что-то посреди абзаца, если бы вы писали текст на бумаге, поэтому не нужно также делать это в HTML.