防止fieldset元素的边框通过图例元素

时间:2015-04-15 14:00:27

标签: html css

我有一个字段集,如何将图例放在带边框的字段集中?我希望边界绕过传说,而不是在它的中间。

JSFiddle



fieldset {
  border: 0;
  padding: 0!important;
  margin: 0;
  min-width: 0;
  border: 1px solid red;
}
legend {
  padding: 0!important;
}

<fieldset>
  <legend>Title</legend>
</fieldset>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:20)

一个选项是将legend元素浮动到左侧:

fieldset {
  border: 2px solid #f00;
}
legend {
  float: left;
  width: 100%;
  padding: 0;
  font-weight: bold;
}
<fieldset>
  <legend>This is a legend</legend>
  <label>Here is an input element: <input type="text" /></label>
</fieldset>


另一种方法是使用outline而不是border

fieldset {
  border: none;
  outline: 2px solid #f00;
}
legend {
  padding: 0.6em 0 0;
  font-weight: bold;
}
<fieldset>
  <legend>This is a legend</legend>
  <label>Here is an input element: <input type="text" /></label>
</fieldset>


另一种方法是将legend元素 relative 绝对定位到父fieldset元素。这可能是最不灵活的方法。

fieldset {
  border: 2px solid #f00;
  position: relative;
  padding-top: 2.6em; /* Displace the absolutely positioned legend */
}
legend {
  position: absolute;
  top: 0; left: 0;
  padding: 12px;
  font-weight: bold;
}
<fieldset>
  <legend>This is a legend</legend>
  <label>Here is an input element: <input type="text" /></label>
</fieldset>

答案 1 :(得分:0)

接受答案的变体(使用SASS)应该适用于所有现代浏览器(IE9 +)

fieldset {
  > legend {
    float: left;

    + * {
      clear: both;
    }
  }
}

这将清除浮动之后的下一个元素,因此您不必担心布局混乱。