tutorial pengembangan web terbaru
 

CSS3 Flexible Box


CSS3 Flexbox

Kotak fleksibel, atau flexbox , adalah mode layout baru di CSS3.

Penggunaan flexbox memastikan bahwa unsur-unsur berperilaku diduga ketika tata letak halaman harus mengakomodasi ukuran layar yang berbeda dan perangkat tampilan yang berbeda.

Untuk banyak aplikasi, model kotak fleksibel memberikan perbaikan atas model blok dalam hal itu tidak menggunakan mengapung, juga tidak margin wadah fleksibel runtuh dengan margin dari isinya.


Dukungan Browser

Angka-angka dalam tabel menentukan versi browser pertama yang sepenuhnya mendukung fitur tersebut.

Nomor diikuti oleh -webkit- atau -moz- menentukan versi pertama yang bekerja dengan awalan.

Milik
Basic support
(single-line flexbox)
29.0
21.0 -webkit-
11.0 22.0
18.0 -moz-
6.1 -webkit- 12.1 -webkit-
Multi-line flexbox 29.0
21.0 -webkit-
11.0 28.0 6.1 -webkit- 17.0
15.0 -webkit-
12.1

CSS3 Flexbox Konsep

Flexbox terdiri dari wadah fleksibel dan item fleksibel.

Sebuah wadah fleksibel dinyatakan dengan menetapkan display milik elemen baik flex (diberikan sebagai blok) atau inline-flex (diterjemahkan sebagai inline).

Di dalam wadah fleksibel ada satu atau lebih item fleksibel.

Catatan: Segala sesuatu di luar wadah fleksibel dan di dalam item fleksibel diberikan seperti biasa. Flexbox mendefinisikan bagaimana item fleksibel diletakkan di dalam wadah fleksibel.

item Flex diposisikan dalam sebuah wadah fleksibel sepanjang garis fleksibel. Secara default hanya ada satu baris fleksibel per kontainer fleksibel.

Contoh berikut menunjukkan tiga item fleksibel. Mereka diposisikan secara default: sepanjang garis fleksibel horisontal, dari kiri ke kanan:

Contoh

<!DOCTYPE html>
<html>
<head>
<style>
.flex-container {
    display: -webkit-flex;
    display: flex;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

.flex-item {
    background-color: cornflowerblue;
    width: 100px;
    height: 100px;
    margin: 10px;
}
</style>
</head>
<body>

<div class="flex-container">
  <div class="flex-item">flex item 1</div>
  <div class="flex-item">flex item 2</div>
  <div class="flex-item">flex item 3</div>
</div>

</body>
</html>

Cobalah sendiri "

Hal ini juga memungkinkan untuk mengubah arah dari garis fleksibel.

Jika kita mengatur direction properti untuk rtl (kanan-ke-kiri), teks ditarik kanan ke kiri, dan juga garis fleksibel mengubah arah, yang akan mengubah tata letak halaman:

Contoh

body {
    direction: rtl;
}

.flex-container {
    display: -webkit-flex;
    display: flex;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

.flex-item {
    background-color: cornflowerblue;
    width: 100px;
    height: 100px;
    margin: 10px;
}

Cobalah sendiri "


Arah Flex

The flex-direction properti menentukan arah item fleksibel dalam wadah fleksibel. Nilai default dari flex-direction adalah row (kiri ke kanan, atas-ke-bawah).

Nilai-nilai lain adalah sebagai berikut:

  • row-reverse - Jika tulisan-mode (arah) yang kiri ke kanan, item fleksibel akan ditata kanan ke kiri
  • column - Jika sistem penulisan adalah horisontal, item fleksibel akan ditata secara vertikal
  • column-reverse - Sama seperti kolom, tapi dibalik

Contoh berikut menunjukkan hasil dari menggunakan row-reverse nilai:

Contoh

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-direction: row-reverse;
    flex-direction: row-reverse;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Cobalah sendiri "

Contoh berikut menunjukkan hasil dari menggunakan column nilai:

Contoh

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-direction: column;
    flex-direction: column;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Cobalah sendiri "

Contoh berikut menunjukkan hasil dari menggunakan column-reverse nilai:

Contoh

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-direction: column-reverse;
    flex-direction: column-reverse;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Cobalah sendiri "


Properti membenarkan-konten

The justify-content properti horizontal sejajar item wadah fleksibel ketika item tidak menggunakan semua ruang yang tersedia pada main-axis.

Nilai yang mungkin adalah sebagai berikut:

  • flex-start - Nilai default. Produk yang diposisikan pada awal wadah
  • flex-end - Produk diposisikan pada akhir wadah
  • center - Produk yang diposisikan di tengah wadah
  • space-between - Produk diposisikan dengan ruang antara garis
  • space-around - Produk diposisikan dengan ruang sebelumnya, antara, dan setelah garis

Contoh berikut menunjukkan hasil dari menggunakan flex-end nilai:

Contoh

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: flex-end;
    justify-content: flex-end;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Cobalah sendiri "

Contoh berikut menunjukkan hasil dari menggunakan center nilai:

Contoh

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: center;
    justify-content: center;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Cobalah sendiri "

Contoh berikut menunjukkan hasil dari menggunakan space-between nilai:

Contoh

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: space-between;
    justify-content: space-between;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Cobalah sendiri "

Contoh berikut menunjukkan hasil dari menggunakan space-around nilai:

Contoh

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: space-around;
    justify-content: space-around;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Cobalah sendiri "


Align-item Properti

The align-items properti vertikal sejajar item wadah fleksibel ketika item tidak menggunakan semua ruang yang tersedia di kayu salib sumbu.

Nilai yang mungkin adalah sebagai berikut:

  • stretch - Nilai default. Produk yang ditarik agar sesuai wadah
  • flex-start - Produk yang diposisikan di atas wadah
  • flex-end - Produk yang diposisikan di bagian bawah wadah
  • center - Produk yang diposisikan di tengah wadah (vertikal)
  • baseline - Produk yang diposisikan pada dasar wadah

Contoh berikut menunjukkan hasil dari menggunakan stretch nilai (ini adalah nilai default):

Contoh

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: stretch;
    align-items: stretch;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Cobalah sendiri "

Contoh berikut menunjukkan hasil dari menggunakan flex-start value:

Contoh

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: flex-start;
    align-items: flex-start;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Cobalah sendiri "

Contoh berikut menunjukkan hasil dari menggunakan flex-end nilai:

Contoh

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: flex-end;
    align-items: flex-end;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Cobalah sendiri "

Contoh berikut menunjukkan hasil dari menggunakan center nilai:

Contoh

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: center;
    align-items: center;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Cobalah sendiri "

Contoh berikut menunjukkan hasil dari menggunakan baseline nilai:

Contoh

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-align-items: baseline;
    align-items: baseline;
    width: 400px;
    height: 250px;
    background-color: lightgrey;
}

Cobalah sendiri "


Flex-wrap Properti

The flex-wrap properti menentukan apakah item fleksibel harus membungkus atau tidak, jika tidak ada cukup ruang untuk mereka pada satu baris fleksibel.

Nilai yang mungkin adalah sebagai berikut:

  • nowrap - Nilai default. Item fleksibel tidak akan membungkus
  • wrap - Item fleksibel akan membungkus jika perlu
  • wrap-reverse - Item fleksibel akan membungkus, jika perlu, dalam urutan terbalik

Contoh berikut menunjukkan hasil dari menggunakan nowrap nilai (ini adalah nilai default):

Contoh

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: nowrap;
    flex-wrap: nowrap;
    width: 300px;
    height: 250px;
    background-color: lightgrey;
}

Cobalah sendiri "

Contoh berikut menunjukkan hasil dari menggunakan wrap nilai:

Contoh

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: wrap;
    flex-wrap: wrap;
    width: 300px;
    height: 250px;
    background-color: lightgrey;
}

Cobalah sendiri "

Contoh berikut menunjukkan hasil dari menggunakan wrap-reverse nilai:

Contoh

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: wrap-reverse;
    flex-wrap: wrap-reverse;
    width: 300px;
    height: 250px;
    background-color: lightgrey;
}

Cobalah sendiri "


Properti menyelaraskan-konten

The align-content properti memodifikasi perilaku flex-wrap properti. Hal ini mirip dengan align-items , tapi bukannya menyelaraskan item flex, itu sejalan garis fleksibel.

Nilai yang mungkin adalah sebagai berikut:

  • stretch - Nilai default. Garis peregangan untuk mengambil ruang yang tersisa
  • flex-start - Garis yang dikemas ke awal wadah fleksibel
  • flex-end - Garis dikemas menjelang akhir wadah fleksibel
  • center - Garis dikemas menuju pusat wadah fleksibel
  • space-between - Garis merata dalam wadah fleksibel
  • space-around - Garis merata dalam wadah fleksibel, dengan ruang setengah ukuran pada kedua ujung

Contoh berikut menunjukkan hasil dari menggunakan center nilai:

Contoh

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-flex-wrap: wrap;
    flex-wrap: wrap;
    -webkit-align-content: center;
    align-content: center;
    width: 300px;
    height: 300px;
    background-color: lightgrey;
}

Cobalah sendiri "


Flex Barang Properti

Pemesanan

The order properti menentukan urutan item relatif fleksibel untuk sisa barang yang fleksibel di dalam wadah yang sama:

Contoh

.flex-item {
    background-color: cornflowerblue;
    width: 100px;
    height: 100px;
    margin: 10px;
}

.first {
    -webkit-order: -1;
    order: -1;
}

Cobalah sendiri "

Batas

Pengaturan margin: auto; akan menyerap ruang ekstra. Hal ini dapat digunakan untuk mendorong item fleksibel dalam posisi yang berbeda.

Pada contoh berikut kita mengatur margin-right: auto; pada item fleksibel pertama. Hal ini akan menyebabkan semua ruang ekstra untuk diserap ke kanan elemen yang:

Contoh

.flex-item {
    background-color: cornflowerblue;
    width: 75px;
    height: 75px;
    margin: 10px;
}

.flex-item:first-child {
    margin-right: auto;
}

Cobalah sendiri "

Pemusatan sempurna

Pada contoh berikut kita akan memecahkan masalah hampir setiap hari: centering sempurna.

Hal ini sangat mudah dengan flexbox. Pengaturan margin: auto; akan membuat item berpusat sempurna di kedua sumbu:

Contoh

.flex-item {
    background-color: cornflowerblue;
    width: 75px;
    height: 75px;
    margin: auto;
}

Cobalah sendiri "

menyelaraskan diri

The align-self milik item fleksibel menimpa properti menyelaraskan-item wadah fleksibel untuk item tersebut. Ini memiliki kemungkinan nilai sama dengan align-items properti.

Contoh berikut menetapkan nilai-nilai menyelaraskan diri yang berbeda untuk setiap item fleksibel:

Contoh

.flex-item {
    background-color: cornflowerblue;
    width: 60px;
    min-height: 100px;
    margin: 10px;
}

.item1 {
    -webkit-align-self: flex-start;
    align-self: flex-start;
}
.item2 {
    -webkit-align-self: flex-end;
    align-self: flex-end;
}

.item3 {
    -webkit-align-self: center;
    align-self: center;
}

.item4 {
    -webkit-align-self: baseline;
    align-self: baseline;
}

.item5 {
    -webkit-align-self: stretch;
    align-self: stretch;
}

Cobalah sendiri "

melenturkan

The flex properti menentukan panjang item flex, relatif terhadap seluruh item fleksibel dalam wadah yang sama.

Pada contoh berikut, item fleksibel pertama akan mengkonsumsi 2/4 dari ruang bebas, dan dua item fleksibel lainnya akan mengkonsumsi 1/4 dari ruang bebas masing-masing:

Contoh

.flex-item {
    background-color: cornflowerblue;
    margin: 10px;
}

.item1 {
    -webkit-flex: 2;
    flex: 2;
}

.item2 {
    -webkit-flex: 1;
    flex: 1;
}

.item3 {
    -webkit-flex: 1;
    flex: 1;
}

Cobalah sendiri "


contoh

Contoh lebih

Membuat website responsif dengan flexbox
Contoh ini menunjukkan cara membuat layout website responsif dengan flexbox.


CSS3 flexbox Properti

Tabel berikut berisi daftar properti CSS digunakan dengan flexbox:

Property Description
display Specifies the type of box used for an HTML element
flex-direction Specifies the direction of the flexible items inside a flex container
justify-content Horizontally aligns the flex items when the items do not use all available space on the main-axis
align-items Vertically aligns the flex items when the items do not use all available space on the cross-axis
flex-wrap Specifies whether the flex items should wrap or not, if there is not enough room for them on one flex line
align-content Modifies the behavior of the flex-wrap property. It is similar to align-items, but instead of aligning flex items, it aligns flex lines
flex-flow A shorthand propert for flex-direction and flex-wrap
order Specifies the order of a flexible item relative to the rest of the flex items inside the same container
align-self Used on flex items. Overrides the container's align-items property
flex Specifies the length of a flex item, relative to the rest of the flex items inside the same container