Поддерживает ли 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единицы вместо пикселей, они помогут вам установить ширину по длине символов
Если вы поместите свои кнопки в div с классом "btn-group", кнопки внутри будут растягиваться до размера самой большой кнопки.
например:
<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>
Для ваших кнопок вы можете создать еще один CSS-селектор для тех специальных классов кнопок с указанными min-width и max-width. Так что если ваша кнопка
<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-jusised и btn-group работают только для статического содержимого, но не для динамически создаваемых кнопок, и фиксировано с помощью кнопки в css нецелесообразно, так как оно остается на той же ширине, даже если все содержимое короткое.
Мое решение: поместить один и тот же класс в группу кнопок, затем зациклить их все, получить ширину самой длинной кнопки и применить ее ко всем
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) Не использует тег! Важный, что является плохой практикой
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 "/>
Я не использовал bootstrap все это время, и, возможно, есть веская причина не использовать этот подход, но подумал, что я мог бы также поделиться
<button>тег , то вам нужно использовать , например: <button type="button" class="btn btn-default"> Edit </button>.