Cara menambahkan background image
background-image melukis gambar di belakang konten, padding, dan border elemen. Secara default, gambar dimulai dari pojok kiri atas padding box, memakai ukuran aslinya, dan diulang untuk mengisi kotak:
Di proyek sungguhan, url() menunjuk ke sebuah file: url("images/hero.jpg"). Path-nya relatif terhadap stylesheet yang memuatnya (atau terhadap halaman, untuk elemen <style>). Contoh-contoh di halaman ini memakai gambar SVG kecil yang ditulis langsung sebagai URL data: supaya bisa berjalan di mana saja.
Dua hal yang perlu kamu tahu sejak awal:
- Background tidak memberi ukuran pada elemen.
divkosong dengan background image tingginya 0px. Beri konten, padding,height, atauaspect-ratio. - Background image adalah dekorasi. Pembaca layar melewatinya dan tidak ada teks alt. Gambar yang punya makna sebaiknya ditaruh di elemen
<img>.
background-size: cover, contain, dan panjang
background-size mengubah skala gambar. Dua kata kuncinya mempertahankan proporsi gambar:
Lebar gambar dua kali tingginya, dan setiap kotak berbentuk persegi.
| Nilai | Hasil |
|---|---|
auto (default) | Ukuran asli gambar |
cover | Diperbesar sampai kotak terisi penuh; sisanya dipotong |
contain | Diperbesar sampai seluruh gambar muat; tersisa pita abu-abu di dua sisi |
200px | Lebar 200px, tinggi menyesuaikan proporsi |
50% auto | Setengah lebar kotak, tinggi menyesuaikan proporsi |
100% 100% | Persis seukuran kotak; gambar jadi terdistorsi jika proporsinya berbeda |
cover adalah pilihan biasa untuk banner hero dan kartu. contain untuk logo dan ilustrasi yang tidak boleh terpotong.
background-position dan background-repeat
background-position menempatkan gambar di dalam kotak, dengan kata kunci (top, center, bottom, left, right), persentase, atau panjang. background-repeat mengatur pengulangan. Coba beberapa nilai:
Coba posisi top right, bottom 10px right 20px, dan 25% 75%, serta nilai repeat repeat-x, repeat-y, space (gambar diulang dengan jarak sehingga tidak ada yang terpotong), dan round (ukuran gambar disesuaikan sehingga jumlahnya pas bulat).
Menumpuk lapisan: beberapa background dan overlay teks
background-image menerima daftar yang dipisahkan koma. Lapisan pertama digambar paling atas. Penggunaan yang umum adalah gradien semi transparan di atas foto, supaya teks putih tetap terbaca:
aspect-ratio memberi tinggi pada kotak kosong, dan background-size: cover berlaku untuk kedua lapisan. Untuk resep gradien lainnya, lihat gradien CSS.
Shorthand background
background mengatur semua properti background dalam satu baris. Ukuran harus ditulis tepat setelah posisi, dipisahkan garis miring, dan warna ditaruh di lapisan terakhir:
.hero {
background: url("hero.jpg") center / cover no-repeat, #1f2937;
}
/* the same as */
.hero {
background-image: url("hero.jpg");
background-position: center;
background-size: cover;
background-repeat: no-repeat;
background-color: #1f2937;
}
Warna cadangan terlihat selama gambar dimuat, dan juga jika gambar gagal dimuat. Properti apa pun yang tidak kamu tulis di shorthand diatur ulang ke nilai default-nya, jadi tulis shorthand lebih dulu dan properti satuan sesudahnya.
Properti background lainnya
| Properti | Fungsinya |
|---|---|
background-attachment: fixed | Gambar tetap diam saat halaman di-scroll (diabaikan di Safari iOS) |
background-origin | Apakah posisi dihitung dari tepi border, padding, atau konten |
background-clip | Di mana background dilukis, termasuk text untuk mengisi huruf |
background-blend-mode | Mencampur lapisan, misalnya dengan multiply |
Kesalahan umum
- Path yang salah.
url()di stylesheet relatif terhadap file CSS, bukan terhadap halaman HTML. - Elemen kosong. Elemen itu tidak punya tinggi, jadi gambarnya tidak punya tempat untuk tampil.
- Lupa
no-repeatsaat memakaicontainatau gambar kecil: gambarnya akan diulang. - Meregangkan dengan
100% 100%padahal yang kamu maksudcover. - Gambar penting sebagai background. Pakai
<img>dengan teks alt untuk konten; background tidak terlihat oleh pembaca layar. - Tidak memberi tanda kutip pada URL
data:yang berisi spasi atau tanda kutip. Selalu tulisurl("...").
Pertanyaan yang sering diajukan
Bagaimana cara menambahkan background image di CSS?
Pakai background-image: url("photo.jpg"); pada elemen. Path-nya relatif terhadap file CSS (atau terhadap halaman, untuk atribut style atau elemen <style>). Beri ukuran pada elemen, karena background tidak pernah membuat elemen kosong membesar.
Bagaimana cara membuat background image menutupi seluruh elemen?
Pakai background-size: cover; bersama background-position: center;. Gambar diperbesar sampai mengisi kotak sepenuhnya dengan proporsi yang tetap, dan bagian yang berlebih dipotong.
Apa perbedaan cover dan contain?
cover mengisi seluruh kotak dan memotong bagian yang tidak muat. contain menampilkan seluruh gambar dan menyisakan ruang kosong di dua sisi jika proporsinya berbeda.
Bagaimana cara agar background image tidak berulang?
Tambahkan background-repeat: no-repeat;. Secara default, background image diulang ke dua arah untuk mengisi elemen.
Kenapa background image saya tidak muncul?
Penyebab yang umum adalah path yang salah di url() (path-nya relatif terhadap file CSS), elemen tanpa tinggi karena tidak punya konten, atau shorthand background di bawahnya yang mengatur ulang gambar.