私は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;
cSSのlegend.scheduler-border
に。そして期待通りの出力が得られました。しかし問題は、私は別のフィールド用に別の<fieldset>
を追加したいということです。その時、凡例のテキストの幅は100px
より長いので問題です。
それで、私が述べたように出力を得るために私は何をしなければなりませんか? (凡例のテキストを打つことなく)
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;
}
また、カスタムスタイルシートが追加されていることを確認する必要がありますafterBootstrap Bootstrapがスタイリングを上書きしないようにします-ここでのスタイルはより高い特異性が必要です。
また、margin-bottom:0;
を追加して、凡例と仕切りの間のギャップを減らすこともできます。
私はこの問題を抱えていて、私はこのようにして解決しました:
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;
}
私は別のアプローチをとりました、それをもう少し豊かに見せるためにブートストラップパネルを使った。ただ誰かを助け、答えを改善するために。
.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>
注:異なるヘッダサイズを使用するには、スタイルを変更する必要があります。
上記のすべての正解を簡単に要約したいと思いました。どの答えが問題を解決し、舞台裏で何が起こっているのかを理解するために私は多くの時間を費やさなければならなかったからです。
ブートストラップのフィールドセットには2つの問題があるようです。
bootstrap
は、幅をlegend
に100%として設定します。それがfieldset
の上の境界を覆う理由です。legend
にはbottom border
があります。したがって、これを修正する必要があるのは、次のように凡例の幅をautoに設定することだけです。
legend.scheduler-border {
width: auto; // fixes the problem 1
border-bottom: none; // fixes the problem 2
}
.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>