Ответ 1
Все теги HTML классифицируются по категориям, которые описывают их характер. Эта классификация может быть связана с семантикой, поведением, взаимодействием и многими другими аспектами.
Теги p
и label
классифицируются в категории тегов потока. Но между ними есть одно небольшое различие: тег label
также классифицируется в категории под названием "фразинг-контент".
Что все это означает на практике? По умолчанию рендеринг браузера будет следовать указанным классификациям тегов и будет обрабатывать тег p
как элемент блока, а тег label
по умолчанию будет рассматриваться как встроенный элемент. Вы можете изменить это, перезаписав правило CSS по умолчанию: просто сообщите обозревателю, что вы хотите, чтобы ваш label
отображался как элемент блока.
label {
display: block;
}
Вам нужно сделать это, потому что элементы, которые находятся в строке (display: inline), не могут иметь такие свойства, как height
, line-height
, margin-top
, margin-bottom
(они будут игнорироваться).
Если вы хотите, чтобы встроенный элемент имел свойство height, но все же сохранял его с его встроенным поведением (без причины LINE BREAK), вы можете объявить его как:
label{
display:inline-block;
}
Всегда полезно читать HTML-документацию. Вот хороший график, показывающий категории, он может сэкономить вам много времени, особенно при работе с этими небольшими причудами.