Как я могу поставить DIV в P?

Как я могу поместить div в абзац? Я изменил отображение на встроенный, но браузер разделил базовый абзац на два элемента, а div не будет членом абзаца.

Ответы

Ответ 1

сформировать сайт w3:

Элемент P представляет абзац. Он не может содержать элементы уровня блока (включая сам P).

Ответ 2

нет, вы не можете вставить ничего, кроме встроенного элемента в <p>, если вы хотите, чтобы код validate

из свойства def:

<!ELEMENT P - O (%inline;)* -- paragraph -->

Я знаю, что трудно понять те реплики порой, но бит в скобках означает, что <p> может содержать только элементы inline

вы можете (и должны) использовать <span> внутри <p>, и при необходимости вы можете изменить его свойство отображения CSS на block или inline-block, и это было бы совершенно корректно, поскольку свойства CSS не изменяются фактические определения элемента.. в вашем случае это звучит так, как будто вам нужен встроенный элемент, поэтому просто используйте <span>

Ответ 3

Сделайте диапазон, установите его стиль в блок.

<p>
  paragraph text
  <span style="display: block;">Span stuff</span>
</p>

Ответ 4

Вы не можете вставить элемент <div> внутри элемента <p> в соответствии со стандартом HTML. Подумайте, почему вы даже хотите это сделать; это никогда не должно быть необходимым. Элемент <p> может только и логически содержать только встроенные элементы и текст.

Ответ 5

Div - это блок. Span inline. Оба они являются контейнерами. Вы должны установить отображение: inline для div с css. Конечно, он не пройдет проверку, поэтому лучше использовать span (inline) для достижения того же самого.

Ответ 6

Для тех, кто считает, что валидация является решающей, на самом деле есть два способа получить 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.