Bootstrap是否支持固定宽度按钮?目前,如果我有2个按钮,“保存”和“下载”,则按钮大小会根据内容而变化。
扩展Bootstrap的正确方法是什么?
答案 0 :(得分:278)
您还可以使用按钮上的.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>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<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>
答案 1 :(得分:58)
要做到这一点,你可以想出两个按钮都可以使用的宽度,然后用宽度创建一个自定义类,并将其添加到按钮中,如下所示:
<强> 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>
您可以将您创建的自定义类放在自己的样式表中,然后在引导程序样式表之后加载它。我们这样做是因为在更新框架时,您在引导程序样式表中所做的任何更改都可能会意外丢失,我们还希望您的更改优先于默认值。
答案 2 :(得分:34)
如果将按钮放在带有“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>
答案 3 :(得分:12)
对于按钮,您可以为具有指定最小宽度和最大宽度的特殊按钮类创建另一个CSS选择器。所以,如果你的按钮是
<button class="save_button">Save</button>
在您的Bootstrap CSS文件中,您可以创建类似
的内容.save_button {
min-width: 80px;
max-width: 80px;
}
这样即使你有响应式设计它也应该保持80px。
就扩展Bootstrap的正确方法而言,请看一下这个帖子:
答案 4 :(得分:2)
使用BS 4,您还可以使用sizing,并应用w-100,以便按钮可以占据父容器的整个宽度。
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>
Using btn-block
</p>
<div class="container-fluid">
<div class="btn-group col" role="group" aria-label="Basic example">
<button type="button" class="btn btn-outline-secondary">Left</button>
<button type="button" class="btn btn-outline-secondary btn-block">Middle</button>
<button type="button" class="btn btn-outline-secondary">Right</button>
</div>
</div>
<p>
Using w-100
</p>
<div class="container-fluid">
<div class="btn-group col" role="group" aria-label="Basic example">
<button type="button" class="btn btn-outline-secondary">Left</button>
<button type="button" class="btn btn-outline-secondary w-100">Middle</button>
<button type="button" class="btn btn-outline-secondary">Right</button>
</div>
</div>
答案 5 :(得分:2)
扩展@ 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>
答案 6 :(得分:1)
如果父容器响应,则块宽度按钮很容易变为响应按钮。我认为使用固定宽度和更详细的选择器路径的组合而不是!important因为:
1)它不是一个黑客(设置最小宽度和最大宽度相同但是hacky)
2)不使用!important标签,这是不好的做法
3)使用宽度因此非常易读,任何了解CSS中级联如何工作的人都会看到最新情况(可能会留下CSS评论吗?)
4)组合适用于目标节点的选择器以提高准确度
ToList()
答案 7 :(得分:0)
刚刚遇到了同样的需求,并没有满足定义固定宽度。
用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>
答案 8 :(得分:0)
解决问题的最佳方法是使用具有所需列宽的按钮块 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>
答案 9 :(得分:0)
在这里,我通过比较按钮组元素中的按钮找到了解决方案。一种简单的解决方案是获得一个宽度最大的按钮,并将宽度设置为其他按钮。这样它们可以具有相等的宽度。
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);
});
}
它就像一种魅力。
答案 10 :(得分:0)
btn-group-justified和btn-group仅适用于静态内容,而不适用于动态创建的按钮,并且在CSS中使用button固定按钮不切实际,因为即使所有内容都很短,它都保持相同的宽度。
我的解决方案: 将相同的类放到按钮组中,然后循环到所有按钮,获取最长按钮的宽度并将其应用于所有按钮
var bwidth=0
$("button.btnGroup").each(function(i,v){
if($(v).width()>bwidth) bwidth=$(v).width();
});
$("button.btnGroup").width(bwidth);
答案 11 :(得分:-3)
这可能是一个愚蠢的解决方案,但我一直在寻找解决这个问题的方法并且变得懒惰。
无论如何,使用输入class =“btn ...”...代替按钮并用空格填充value =属性,这样它们的宽度都相同,效果非常好。
例如:
<input type="submit" class="btn btn-primary" value=" Calculate "/>
<input type="reset" class="btn btn-primary"value=" Reset "/>
我没有长时间使用bootstrap,也许有充分的理由不使用这种方法,但我想不如分享