Menu

Cara Membuat Gambar di Tengah dengan HTML dan CSS

<img> bersifat inline, jadi ditengahkan seperti teks: text-align: center pada induknya. Atau jadikan block dengan margin: 0 auto, atau tengahkan dengan flexbox atau grid, termasuk secara vertikal. Setiap metode berjalan langsung dan mengukur hasilnya.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

Jawaban cepatnya: text-align pada induk

<img> adalah elemen inline: ia berada di dalam baris teks seperti sebuah kata. Jadi kamu menengahkannya dengan cara yang sama seperti menengahkan teks, yaitu text-align: center pada induknya:

Style-nya ditaruh di div, bukan di gambar. Menaruh text-align: center di <img> itu sendiri tidak berpengaruh, karena gambar tidak punya teks di dalamnya untuk diratakan.

Metode 2: display block dan margin auto

Jika kamu lebih suka memberi style pada gambarnya sendiri, ubah gambar menjadi block dan beri margin samping otomatis. Ruang kosong di kedua sisi dibagi rata:

Gambar abu-abu punya margin: 0 auto tetapi tetap di awal baris: margin auto tidak berpengaruh pada elemen inline. display: block adalah bagian yang kurang. max-width: 100% bersama height: auto menjaga gambar agar tidak meluber di layar yang sempit sambil mempertahankan proporsinya.

Metode 3: flexbox atau grid, termasuk penengahan vertikal

Untuk menengahkan gambar ke dua arah di dalam kotak, beri kotak itu sebuah tinggi lalu tengahkan isinya dengan grid atau flexbox:

Padanan flexbox-nya adalah display: flex; justify-content: center; align-items: center;. Dengan cara mana pun, kotaknya butuh tinggi yang lebih besar dari gambar, kalau tidak, tidak ada ruang untuk menengahkan. Metode yang sama bisa menengahkan elemen apa pun; halaman membuat div di tengah membandingkan semuanya.

Menengahkan gambar dengan caption

Foto dengan caption sebaiknya ditaruh di <figure>. Tengahkan isi figure, dan gambar beserta caption-nya akan sejajar bersama:

Beberapa gambar dalam satu baris di tengah

Sederet logo atau thumbnail adalah pekerjaan untuk flexbox. justify-content: center menengahkan kelompoknya, gap memberi jarak, dan flex-wrap membuatnya turun ke baris berikutnya di layar kecil sambil tetap di tengah:

Metode mana yang dipakai

SituasiPakai
Gambar di dalam paragraf atau block sederhanatext-align: center pada induk
Kamu hanya bisa memberi style pada gambardisplay: block; margin: 0 auto;
Menengahkan ke dua arah di dalam kotakGrid place-items: center (atau flexbox) pada kotak
Sederet gambarFlexbox dengan justify-content: center
Gambar dengan caption<figure> dengan text-align: center
Gambar background, bukan kontenbackground-position: center, lihat background-image

Cara lama, dan kenapa jangan

Kamu masih akan menemukan cara-cara ini di tutorial lama:

<!-- obsolete: do not use -->
<center><img src="logo.png" alt="Logo"></center>
<img src="logo.png" alt="Logo" align="center">

<center> dan atribut align sudah dihapus dari HTML. Browser masih menampilkan <center> demi kompatibilitas, dan align="center" pada gambar bahkan tidak menengahkannya secara horizontal: browser memperlakukannya sebagai perataan vertikal di dalam baris. Pakai salah satu metode CSS di atas.

Kesalahan umum

  • text-align: center pada <img>. Taruh di induknya.
  • margin: 0 auto pada gambar inline. Tambahkan display: block.
  • Penengahan vertikal tanpa tinggi pada induk. Kotaknya menyusut seukuran gambar, sehingga tidak ada ruang untuk menengahkan.
  • float: center. Nilai itu tidak ada. Float hanya bisa ke salah satu sisi.
  • Lupa alt. Gambar yang ditengahkan tetap butuh teks alt; pakai alt="" hanya untuk gambar yang murni dekoratif.
  • Gambar yang tertarik. Mengatur width dan height di CSS dengan rasio yang berbeda membuatnya terdistorsi. Atur salah satunya dan pakai height: auto, atau tambahkan object-fit: cover.

Pertanyaan yang sering diajukan

Bagaimana cara membuat gambar di tengah di HTML?

Taruh text-align: center pada elemen yang memuatnya, misalnya <p style="text-align: center;"><img src="logo.png" alt="Logo"></p>. Secara default, gambar bersifat inline, jadi ditengahkan seperti sebuah kata dalam teks.

Bagaimana cara membuat gambar di tengah dengan margin auto?

Jadikan gambarnya block lebih dulu: img { display: block; margin: 0 auto; }. Margin auto tidak menengahkan elemen inline, dan gambar tetap inline sampai kamu mengubahnya.

Bagaimana cara membuat gambar di tengah secara vertikal dan horizontal?

Jadikan wadahnya grid (atau flexbox) yang punya tinggi: .box { display: grid; place-items: center; height: 300px; }. Gambarnya lalu berada di tengah kotak.

Bisakah saya memakai tag <center> atau align="center" untuk menengahkan gambar?

Tidak. <center> dan atribut align pada <img> sudah usang di HTML5. Browser masih menampilkan <center> demi halaman lama, tetapi align="center" pada gambar meratakannya secara vertikal di dalam baris, bukan secara horizontal. Pakai CSS.

Kenapa ada celah kecil di bawah gambar yang saya tengahkan?

Gambar inline duduk di garis dasar teks, sehingga menyisakan ruang di bawahnya untuk ekor huruf seperti g dan y. Atur display: block pada gambar, atau vertical-align: middle, dan celahnya hilang.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai