ブートストラップでFieldset Legendを使用する


173

私のJSPページではBootstrapを使用しています。

フォームに使用<fieldset>したいと思い<legend>ます。これは私のコードです。

<fieldset class="scheduler-border">
    <legend class="scheduler-border">Start Time</legend>
    <div class="control-group">
        <label class="control-label input-label" for="startTime">Start :</label>
        <div class="controls bootstrap-timepicker">
            <input type="text" class="datetime" id="startTime" name="startTime" placeholder="Start Time" />
            <i class="icon-time"></i>
        </div>
    </div>
</fieldset>

CSSは

fieldset.scheduler-border {
    border: 1px groove #ddd !important;
    padding: 0 1.4em 1.4em 1.4em !important;
    margin: 0 0 1.5em 0 !important;
    -webkit-box-shadow:  0px 0px 0px 0px #000;
            box-shadow:  0px 0px 0px 0px #000;
}

legend.scheduler-border {
    font-size: 1.2em !important;
    font-weight: bold !important;
    text-align: left !important;
}

私はこのような出力を得ています ここに画像の説明を入力してください

次のように出力したい

ここに画像の説明を入力してください

追加してみました

border:none;
width:100px;

legend.scheduler-borderCSSインチ そして、私は期待される出力を得ています。しかし問題は<fieldset>、別のフィールドにもう1つ追加したいことです。凡例のテキストの幅は、それよりも長いので問題です100px

それで、私が言及したように出力を取得するにはどうすればよいですか?(伝説のテキストを打つことなく)


共有したコードは正常に動作しているようです。これがフィドルです
Menno 2013年

4
@Aquillo your FiddleはBootstrapを使用していません。
James Donnelly 2013年

1
@JamesDonnellyは、これがBootstrapによって引き起こされていることにも気づきました;)
Menno

1
Bootstrapのパネルの使用を検討する必要があると思います。フィールドセットや凡例のような非常に似た動作をしますが、よりスタイリッシュです。
Chandra Destiawan 2017年

回答:


221

これは、Bootstrapがデフォルトでlegend要素の幅を100%に設定するためです。これを修正するには、次のlegend.scheduler-borderものも使用するように変更します。

legend.scheduler-border {
    width:inherit; /* Or auto */
    padding:0 10px; /* To give a bit of padding on the left and right */
    border-bottom:none;
}

JSFiddleの例

また Bootstrapがスタイリングをオーバーライドしないように、Bootstrapの後にカスタムスタイルシートが追加されていることを確認する必要があります。

またmargin-bottom:0;、凡例と仕切りの間のギャップを減らすためにそれに追加することもできます。


2
FTRは:私のためのブートストラップ3.3.6はまた、設定margin-bottom: 20px;上のlegend代わりにライン上に置くことで、フィールドセットの境界線の上にそれをプッシュしています、。margin-bottom: 0;カスタムの設定はlegend.scheduler-border簡単に修正できます。
dtk 2016

87

ブートストラップ4では、凡例に溶け込むフィールドセットに境界線を付ける方がはるかに簡単です。あなたはそれを達成するためにカスタムCSSを必要としません、それはこのように行うことができます:

<fieldset class="border p-2">
   <legend  class="w-auto">Your Legend</legend>
</fieldset>

これは次のようになります: ブートストラップ4フィールドセットと凡例


w-autoはBootstrap 4.0では使用できませんが、4.1以降で使用できます
dlauzon

19

私はこの問題を抱えていて、私はこの方法で解決しました:

fieldset.scheduler-border {
    border: solid 1px #DDD !important;
    padding: 0 10px 10px 10px;
    border-bottom: none;
}

legend.scheduler-border {
    width: auto !important;
    border: none;
    font-size: 14px;
}

17

私は別のアプローチをとり、ブートストラップパネルを使用してもう少しリッチに見せました。誰かを助けて答えを改善するためだけに。

.text-on-pannel {
  background: #fff none repeat scroll 0 0;
  height: auto;
  margin-left: 20px;
  padding: 3px 5px;
  position: absolute;
  margin-top: -47px;
  border: 1px solid #337ab7;
  border-radius: 8px;
}

.panel {
  /* for text on pannel */
  margin-top: 27px !important;
}

.panel-body {
  padding-top: 30px !important;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<div class="container">
  <div class="panel panel-primary">
    <div class="panel-body">
      <h3 class="text-on-pannel text-primary"><strong class="text-uppercase"> Title </strong></h3>
      <p> Your Code </p>
    </div>
  </div>
  <div>

これは以下のようになります。 ここに画像の説明を入力してください

注:異なるヘッダーサイズを使用するには、スタイルを変更する必要があります。


7

上記のすべての正解を簡潔にまとめたかっただけです。私は多くの時間を費やして、どの答えが問題を解決し、舞台裏で何が起こっているのかを理解する必要があったからです。

ブートストラップを使用したフィールドセットには2つの問題があるようです。

  1. bootstrap幅を設定するlegend100%。これが、の上部の境界線を覆う理由ですfieldset
  2. ありますbottom borderのためにlegend

したがって、これを修正するために必要なのは、凡例の幅をautoに次のように設定することだけです。

legend.scheduler-border {
   width: auto; // fixes the problem 1
   border-bottom: none; // fixes the problem 2
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.