#html #css #css3
Почему нельзя внести div внутрь p? Если внести h1 или же a, то всё работает. p { width: 300px; height: 150px; border: 1px black solid; display: block; } p div { width: 50%; height: 100%; background: red; }
Ответы
Ответ 1
в спецификации указано следующее: A p element's end tag may be omitted if the p element is immediately followed by an address, article, aside, blockquote, div, dl, fieldset, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, hr, main, nav, ol, p, pre, section, table, or ul, element, or if there is no more content in the parent element and the parent element is not an a element. закрывающий тег элемента p может быть опущен если p элемент расположен сразу за address, article, aside, blockquote, div, dl, fieldset, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, hr, main, nav, ol, p, pre, section, table, or ul элементами, или если больше нет содержимого в родительском элементе или родительский элемент не a/ console.log(document.querySelectorAll('p').length); p { width: 300px; height: 150px; border: 1px black solid; display: block; } p div { width: 50%; height: 100%; background: red; }
Ответ 2
Потому что спецификация html5 содержит особые правила автозакрытия некоторых тегов. В том числе это относится к тегу p. Он закрывается автоматически перед блочными элементами, таблицами и списками. Это позволяет писать подобный код: body > * { color: blue; } body > * > * { color: red; } p { border: 1px dotted green; }Some paragraph
The other one
- And the list
123
456
Tag omission (https://developer.mozilla.org/ru/docs/Web/HTML/Element/p)
The start tag is required. The end tag may be omitted if the element is immediately followed by an
,