Advertisement
  1. Web Design
  2. CSS

Tip Singkat: Menyelesaikan Teka-Teki Kolom Dengan Tinggi Yang Sama

Scroll to top
Read Time: 5 min

() translation by (you can also view the original English article)

Ada satu masalah umum dalam desain web yang telah ada sejak kita berpindah dari hari-hari desain berbasis tabel ke dalam era CSS, dan itu adalah:

Bagaimana saya dapat memiliki background 100% height dalam layout multi kolom yang fleksibel?

Ada beberapa solusi untuk dilema ini. Bagaimana pun juga, yang akan kita cover kali ini mungkin cocok untuk projectmu jika kamu membutuhkan:

  1. Gambar background, border, efek CSS3 dan lain-alin yang diterapkan pada kolommu.
  2. Lebih dari tiga kolom
  3. Kolom dengan tinggi dan lebar yang fleksibel

Satu pilihan adalah memesan layanan kustomisasi website yang cepat dan efisien dari Envato Studio. Kamu dapat memilih dari berbagai penyedia berpengalaman, memeriksa ulasan mereka, dan kemudian mengirimkan kepada detail modifikasi yang tepatnya kamu butuhkan.

Jika tidak, mari kita mulai dengan sebuah tampilan singkat masalahnya.

Perilaku Background Column Secara Default

Gambar di bawah adalah layout tiga kolom sederhana, menggunakan pendekatan standar dalam mengarahkan tiap kolom ke kiri. Dengan background yang diterapkan dalam gaya default, kolom-kolom itu disesuaikan dengan tinggi konten mereka seperti berikut:

Ini adalah fungsional, namun tidak cukup menjadi layout yang menarik mata karena perbedaan tinggi yang signifikan.

HTML untuk di atas menempatkan tiga elemen "konten kolom" dalam sebuah pembungkus.

1
<div class="wrap">
2
    <div class="content">...</div>
3
    <div class="sidebar">...</div>
4
    <div class="sidebar_two">...</div>
5
</div>

CSS untuk elemen "konten kolom" ini adalah:

1
.content {
2
    width:60%;
3
    float:left;
4
    padding: 20px 30px;
5
    background: #fff;
6
    color: #6d7072;
7
}
8
.sidebar {
9
    width:20%;
10
    float:left;
11
    padding: 20px 30px;
12
    background: #5f6673;
13
    color: #ebeef3;
14
    font-size: 90%;
15
}
16
.sidebar_two {
17
    width:20%;
18
    float:left;
19
    padding: 20px 30px;
20
    background: #434750;
21
    color: #ebeef3;
22
    font-size: 90%;
23
}

Solusi: Pseudo-Elements

Ketika kita mengacu pada kolom dengan tinggi yang sama, apa yang sebenarnya kita inginkan adalah untuk memuaskan dua kondisi:

  1. Mengijinkan tinggi kolom menyesuaikan dengan jumlah konten di dalamnya secara fleksibel.
  2. Mengatur tinggi background yang seragam secara independen pada jumlah konten pada tiap kolom.

Dalam contoh di atas kita telah memiliki kondisi pertama dari tinggi yang fleksibel. Bagaimana pun juga style background dan aturan tinggi yang fleksibel merupakan bagian class yang sama, diterapkan pada elemen yang sama. Apapun aturan tinggi yang diikuti elemen itu, background akan mengikuti mereka juga.

Karena itu jika kita ingin background memiliki pengaturan tinggi yang berbeda, kita akan membutuhkan elemen yang berbeda dimana kita menerapkan background style bersamaan dengan aturan tingginya sendiri. Untuk membuat elemen terpisah ini tanpa menambahkan markup ekstra, kita akan menggunakan pseudo-elements.

Untuk tiap kolom kita akan menggunakan :before pseudo-selector untuk membuat pseudo-element terpisah, yang akan kita terapkan pada style background. Kemudian kita akan menggunakan kombinasi penempatan posisi yang absolut dan z-index untuk menempatkan background ini di belakang konten untuk tiap kolom dan menetapkan tinggi yang seragam pada mereka.

CSS yang baru untuk tiap kolom menjadi:

1
.content, .content:before {
2
    width:60%;
3
}
4
.content {
5
    float:left;
6
    padding: 20px 30px;
7
    color: #6d7072;
8
}
9
.content:before {
10
    content: '';
11
    position: absolute;
12
    top: 0;
13
    bottom: 0;
14
    z-index: -1;
15
    left: 0;
16
    background: #fff;
17
}
1
.sidebar, .sidebar:before {
2
    width:20%;
3
}
4
.sidebar {
5
    float:left;
6
    padding: 20px 30px;
7
    color: #ebeef3;
8
    font-size: 90%;
9
}
10
.sidebar:before {
11
    content: '';
12
    position: absolute;
13
    top: 0;
14
    bottom: 0;
15
    z-index: -1;
16
    left: 60%;
17
    background-color: #5f6673;
18
}
1
.sidebar_two, .sidebar_two:before {
2
    width:20%;
3
}
4
.sidebar_two {
5
    float:left;
6
    padding: 20px 30px;
7
    color: #ebeef3;
8
    font-size: 90%;
9
}
10
.sidebar_two:before {
11
    content: '';
12
    position: absolute;
13
    top: 0;
14
    bottom: 0;
15
    z-index: -1;
16
    left: 80%;
17
    background-color: #434750;
18
}

Yang memberikan kita tampilan tinggi kolom yang bagus dan merata:

Bagaimana Itu Dilakukan

Pada intinya yang kita lakukan di sini adalah menetapkan posisi pseudo-elements "background-holder" di belakang elemen "column-content" reguler untuk membuat style background.

Karena pseudo-elements "background holder" ini benar-benar diposisikan kita dapat memberi tahu tepatnya posisi tepi terluar mereka, sembari tetap membolehkan elemen "column-content" berada pada ketinggian apapun yang dibutuhkan.

Elemen .wrap, tiga elemen anaknya beserta pseudo-elemennya.
Tiap elemen kolom memiliki pseudo-element, yang bertindak sebagai background.

Penting: kolommu haruslah berada di dalam sebuah pembungkus induk (dalam kasus ini adalah .wrap) yang ditentukan pada position: relative; pada urutan penentuan posisi untuk berfungsi. Ini akan menjelaskan kolom untuk memastikan itu menerima nilai height background untuk melebar.

Pendekatan Alternatif dan Tambahan

Ada beberapa pendekatan bagus yang menyarankan cara lain untuk menyelesaikan masalah ini. Jika kamu tidak membutuhkan tambahan khusus pendekatan ini, kamu mungkin memilih salah satu solusi di bawah.

Warna Datar vs. Gambar Background dan Efek Ekstra

Jika kamu merencanakan untuk menggunakan hanya warna datar dalam backgroundmu, maka sebuah solusi yang sangat cerdas adalah menerapkan gradient CSS horizontal, membuat pita warna untuk disejajarkan dengan kolom. Periksa bagaimana caranya, terima kasih kepada Chris Coyier.

Bagaimana pun juga juga desainmu membutuhkan gambar, border, efek CSS3 dan sebagainya untuk diterapkan pada background maka teknik div "penahan background" kita mungkin lebih cocok, misalnya.

Kurang Dari, Atau Lebih Dari Tiga Kolom

Solusi sangat keren lainnya adalah menggunakan pseudo selector :before dan :after pada pembungkus induk kolom untuk membuat hingga tiga kolom dengan tinggi background yang sama. Kamu dapat membaca tentang teknik ini, dijelaskan oleh Nicolas Gallagher.

Pada sisi lain jika kamu butuh lebih dari tiga kolom kamu mungkin ingin menggunakan teknik "penahan background" bukannya kamu dapat memiliki sebanyak kolom sesukamu. misalnya:

Kesimpulan

Setelah kita melihat dukungan browser yang meluas untuk flexbox itu harusnya menjadi cukup jelas untuk melakukan hal-hal seperti ini tanpa perlu bergantung pada pseudo-element.

Bagaimana pun juga, antara sekarang dan dulu, ini adalah cara yang bagus untuk menyelesaikan pekerjaan. Itu membuatmu menjaga lebar yang fleksibel untuk layout responsif, gunakan kolom sebanyak yang kamu suka dan terapkan jenis background styling apapun.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Web Design tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.