Cara mengatur kolom lebar tetap dengan CSS flexbox


149

CodePen: http://codepen.io/anon/pen/RPNpaP .

Saya ingin kotak merah lebarnya hanya 25 em ketika berada di tampilan berdampingan - Saya mencoba untuk mencapai ini dengan menetapkan CSS di dalam kueri media ini:

@media all and (min-width: 811px) {...}

untuk:

.flexbox .red {
  width: 25em;
}

Tetapi ketika saya melakukan itu, ini terjadi:

http://i.imgur.com/niFBrwt.png

Ada yang tahu apa yang saya lakukan salah?

Jawaban:


331

Anda harus menggunakan properti flexatau flex-basisbukan width. Baca lebih lanjut tentang MDN .

.flexbox .red {
  flex: 0 0 25em;
}

The flexproperti CSS adalah properti singkatan menentukan kemampuan item fleksibel untuk mengubah dimensi untuk mengisi ruang yang tersedia. Itu mengandung:

flex-grow: 0;     /* do not grow   - initial value: 0 */
flex-shrink: 0;   /* do not shrink - initial value: 1 */
flex-basis: 25em; /* width/height  - initial value: auto */

Demo sederhana menunjukkan cara mengatur kolom pertama ke 50pxlebar tetap.


Lihat codepen yang diperbarui berdasarkan pada kode Anda.


21
Tidak menyadari bahwa saya harus mengganti flex-shrink, terima kasih, jawaban yang bagus.
Paul Redmond

Tidak dapat memperoleh basis-fleksibel: otomatis berfungsi hingga saya menyadari kisi pustaka komponen saya (Semantic UI React) memiliki aturan css yang nakal mengatur lebar default kolom 😅 medium.freecodecamp.org/...
Roman Scher

1

Jika ada yang ingin memiliki flexbox responsif dengan persentase (%), itu jauh lebih mudah untuk permintaan media.

flex-basis: 25%;

Ini akan jauh lebih lancar saat pengujian.

// VARIABLES
$screen-xs:                                         480px;
$screen-sm:                                         768px;
$screen-md:                                         992px;
$screen-lg:                                         1200px;
$screen-xl:                                         1400px;
$screen-xxl:                                        1600px;

// QUERIES
@media screen (max-width: $screen-lg) {
    flex-basis: 25%;
}

@media screen (max-width: $screen-md) {
    flex-basis: 33.33%;
}
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.