부트 스트랩이있는 고정 너비 버튼


182

부트 스트랩은 고정 너비 버튼을 지원합니까? 현재 "저장"및 "다운로드"버튼이 두 개인 경우 버튼 크기는 내용에 따라 변경됩니다.

또한 부트 스트랩을 확장하는 올바른 방법은 무엇입니까?


너비가 고정되어 있으면 내부의 내용으로 자라지 않습니까? 버튼은 안에있는 텍스트로만 제한됩니다.
Andres Ilich

@AndresIlich 현재 2 개의 "저장"및 "다운로드"버튼이있는 경우 내용에 따라 버튼 크기가 변경됩니다
aWebDeveloper

너비가 같은 두 버튼을 원하십니까?
Andres Ilich

답변:


318

.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>


71

이렇게하려면 두 버튼에 모두 맞는 너비를 찾은 다음 너비가있는 사용자 정의 클래스를 만들고 버튼에 다음과 같이 추가하십시오.

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/

생성 한 사용자 정의 클래스를 가져 와서 자체 스타일 시트 안에 배치 할 수 있습니다.이 스타일 시트는 부트 스트랩 스타일 시트 다음에로드됩니다. 프레임 워크를 업데이트 할 때 부트 스트랩 스타일 시트에 변경 한 내용이 실수로 손실 될 수 있으므로 변경 사항이 기본값보다 우선하기를 원합니다.


2
em픽셀 대신 단위를 사용 하면 문자 길이로 너비를 설정하는 데 도움이됩니다
svarog

2
@DanDascalescu ~ 2 년 후 나는 동의하지 않습니다. 전체 부모를 채우기 위해 단추를 확장 한 후 작성자가 아닐 수 있습니다. '저장'이라는 단추의 페이지 절반이 될 수 있습니다. 나는 이것과 같은 것이지만 필요할 경우 미디어 쿼리를 추천한다. 그들을 가장 큰 버튼만큼 크게 만드는 자바 스크립트가 항상 있습니다. 이것은 일반적으로 내가 멀리있는 경로입니다.
Jacob McKay

38

클래스 "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> 

부트 스트랩 버튼 그룹


@tonjo : 왜 작동하지 않는지 확장 할 수 있습니까? 나는 실제로 그것을 발견했다- 예를 들어 수직 변화 를 참조하십시오 .
Dan Dascalescu

2
동일한 기능을 달성하려고하는데 위 코드가 작동하지 않습니다. @ DanDascalescu 다른 방법을 찾았습니까?
GelatinFox

1
이 버튼이 작동하려면 적어도 btn-block 클래스이어야합니다.
Gabriel

5
아니, 이것은 작동하지 않습니다-버튼의 크기가 동일하지 않습니다.
Antoniossss

버튼을 분리하고 싶기 때문에 여분의 여백을 추가했습니다. 완벽하게 작동했습니다. 모두 같은 너비입니다.
Tomas Gonzalez

13

버튼의 경우 지정된 최소 너비 및 최대 너비를 가진 특수 클래스 버튼에 대해 다른 CSS 선택기를 만들 수 있습니다. 버튼이

<button class="save_button">Save</button>

Bootstrap CSS 파일에서 다음과 같은 것을 만들 수 있습니다

.save_button {
    min-width: 80px;
    max-width: 80px;
}

이렇게하면 반응 형 디자인이 있더라도 항상 80px를 유지해야합니다.

Bootstrap을 확장하는 올바른 방법으로이 스레드를 살펴보십시오.

부트 스트랩 확장


4

BS 4에서는 크기 조정을 사용하고 w-100을 적용하여 버튼이 부모 컨테이너의 전체 너비를 차지할 수 있습니다.


3

@ 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>

이것이 Bootstrap 3.3에 대한 정답입니다. btn-group-justified핵심 클래스입니다. 다음 문서를 참조하십시오 : getbootstrap.com/docs/3.3/components/…
CXJ

3

btn-group-justified 및 btn-group은 정적 컨텐츠에서만 작동하지만 동적으로 작성된 버튼에서는 작동하지 않으며 CSS에서 버튼으로 고정 된 것은 모든 컨텐츠가 짧은 경우에도 동일한 너비를 유지하므로 실용적이지 않습니다.

내 해결책 : 동일한 클래스를 버튼 그룹에 배치 한 다음 모든 버튼에 반복하여 가장 긴 버튼의 너비를 가져 와서 모두 적용하십시오.

var bwidth=0
$("button.btnGroup").each(function(i,v){
    if($(v).width()>bwidth) bwidth=$(v).width();
});
$("button.btnGroup").width(bwidth);

샘플 출력은 여기


1

부모 컨테이너가 응답하면 블록 너비 버튼이 쉽게 반응하는 버튼이 될 수 있습니다. 고정 너비와! selector 대신에 더 자세한 선택기 경로의 조합을 사용하면 다음과 같은 이유로 생각합니다.

1) 그것은 해킹이 아닙니다 (최소 너비와 최대 너비를 동일하게 설정하는 것은 해킹입니다)

2) 나쁜 습관 인! important 태그를 사용하지 않습니다

3) 너비를 사용하므로 읽을 수 있으며 CSS에서 계단식 작동 방식을 이해하는 사람은 진행 상황을 볼 수 있습니다 (이에 대한 CSS 주석을 남길 수 있습니까?)

4) 정확도를 높이기 위해 대상 노드에 적용되는 선택기를 결합하십시오.

.parent_element .btn.btn-primary.save-button {
    width: 80px;
}

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>


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>


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);
    });
}

그것은 매력처럼 작동했습니다.


-4

이것은 어리석은 해결책 일 수 있지만이 문제에 대한 해결책을 찾고 있었고 게으르다.

어쨌든 버튼 대신 input class = "btn ..."...을 사용하고 value = 속성을 공백으로 채워서 너비가 모두 같아서 잘 작동합니다.

예 :

<input type="submit" class="btn btn-primary" value="   Calculate   "/>    
<input type="reset" class="btn btn-primary"value="     Reset       "/>

나는 오랫동안 부트 스트랩을 사용하지 않았으며 아마도이 접근법을 사용하지 않는 좋은 이유가 있지만 공유 할 수도 있다고 생각했습니다.


<button>태그를 사용하는 경우을 사용해야합니다 ( &nbsp;예 :) <button type="button" class="btn btn-default">&nbsp;Edit&nbsp;</button>.
Endy Tjahjono

제 경우에는 작동하지 않습니다. <a class="btn btn-default btn-sm" href="read.php?id='.$row['id'].'"> 편집 </a>
Mina 가브리엘
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.