Memperbaiki tombol lebar dengan Bootstrap


182

Apakah Bootstrap mendukung tombol dengan lebar tetap? Saat ini jika saya memiliki 2 tombol, "Simpan" dan "Unduh", ukuran tombol berubah berdasarkan konten.

Juga apa cara yang benar untuk memperluas Bootstrap?


Dengan lebar tetap, maksud Anda apakah itu tidak tumbuh dengan konten di dalamnya? Tombol-tombol hanya dibatasi oleh teks di dalamnya.
Andres Ilich

@AndresIlich Saat Ini Jika saya memiliki 2 tombol "Simpan" dan "Unduh" ukuran tombol berubah berdasarkan konten
aWebDeveloper

Jadi Anda ingin kedua tombol dengan lebar yang sama benar?
Andres Ilich

Jawaban:


318

Anda juga dapat menggunakan .btn-blockkelas pada tombol, sehingga memperluas ke lebar induk.

Jika induk adalah elemen lebar tetap, tombol akan meluas untuk mengambil semua lebar. Anda dapat menerapkan markup yang ada ke wadah untuk memastikan tombol fix / fluid hanya mengambil ruang yang diperlukan.

<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

Untuk melakukan ini, Anda dapat membuat lebar yang Anda rasa tidak masalah untuk kedua tombol dan kemudian membuat kelas khusus dengan lebar dan menambahkannya ke tombol Anda seperti:

CSS

.custom {
    width: 78px !important;
}

Saya kemudian dapat menggunakan kelas ini dan menambahkannya ke tombol seperti:

<p><button href="#" class="btn btn-primary custom">Save</button></p>
<p><button href="#" class="btn btn-success custom">Download</button></p>

Demo: http://jsfiddle.net/yNsxU/

Anda dapat mengambil kelas khusus yang Anda buat dan menempatkannya di dalam stylesheet Anda sendiri, yang Anda muat setelah bootstrap stylesheet. Kami melakukan ini karena setiap perubahan yang Anda tempatkan di dalam bootstrap stylesheet mungkin hilang secara tidak sengaja ketika Anda memperbarui kerangka kerja, kami juga ingin perubahan Anda didahulukan dari nilai default.


2
menggunakan emsatuan alih-alih piksel, itu membantu Anda mengatur lebar dengan panjang karakter
svarog

2
@DanDascalescu ~ 2 tahun kemudian saya tidak setuju. Penulis mungkin tidak setelah membuat tombol membesar untuk mengisi seluruh induk, bisa setengah halaman untuk tombol yang mengatakan 'simpan'. Saya akan merekomendasikan sesuatu seperti ini tetapi dengan pertanyaan media jika perlu. Selalu ada javascript untuk menjadikannya sebesar tombol terbesar, ini biasanya jalan yang saya hindari
Jacob McKay

38

Jika Anda meletakkan tombol di dalam div dengan kelas "btn-group", tombol di dalamnya akan meregang ke ukuran yang sama dengan tombol terbesar.

misalnya:

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

Grup Tombol Bootstrap


@tonjo: dapatkah Anda memperluas mengapa itu tidak berhasil? Saya menemukan bahwa sebenarnya itu - lihat variasi vertikal misalnya.
Dan Dascalescu

2
Saya mencoba untuk mencapai fungsi yang sama, dan kode di atas juga tidak berfungsi untuk saya. @DanDascalescu apakah Anda menemukan cara lain?
GelatinFox

1
Tombol-tombolnya juga harus dari blok btn kelas agar ini berfungsi, setidaknya bagi saya.
Gabriel

5
Tidak, ini tidak berfungsi - tombol berukuran tidak sama.
Antoniossss

Saya menambahkan margin-kiri tambahan karena saya ingin tombol-tombol dipisahkan. Bekerja dengan sempurna. Semua lebarnya sama.
Tomas Gonzalez

13

Untuk tombol Anda, Anda dapat membuat pemilih CSS lain untuk kelas-kelas tombol khusus dengan lebar minimum dan maksimum maks yang ditentukan. Jadi, jika tombol Anda

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

Dalam file CSS Bootstrap Anda, Anda dapat membuat sesuatu seperti

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

Dengan cara ini harus selalu tetap 80px bahkan jika Anda memiliki desain yang responsif.

Sejauh cara yang tepat untuk memperluas Bootstrap, Lihatlah thread ini:

Memperluas Bootstrap


4

Dengan BS 4, Anda juga dapat menggunakan ukuran , dan menerapkan w-100 sehingga tombol dapat menempati lebar kontainer induk lengkap.


3

Memperluas jawaban @ kravits88:

Ini akan meregangkan tombol agar sesuai dengan lebar keseluruhan:

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

Ini adalah jawaban yang benar untuk Bootstrap 3.3. btn-group-justifiedadalah kelas kunci. Lihat dokumentasi di sini: getbootstrap.com/docs/3.3/components/…
CXJ

3

btn-group-justified dan btn-group hanya berfungsi untuk konten statis tetapi tidak pada tombol yang dibuat secara dinamis, dan diperbaiki dengan tombol di css tidak praktis karena tetap pada lebar yang sama bahkan semua konten pendek.

Solusi saya: letakkan kelas yang sama ke grup tombol lalu loop ke semuanya, dapatkan lebar tombol terpanjang dan terapkan ke semua

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

Contoh output di sini


1

Tombol lebar blok dapat dengan mudah menjadi tombol responsif jika wadah induk responsif. Saya pikir menggunakan kombinasi lebar tetap dan jalur pemilih yang lebih rinci, bukan! Penting karena:

1) Ini bukan retasan (pengaturan min-width dan max-width sama dengan retasan)

2) Tidak menggunakan tag! Penting yang merupakan praktik buruk

3) Menggunakan lebar sehingga akan sangat mudah dibaca dan siapa pun yang mengerti bagaimana cascading bekerja di CSS akan melihat apa yang terjadi (mungkin meninggalkan komentar CSS untuk ini?)

4) Gabungkan pemilih yang berlaku untuk simpul yang Anda targetkan untuk meningkatkan akurasi

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

0

Hanya datang pada kebutuhan yang sama dan tidak merasa puas dengan mendefinisikan lebar tetap.

Begitu juga dengan 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

Cara terbaik untuk solusi masalah Anda adalah dengan menggunakan tombol btn-blok dengan lebar kolom yang diinginkan.

<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

Di sini saya menemukan solusi dengan membandingkan tombol di elemen tombol-grup. Solusi sederhana adalah untuk mendapatkan yang memiliki lebar terbesar dan mengatur lebar ke tombol lainnya. Sehingga mereka dapat memiliki lebar yang sama.

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

Itu bekerja seperti pesona.


-4

Ini mungkin solusi konyol, tapi saya mencari solusi untuk masalah ini dan malas.

Lagi pula, menggunakan input class = "btn ..." ... alih-alih tombol dan mengisi nilai = atribut dengan spasi sehingga mereka semua lebar yang sama berfungsi dengan baik.

misalnya:

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

Saya belum pernah menggunakan bootstrap selama itu, dan mungkin ada alasan bagus untuk tidak menggunakan pendekatan ini, tetapi saya pikir saya mungkin juga berbagi


Jika Anda menggunakan <button>tag maka Anda perlu menggunakan &nbsp;, misalnya: <button type="button" class="btn btn-default">&nbsp;Edit&nbsp;</button>.
Endy Tjahjono

Ini tidak akan berfungsi dalam kasus saya <a class="btn btn-default btn-sm" href="read.php?id='.$row['id'[.'"> Edit </a>
Mina Gabriel
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.