Bootstrapは固定幅のボタンをサポートしていますか?現在、「保存」と「ダウンロード」の2つのボタンがある場合、ボタンのサイズはコンテンツに基づいて変わります。
また、Bootstrapを拡張する正しい方法は何ですか?
Bootstrapは固定幅のボタンをサポートしていますか?現在、「保存」と「ダウンロード」の2つのボタンがある場合、ボタンのサイズはコンテンツに基づいて変わります。
また、Bootstrapを拡張する正しい方法は何ですか?
回答:
.btn-block
ボタンのクラスを使用して、親の幅に拡張することもできます。
親が固定幅要素の場合、ボタンはすべての幅になるように拡張されます。コンテナに既存のマークアップを適用して、固定/流体ボタンが必要なスペースのみを占めるようにすることができます。
<div class="span2">
<p><button class="btn btn-primary btn-block">Save</button></p>
<p><button class="btn btn-success btn-block">Download</button></p>
</div>
これを行うには、両方のボタンで問題ないと思われる幅を考え出し、その幅でカスタムクラスを作成して、次のようにボタンに追加します。
CSS
.custom {
width: 78px !important;
}
次に、このクラスを使用して、次のようにボタンに追加できます。
<p><button href="#" class="btn btn-primary custom">Save</button></p>
<p><button href="#" class="btn btn-success custom">Download</button></p>
デモ:http : //jsfiddle.net/yNsxU/
作成したカスタムクラスを独自のスタイルシート内に配置し、ブートストラップスタイルシートの後にロードすることができます。これは、ブートストラップスタイルシート内に加えた変更がフレームワークの更新時に誤って失われる可能性があるためです。また、変更をデフォルト値よりも優先させる必要があります。
em
ピクセルではなく単位を使用すると、文字の長さで幅を設定できます
「btn-group」クラスのdiv内にボタンを配置すると、内部のボタンは最大のボタンと同じサイズに拡大されます。
例えば:
<div class="btn-group">
<button type="button" class="btn btn-default">Left</button>
<button type="button" class="btn btn-default">Middle</button>
<button type="button" class="btn btn-default">Right</button>
</div>
ボタンについては、min-widthとmax-widthを指定して、ボタンの特別なクラス用に別のCSSセレクターを作成できます。したがって、ボタンが
<button class="save_button">Save</button>
Bootstrap CSSファイルでは、次のようなものを作成できます
.save_button {
min-width: 80px;
max-width: 80px;
}
このように、レスポンシブデザインがある場合でも、常に80pxを維持する必要があります。
Bootstrapを拡張する正しい方法については、次のスレッドをご覧ください。
BS 4では、サイズ設定を使用し、ボタンが親コンテナーの幅全体を占めるようにw-100を適用することもできます。
@ kravits88の答えを拡張する:
これにより、ボタンが全幅に合うように引き伸ばされます。
<div className="btn-group-justified">
<div className="btn-group">
<button type="button" className="btn btn-primary">SAVE MY DEAR!</button>
</div>
<div className="btn-group">
<button type="button" className="btn btn-default">CANCEL</button>
</div>
</div>
btn-group-justified
キークラスです。ここではドキュメントを参照してください: getbootstrap.com/docs/3.3/components/...
btn-group-justifiedとbtn-groupは静的コンテンツでのみ機能し、動的に作成されたボタンでは機能しません。CSSのwith with with buttonsは、すべてのコンテンツが短い場合でも同じ幅を維持するため、実用的ではありません。
私の解決策:ボタンのグループに同じクラスを配置し、それらすべてにループし、最も長いボタンの幅を取得してすべてに適用します
var bwidth=0
$("button.btnGroup").each(function(i,v){
if($(v).width()>bwidth) bwidth=$(v).width();
});
$("button.btnGroup").width(bwidth);
親コンテナーがレスポンシブである場合、ブロック幅ボタンは簡単にレスポンシブボタンになる可能性があります。重要なのではなく、固定幅とより詳細なセレクターパスの組み合わせを使用すると思います。
1)ハックではありません(ただし、min-widthとmax-widthを同じに設定するのはハックです)
2)悪い習慣である!importantタグを使用しない
3)幅を使用するため、非常に読みやすくなり、CSSでカスケードがどのように機能するかを理解している人は、何が起こっているかを確認できます(このためにCSSコメントを残すことができますか?)
4)ターゲットノードに適用するセレクターを組み合わせて精度を高める
.parent_element .btn.btn-primary.save-button {
width: 80px;
}
ちょうど同じ必要性に遭遇し、固定幅を定義することに満足していませんでした。
だからjqueryでそれをしました:
var max = Math.max ($("#share_cancel").width (), $("#share_commit").width ());
$("#share_cancel").width (max);
$("#share_commit").width (max);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button type="button" class="btn btn-secondary" id="share_cancel">SHORT</button>
<button type="button" class="btn btn-success" id="share_commit">LOOOOOOOOONG</button>
問題を解決する最良の方法は、目的の列幅でボタンブロックbtn-blockを使用することです。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<div class="col-md-12">
<button class="btn btn-primary btn-block">Save</button>
</div>
<div class="col-md-12">
<button class="btn btn-success btn-block">Download</button>
</div>
ここでは、ボタングループ要素のボタンを比較することで解決策を見つけました。簡単な解決策は、最大の幅のボタンを取得し、その幅を他のボタンに設定することです。したがって、それらは同じ幅を持つことができます。
function EqualizeButtons(parentElementId) {
var longest = 0;
var element = $(parentElementId);
element.find(".btn:not(.button-controlled)").each(function () {
$(this).addClass('button-controlled');
var width = $(this).width();
if (longest < width) longest = width;
}).promise().done(function () {
$('.button-controlled').width(longest);
});
}
それは魅力のように働きました。
これはばかげた解決策かもしれませんが、私はこの問題の解決策を探していて、怠惰になりました。
とにかく、ボタンの代わりにinput class = "btn ..." ...を使用し、すべての幅が同じになるようにvalue =属性にスペースを埋め込むと、かなりうまくいきます。
例:
<input type="submit" class="btn btn-primary" value=" Calculate "/>
<input type="reset" class="btn btn-primary"value=" Reset "/>
私はその間ずっとブートストラップを使用していませんでした、そしておそらくこのアプローチを使用しない正当な理由があるかもしれませんが、私も共有したいと思った
<button>
、タグを、あなたが使用する必要があり
、たとえば、: <button type="button" class="btn btn-default"> Edit </button>
。