Может ли любой элемент HTML быть стилизован как набор полей/легенда?
С помощью display
свойство, HTML-элементы становятся взаимозаменяемыми с точки зрения стиля. Кажется, это не относится к fieldset
и legend
однако.
можно ли стилизовать другие элементы HTML, чтобы выглядеть как fieldset
и legend
?
4 ответов
предыдущий ответ неверен, если вы хотите увидеть, почему попробуйте это:
<body style="background-color: #f00">
<div style="border: 1px solid #000">
<h1 style="background: #fff; margin-top: -5px; margin-left: 10px; padding: 0 10px; width: 150px;">Foobar</h1>
</div>
<fieldset><legend>Foobar</legend></fieldset>
</body>
AFAIK нет никакого способа иметь этот эффект нарушения границы, который legend
причины элемента на fieldset
'границе. Я не верю, что это возможно только с CSS, это просто то, что является частью пути fieldset
отображения тега.
уточнение: я не знаю никакого способа позиционировать блок или встроенный элемент так, чтобы он оседлал видимый граница его содержащего элемента блока, а затем приводит к разрыву границы элемента контейнера за его коробкой. Вот что такое <legend>
делает к границе на своем содержании <fieldset>
элемент.
это работает довольно хорошо, но ie6 будет действовать немного странно, если фон является изображением, ничего условного комментария не может исправить. Протестировано в IE6-8, FF3.6, Safari 5, Chrome 5
.fieldset {
position: relative;
border: 1px solid #000;
margin: 20px;
padding: 20px;
text-align: left;
}
.fieldset .legend {
background: #fff;
height: 1px;
position: absolute;
top: -1px;
padding: 0 20px;
color: #000;
overflow: visible;
}
.fieldset .legend span {
top: -0.5em;
position: relative;
vertical-align: middle;
display: inline-block;
overflow: visible;
}
<div class="fieldset">
<div class="legend">
<span>This is the title</span>
</div>
Test
</div>
конечно, например: элемент DIV с границей и дочерний элемент заголовка с набором цветов фона, расположенным так, чтобы перекрывать границу DIV, будет выглядеть так же, как набор полей и легенда.
очень простой пример:
<div style="border: 1px solid #000">
<h1 style="background: #fff; margin-top: -5px; margin-left: 10px; padding: 0 10px; width: 150px;">Foobar</h1>
</div>
поэтому я исправил код, чтобы он выглядел несколько (он действительно похож на тег legend) как тег legend.
<div style="border: 2px groove #ccc">
<h1 style="font-weight:normal; background: #fff; margin-top: -11px; margin-left: 10px; padding: 0 10px 0 0; width: 40px; height:20px; font-size:1em;">Foobar</h1>
</div>
<fieldset><legend>Foobar</legend></fieldset>