Я много раз боролся с этой проблемой, что в итоге привело к тому, что я отказался от тега легенды до недавнего времени, где я снова начал использовать его, чтобы добавить больше смысла в мою разметку.
Вот исправление, которое я разработал для контроля внешнего вида макета тега легенды относительно его родных элементов:
Разметка:
<div class="fieldset">
<fieldset>
<legend>Form Section</legend>
<div class="field_row">
<label for="first_name">First Name</label>
<input id="first_name" name="first_name" type="text">
</div>
<div class="field_row">
<label for="last_name">Last Name</label>
<input id="last_name" name="last_name" type="text">
</div>
</fieldset>
</div>
Стили:
.fieldset {
padding-top:48px; /*legend height(18px) + top value(15px) + bottom spacing(15px) */
position:relative;
}
legend {
height:18px; /* Default Height of non-styled legend element with default font-size of 16px as tested at time of this posting */
left:15px;
/*margin:15px 0;*/ /* Margins initially trying to achieve */
position:absolute;
top:15px; /* replaces top margin-top:15px; */
}
Из приведенного выше примера, чтобы достичь нижнего «поля» для желаемого тега
, вы просто примените верхний отступ к набору полей, равный величине верхнего и нижнего полей, которые вы Желание плюс явная высота тега легенды. Это толкает братьев и сестер соответствующим образом.
Если вы явно не задали высоту своей легенды, вы можете просто проверить ее на вкладке метрики инструментов Firebug или Chrome Developer, так как размер шрифта будет влиять на высоту.
Но да, довольно простое решение, я просто столкнулся с ним несколько дней назад, когда работал над проектом клиента. Затем наткнулся на этот вопрос, так как я пытался провести больше исследований по этому вопросу сегодня.
Редактировать: после публикации этого ответа я понял, что в своем исходном исправлении я применил заполнение к родительскому
из