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

pan*_*hro 14 html css

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

的jsfiddle

fieldset {
  border: 0;
  padding: 0!important;
  margin: 0;
  min-width: 0;
  border: 1px solid red;
}
legend {
  padding: 0!important;
}
Run Code Online (Sandbox Code Playgroud)
<fieldset>
  <legend>Title</legend>
</fieldset>
Run Code Online (Sandbox Code Playgroud)

Jos*_*ier 20

一种选择是将legend元素浮动到左侧:

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


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

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


另一种方法是将legend元素对于父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;
}
Run Code Online (Sandbox Code Playgroud)
<fieldset>
  <legend>This is a legend</legend>
  <label>Here is an input element: <input type="text" /></label>
</fieldset>
Run Code Online (Sandbox Code Playgroud)