我正在尝试使用<legend>
作为<fieldset>
内的标题。
在IE以外的浏览器中,<legend>
位于<fieldset>
的顶部边框,文字完美地位于该行的中心。
我正在尝试重置它的位置,以便它就像任何其他元素一样。即<h3>
。
这是我到目前为止的CSS。
fieldset legend {
margin: 0;
padding: 0;
position: static;
border: 0;
top: auto; left: auto;
float: none;
display: block;
font-size: 14px;
line-height: 18px;
}
但是 传奇 仍然完美地集中在这条线上。
是的,我可以添加边距/填充/顶部坐标,但我想知道浏览器是否具有触发此布局的元素的任何默认值。我想要覆盖这些值。
在Firefox(3.6.10),Chrome(6.0.472.63),Safari(5.0.2)
中测试 更新
我将把这个问题留待一个星期,以防万一有人能够设置<legend>
个元素。如果找不到解决方案,我会接受@ jnpcl的回答。
答案 0 :(得分:21)
这就够了:
form legend{
float: left;
width: 100%;
}
答案 1 :(得分:7)
简单地说,它是不可能的 浏览器定位LEGEND 字段集中的元素。
解决方法:将<legend>
中的文字换成<span>
,然后重新定位<span>
。
答案 2 :(得分:2)
我刚刚为<legend>
设置了position: absolute; top: -25px;
,而<fieldset>
的父position: relative; padding-top: 30px;
设为{{1}}
答案 3 :(得分:0)
根据规范,fieldset
和legend
元素的here is the default styling。通过重置这些属性,您可以使用干净的legend
元素。
答案 4 :(得分:0)
根据HTML - Living Standard,以下样式的工作方式类似于默认样式:
fieldset {
display: block;
margin-inline-start: 2px;
margin-inline-end: 2px;
border: groove 2px ThreeDFace;
padding-block-start: 0.35em;
padding-inline-end: 0.75em;
padding-block-end: 0.625em;
padding-inline-start: 0.75em;
min-inline-size: min-content;
}
legend {
padding-inline-start: 2px; padding-inline-end: 2px;
}
答案 5 :(得分:0)
根据specification,如果它是float: none
,图例只是一个“渲染图例”。
这意味着通过这样做:
<fieldset>
<legend style='float: left'> Heading </legend>
<div class='clearfix'></div>
<!-- Your form elements here -->
</fieldset>
这使得图例表现得像一个普通(如果浮动)元素。
注意:clearfix
是 Bootstrap clearfix 类:
.clearfix::after {
clear: both;
}
.clearfix::before, .clearfix::after {
display: table;
content: " ";
}
(已经发布了类似的答案,但这不包括 clearfix 技巧,以及对规范的引用,该规范表明这不是随机的,而是可靠的指定行为。)