Modul Belajar Dicoding CSS
Modul Belajar Dicoding CSS
w
PENDALAMAN CSS
B. Box Model
Berikut adalah penjelasan dari gambar di atas.
Content
Content atau konten merupakan sebuah inti dari kotak elemen yang merupakan konten
dari elemen itu sendiri.
Padding
Area yang menjadi jarak antara border elemen dengan konten yang ditampilkan. Ketika
kita menerapkan background-color, warna tersebut diterapkan pada area padding.
Penerapan ukuran padding pada elemen adalah opsional.
Border
Border merupakan garis yang mencakup konten beserta padding. Penerapan border pada
elemen adalah opsional.
Margin
Berbeda dengan padding, margin merupakan area jarak di luar border. Pada ilustrasi di
atas, margin ditunjukkan dengan warna merah muda. Namun, pada aslinya margin selalu
transparan dan penerapan margin pada elemen adalah opsional.
Edge of Element
Edge of element merupakan batas dari suatu elemen. Di dalamnya terdapat margin,
border, padding, dan konten. Pada ilustrasi di atas, batas elemen ditunjukkan dengan garis
putus, tetapi pada aslinya batas elemen selalu tidak terlihat.
1. Dimension
Contohnya berikut.
Untuk menangani kasus seperti ini kita bisa gunakan properti overflow,
properti ini dapat bernilai berikut.
visible
Visible merupakan nilai default pada properti ini. Konten yang tidak
tertampung (overflow) akan tetap ditampilkan seperti pada
standarnya.
hidden
Jika terjadi overflow, konten yang tidak tertampung akan
disembunyikan.
scroll
Memunculkan scroll bar pada pinggir elemen sehingga konten yang
tidak tertampung akan ditampilkan dengan scroll bar. Jika
menggunakan nilai ini, scroll bar akan tetap muncul walaupun
konten tidak terjadi overflow.
auto
Sama seperti scroll, hanya jika tidak terjadi overflow, nilai visible
yang akan diterapkan.
4. Box-Sizing
Sebelum CSS3, ukuran lebar dan panjang elemen mengacu pada konten
elemen (content-box). Itu berarti ukuran elemen seluruhnya merupakan
nilai panjang (width) dan lebar (height) yang kita spesifikasikan ditambah
dengan nilai padding dan border yang diterapkan pada elemen. Hal
tersebut membuat sebagian developer menjadi sulit dalam menetapkan
ukuran dimensi.
Pada CSS3, kita dapat memilih tipe pengukuran lain dalam menentukan
dimensi elemen. Dengan menggunakan properti box-sizing, kita dapat
menentukannya berdasarkan border box. Ukuran elemen sudah
termasuk content, padding, dan border. Dengan metode ini, hasil elemen
yang ditampilkan (termasuk padding dan border) akan memiliki dimensi
yang sama persis seperti yang kita tentukan.
5. Border
Border merupakan sebuah garis yang mengelilingi area konten dan
padding (opsional). Kita bisa mengatur tipe, ketebalan, serta warna garis
yang ditampilkan sesuai dengan yang kita inginkan. Kita juga bisa
mengatur dalam menampilkan sebagian atau keseluruhan garis pada
elemen.
a. Border Width
b. Border Style
Kita juga bisa menetapkan tipe garis secara individual pada sisi
elemen dengan menggunakan empat properti terpisah. Contohnya
berikut.
c. Border Color
Sama seperti properti border yang lain, kita dapat menentukan warna
individual sisi pada elemen dengan menggunakan properti yang terpisah.
Untuk menyingkat cara, kita juga dapat menetapkan nilai keempatnya
sekaligus dalam satu properti seperti berikut.
Perlu kita perhatikan bahwa penulisan urutan harus benar. Nilai pertama
digunakan untuk ketebalan, kedua untuk tipe, dan ketiga untuk warna
garis. Perhatikan gambar berikut untuk lebih jelasnya.
7. Padding
Padding merupakan jarak antara area konten dan border. Padding
banyak diterapkan pada elemen jika elemen tersebut menerapkan warna
latar atau pun border. Padding memberikan sedikit ruang sehingga
konten di dalam elemen dapat lebih nyaman untuk ditampilkan.
9. Margin
Seperti padding, margin merupakan ruang atau jarak pada sebuah
elemen. Namun, jarak tersebut terletak diluar dari konten dan border
element. Margin digunakan untuk menjaga elemen agar tidak
bertabrakan satu sama lain atau dari tepi jendela browser.
Margin ini bersifat collapsed, yang artinya dapat menumpuk jika terdapat
dua margin yang saling bertumpukkan. Kalian bisa melihat pada margin
bawah dan margin atas pada kedua elemen tersebut. Hal itu menjelaskan
alasan jarak vertikal antar elemen tersebut tidak sebesar 40px, tetapi
sebesar 20px. Jika terjadi pertumpukan margin, nilai yang paling besar
yang akan diterapkan.
Setelah kita menentukan lebar kotak dan mengatur margin kiri dan kanan
menjadi auto, secara otomatis browser akan memberi jarak yang sama di
setiap sisi horizontal kotak sehingga membuat kotak berada di tengah
halaman.
Contoh :
c. Display Roles
Kita pernah membahas mengenai inline dan block pada modul HTML
sebelumnya bahwa standarnya setiap elemen HTML memiliki dua tipe,
yaitu block dan inline. Untuk lebih jelasnya berikut adalah sifat-sifat yang
ada pada elemen block dan inline.
Dengan menggunakan properti display, kita dapat mengubah sebuah
elemen inline menjadi block, begitu pun sebaliknya. Properti ini juga
dapat digunakan untuk menyembunyikan elemen yang ditampilkan.
E. Rounded Corner
CSS3 memperkenalkan kemampuan untuk membuat rounded corner atau
sudut bundar pada box dengan menggunakan properti border-radius.
Nilai dari properti ini merupakan tingkat lengkungan border dalam piksel.
Contohnya berikut.
Berikut adalah nilai dari properti position yang ada pada CSS.
2. Normal flow
Dalam flow normal, setiap elemen block ditempatkan di bawah elemen
sebelumnya. Kita tidak perlu menetapkan nilai properti position ketika
ingin membuat perilaku seperti ini. Namun, secara sintaks perilaku ini
ditetapkan dengan nilai static.
3. Relative Positioning
Kita dapat melakukan perpindahan posisi elemen ke atas, kanan, bawah,
ataupun kiri. Perpindahan posisi yang dilakukan tidak akan berpengaruh
terhadap posisi elemen di sekitarnya.
Pada contoh di atas, setelah menetapkan nilai position pada paragraf
kedua, kita mengubah posisinya menjadi 10 piksel lebih bawah dan 100
piksel lebih ke kanan dari posisi yang seharusnya. Perlu kita ingat bahwa
perpindahan posisi mengacu pada posisi elemen seharusnya.
3. Absolute Positioning
Ketika properti position diberikan nilai absolute, ia akan berperilaku sama
dengan relative. Namun, hal yang membedakannya adalah elemen ini
benar-benar tidak dianggap ada oleh elemen yang berada pada normal
flow. Dampaknya, lokasi awal elemen yang diberikan nilai absolute akan
ditempati oleh elemen di bawahnya.
Pada contoh di atas, kita bisa lihat bahwa ketika elemen heading
menerapkan properti position dengan nilai absolute, elemen di
bawahnya (paragraf) akan menempati posisi yang sebelumnya ditempati
oleh elemen heading tersebut. Selain itu, perpindahan posisi ketika
menggunakan absolute akan mengikuti ukuran jendela browser.
Nilai ini juga dapat relatif pada elemen yang menaunginya (elemen induk)
selama elemen tersebut juga berada di luar normal flow. Jika tidak,
elemen akan tidak menghiraukan elemen induknya tersebut. Contohnya
seperti kode berikut.
Pada contoh kode di atas, bisa dilihat bahwa kita tidak menetapkan
properti position pada elemen .parent sehingga elemen tersebut tetap
berada pada flow normal. Jadi, elemen heading akan mengabaikan
elemen induknya.
4. Fixed Positioning
Fixed positioning merupakan absolute position. Namun, posisinya selalu
relatif pada jendela browser (meskipun diletakkan dalam induk elemen di
luar flow normal). Bahkan, ketika pengguna melakukan scrolling,
posisinya akan tetap tampak pada posisinya di layar.
Pada contoh di atas, elemen heading diposisikan di sudut kiri atas jendela
browser dengan properti berikut.
G. FLOATING
Secara sederhananya, properti float dapat membuat elemen berada pada
sebelah kanan atau kiri. Bahkan, jika diterapkan pada elemen inline
memungkinkan elemen di sekitarnya mengelilingi elemen tersebut
(wrap).
Selain dalam membuat text wrapping, float juga merupakan salah satu
teknik dalam membuat layout website. Teknik ini masih banyak
digunakan oleh developer karena sangat mudah dipahami dan tergolong
mudah untuk multiple column seperti gambar berikut.
Hal ini dapat dilakukan dengan mudah menggunakan
properti float karena nilai dari properti ini adalah left dan right. Nilai
tersebut menunjukkan posisi elemen harus diletakkan. Contoh
penerapannya seperti berikut.
Dari contoh di atas, kita bisa melihat pada selector .left-
content dan .right-content ditetapkan properti float dengan
nilai left dan right sehingga elemen tersebut dapat diposisikan secara
bersebelahan.
Lantas, jika nilainya hanya left dan right, bagaimana apabila terdapat
lebih dari dua kolom dalam menyusun layout? Hal tersebut sangat
mudah dilakukan, kita hanya perlu menetapkan nilai left pada ketiga
kolomnya, dengan demikian maka kolom akan tampil bersebelahan
sesuai urutan penulisan elemennya.
1. Permasalahan Penerapan Float
Masalah yang akan ditimbulkan adalah jika sebuah elemen induk yang
hanya memiliki satu elemen dengan menerapkan properti float akan
memiliki nilai tinggi 0px. Contohnya berikut.
Pada contoh tersebut, kita bisa melihat bahwa elemen gambar berada
dalam sebuah container div. Namun, container tersebut tidak memiliki
tinggi senilai gambar yang ditampilkan. Mengapa bisa demikian? Untuk
lebih jelasnya, kita coba tambahkan paragraf di dalam container tersebut
tanpa menggunakan properti float.
Ada dua cara yang akan dibahas di sini untuk menangani hal tersebut,
yakni dengan menggunakan properti clear dan menetapkan
nilai overflow: auto pada container.
Nilai dari properti clear merupakan nilai yang digunakan pada properti
float. Sebab, properti clear akan menghapus sifat float sesuai dengan
nilai yang ditetapkan. Contohnya berikut.
Jika mengubah clear menjadi clear: right, hasilnya akan kembali seperti
hasil sebelum menerapkannya.
Lalu, bagaimana jika terdapat dua elemen yang menerapkan nilai float
berbeda (left dan right)? Ada satu nilai lagi yang dapat menghilangkan
kedua sifat float tersebut, yakni nilai both. Gunakanlah nilai tersebut jika
kita ingin sepenuhnya menghilangkan sifat float pada elemen.
J. STICKY POSITION
Salah satu cara yang paling cepat untuk memastikan bahwa CSS yang
telah Anda tulis itu valid dan dapat berjalan adalah menggunakan
berbagai tools online yang tersedia secara gratis. Pengecekan cukup
dengan cara copy-paste kode CSS, upload berkas CSS, atau menulis
alamat situs yang ingin diperiksa.
Perbaikan di atas dapat dilakukan secara manual, tetapi Anda juga dapat menggunakan tools
online yang dapat memperbaiki secara otomatis. Inilah beberapa opsi yang tersedia.
CSSNANO Playground
CSS Minifier Tool and Compressor
Minify - JavaScript and CSS minifier