Gambar

Gambar dekoratif, seperti gradien latar belakang pada tombol atau gambar latar belakang pada bagian konten atau halaman penuh, bersifat presentasi dan harus diterapkan dengan CSS. Jika gambar menambahkan konteks ke dokumen, gambar tersebut adalah konten dan harus disematkan dengan HTML.

Metode utama untuk menyertakan gambar adalah tag <img> dengan atribut src yang mereferensikan resource gambar dan atribut alt yang mendeskripsikan gambar.

<img src="images/eve.png" alt="Eve">

Atribut srcset di <img> dan elemen <picture> menyediakan cara untuk menyertakan beberapa sumber gambar dengan kueri media terkait, yang masing-masing memiliki sumber gambar penggantian, sehingga memungkinkan penayangan file gambar yang paling sesuai berdasarkan resolusi perangkat, kemampuan browser, dan ukuran area tampilan. Atribut srcset memungkinkan penyediaan beberapa versi gambar berdasarkan resolusi dan, bersama dengan atribut sizes, ukuran area tampilan browser.

<img src="images/eve.png" alt="Eve"
  srcset="images/eve.png 400w, images/eve-xl.jpg 800w"
  sizes="(max-width: 800px) 400px, 800px" />

Hal ini juga dapat dilakukan dengan elemen <picture>, beserta turunan <source>, yang menggunakan <img> sebagai sumber default.

<picture>
  <source src="images/eve.png" media="(max-width: 800px)" />
  <source src="images/eve-xl.jpg" />
  <img src="images/eve.png" alt="Eve" />
</picture>

Selain metode gambar responsif HTML bawaan ini, HTML juga memungkinkan performa rendering gambar ditingkatkan melalui berbagai atribut. Tag <img>, dan oleh karena itu tombol kirim grafis <input type="image">, dapat menyertakan atribut height dan width untuk menetapkan rasio aspek gambar guna mengurangi pergeseran tata letak konten. Atribut lazy memungkinkan pemuatan lambat.

HTML juga mendukung penyertaan gambar SVG menggunakan <svg> secara langsung, meskipun gambar SVG dengan ekstensi .svg (atau sebagai data-uri) dapat disematkan menggunakan elemen <img>.

Setidaknya, setiap gambar latar depan harus menyertakan atribut src dan alt.

File src adalah jalur dan nama file gambar yang disematkan. Atribut src digunakan untuk memberikan URL gambar. Kemudian, browser akan mengambil aset dan merendernya ke halaman. Atribut ini diperlukan oleh <img>. Tanpa itu, tidak ada yang dapat dirender.

Atribut alt menyediakan teks alternatif untuk gambar, yang memberikan deskripsi gambar bagi mereka yang tidak dapat melihat layar (pikirkan mesin telusur dan teknologi pendukung, serta Alexa, Siri, dan Asisten Google), dan dapat ditampilkan oleh browser jika gambar tidak dimuat. Selain bagi pengguna dengan jaringan lambat atau bandwidth terbatas, teks alt sangat berguna dalam email HTML, karena banyak pengguna memblokir gambar di aplikasi email mereka.

<img src="path/filename" alt="descriptive text" />

Jika gambar berjenis file SVG, sertakan juga role="img", yang diperlukan karena VoiceOver VoiceOver.

<img src="switch.svg" alt="light switch" role="img" />

Menulis deskripsi gambar alt yang efektif

Atribut alt bertujuan agar singkat dan ringkas, memberikan semua informasi relevan yang disampaikan gambar sekaligus menghilangkan informasi yang berlebihan dengan konten lain dalam dokumen atau tidak berguna. Dalam menulis teks, gaya bahasa harus mencerminkan gaya bahasa situs.

Untuk menulis teks alternatif yang efektif, bayangkan Anda sedang membacakan seluruh halaman kepada orang yang tidak dapat melihatnya. Dengan menggunakan elemen semantik <img>, pengguna pembaca layar dan bot diberi tahu bahwa elemen tersebut adalah gambar. Tidak perlu menyertakan "Ini adalah gambar/screenshot/foto" di alt. Pengguna tidak perlu tahu bahwa ada gambar, tetapi mereka perlu mengetahui informasi apa yang disampaikan gambar tersebut.

Biasanya, Anda tidak akan mengatakan, "Ini adalah gambar buram seekor yang memakai topi merah." Sebaliknya, Anda akan menyampaikan apa yang disampaikan gambar dalam kaitannya dengan konteks dokumen lainnya. Apa yang Anda sampaikan akan berubah, bergantung pada konteks dan konten teks di sekitarnya.

Misalnya, foto dideskripsikan dengan cara yang berbeda, bergantung pada konteksnya. Jika Fluffy adalah avatar di samping ulasan untuk makanan Yuckymeat, alt="Fluffy" sudah cukup.

Jika foto tersebut adalah bagian dari halaman adopsi Fluffy di situs penampungan hewan, target audiensnya adalah calon pemilik. Teks harus mendeskripsikan informasi yang disampaikan dalam gambar yang relevan bagi pengadopsi dan yang tidak diduplikasi dalam teks di sekitarnya. Deskripsi yang lebih panjang, seperti alt="Fluffy, a tri-color terrier with very short hair, with a tennis ball in her mouth" sudah tepat. Teks halaman adopsi umumnya mencakup spesies, ras, usia, dan jenis kelamin hewan peliharaan yang dapat diadopsi, sehingga tidak perlu diulang dalam teks alternatif. Namun, biografi tertulis tersebut mungkin tidak mencakup panjang rambut, warna, atau preferensi mainan.

Yang penting, kami tidak mendeskripsikan gambar secara keseluruhan. Calon pemilik tidak perlu mengetahui apakah berada di dalam atau di luar ruangan, atau apakah tersebut memiliki kalung merah dan tali biru.

Saat menggunakan gambar untuk ikonografi, karena atribut alt memberikan nama yang dapat diakses, sampaikan makna ikon, bukan deskripsi gambar. Misalnya, atribut alt ikon kaca pembesar adalah search. Ikon yang terlihat seperti rumah memiliki home sebagai teks alternatif. Deskripsi ikon disket 5 inci adalah save. Jika ada dua ikon Fluffy yang digunakan untuk menunjukkan praktik terbaik dan anti-pola, yang tersenyum dengan baret hijau dapat memiliki alt="good" yang ditetapkan, sementara yang menggeram dengan baret merah mungkin membaca alt="bad". Namun, gunakan hanya ikonografi standar, dan jika Anda menggunakan ikon non-standar seperti Fluffy baik dan buruk, sertakan legenda untuk memastikan bahwa ikon bukan satu-satunya cara untuk menguraikan arti elemen UI Anda.

Jika gambar adalah screenshot atau grafik, tulis apa yang dipelajari dari gambar tersebut, bukan mendeskripsikan penampilannya. Meskipun gambar dapat menyampaikan seribu kata, deskripsi harus menyampaikan semua yang dipelajari secara ringkas.

Jangan sertakan informasi yang sudah diketahui pengguna dari konteks dan yang sudah diberitahukan dalam konten. Misalnya, jika Anda berada di halaman tutorial tentang mengubah setelan browser dan halaman tersebut membahas cara mengklik ikon di browser chrome, URL halaman dalam screenshot tidak penting. Batasi alt pada topik yang sedang dibahas: cara mengubah setelan.

alt mungkin adalah "Ikon setelan ada di menu navigasi di bawah kolom penelusuran." Jangan sertakan "screenshot" atau "machinelearningworkshop" karena pengguna tidak perlu tahu bahwa itu adalah screenshot dan tidak perlu tahu situs yang dibuka penulis teknis saat menulis petunjuk tersebut. Deskripsi gambar didasarkan pada konteks alasan gambar disertakan.

Jika screenshot menunjukkan cara menemukan nomor versi browser dengan membuka chrome://version/, sertakan URL dalam konten halaman sebagai petunjuk, dan berikan string kosong sebagai atribut alt karena gambar tidak memberikan informasi yang tidak ada dalam teks di sekitarnya.

Jika gambar tidak memberikan informasi tambahan atau hanya sebagai dekorasi, atribut tersebut tetap harus ada, hanya sebagai string kosong.

<img src="svg/magazine.svg" alt="" role="none" />

MachineLearningWorkshop.com memiliki tujuh gambar latar depan, sehingga tujuh gambar dengan atribut alt: sakelar lampu telur Paskah, ikon manual, dua foto biografi Hal dan Eve, serta tiga avatar blender, penyedot debu, dan pemanggang roti. Gambar latar depan yang terlihat seperti majalah adalah satu-satunya gambar yang hanya bersifat dekoratif. Halaman ini juga memiliki dua gambar latar. Gambar ini bersifat dekoratif dan ditambahkan dengan CSS, sehingga tidak dapat diakses.

Majalah yang hanya bersifat dekoratif memiliki atribut alt kosong, dan role none karena gambar adalah SVG yang hanya bersifat presentasi. Jika bermakna, gambar SVG harus menyertakan role="img".

<img src="svg/magazine.svg" alt="" role="none" />

Ada tiga ulasan di bagian bawah halaman, masing-masing dengan gambar poster. Biasanya, teks alt adalah nama orang yang ada di dalam gambar.

<img src="images/blender.svg" alt="Blendan Smooth" role="img" />

Sebaliknya, karena ini adalah halaman lelucon, Anda harus menyampaikan apa yang mungkin tidak terlihat oleh pengguna dengan penglihatan rendah agar mereka tidak melewatkan humornya. Kita menggunakan fungsi mesin asli sebagai alt, bukan menggunakan nama karakter:

<img src="images/blender.svg" alt="blender" role="img" />

Foto instruktur bukan hanya avatar: foto tersebut adalah gambar biografi dan oleh karena itu mendapatkan deskripsi yang lebih mendetail.

Jika ini adalah situs sungguhan, Anda akan memberikan deskripsi minimum tentang penampilan pengajar, sehingga calon siswa dapat mengenalinya saat memasuki ruang kelas.

<img src="svg/hal.svg" role="img"
  alt="Hal 9000; a camera lens containing a red dot that sometimes changes to yellow." />

Karena ini adalah situs lelucon, berikan informasi yang relevan dalam konteks lelucon:

<img src="svg/hal.svg" role="img"
  alt="Hal 9000, the sentient AI computer from 2001: a Space Odyssey depicted as a camera lens with a red dot that changes to yellow when hovered." />

Jika Anda membacakan halaman tersebut kepada teman melalui telepon, dia tidak akan peduli seperti apa bentuk titik merah itu. Dalam hal ini, histori referensi film penting.

Saat menulis teks deskriptif, pertimbangkan informasi apa yang disampaikan gambar yang penting dan relevan bagi pengguna, lalu sertakan informasi tersebut. Ingat, konten atribut alt untuk gambar berbeda-beda berdasarkan konteksnya. Semua informasi yang disampaikan dalam gambar yang dapat diakses oleh pengguna yang dapat melihat dan relevan dengan konteks adalah informasi yang perlu disampaikan; tidak lebih. Buat agar tetap singkat, tepat, dan berguna.

Atribut src dan alt adalah persyaratan minimum untuk gambar sematan. Ada beberapa atribut lain yang perlu kita bahas.

Gambar yang responsif

Ada banyak ukuran area pandang dan resolusi layar. Anda tidak ingin membuang-buang bandwidth pengguna seluler dengan menyajikan gambar yang cukup lebar untuk monitor layar besar, tetapi Anda mungkin ingin menyajikan gambar beresolusi lebih tinggi untuk perangkat kecil yang memiliki resolusi layar empat kali lipat dari resolusi normal. Ada beberapa cara untuk menayangkan gambar yang berbeda berdasarkan ukuran area tampilan dan resolusi layar.

<img> srcset atribut

Atribut srcset memungkinkan menyarankan beberapa file gambar, dengan browser memilih gambar mana yang akan diminta berdasarkan beberapa kueri media termasuk ukuran area pandang dan resolusi layar.

Dapat ada satu atribut srcset per elemen <img>, tetapi srcset tersebut dapat ditautkan ke beberapa gambar. Atribut srcset menerima daftar nilai yang dipisahkan koma, yang masing-masing berisi URL aset, diikuti dengan spasi, lalu deskriptor untuk opsi gambar tersebut. Jika deskriptor lebar digunakan, Anda juga harus menyertakan atribut sizes dengan kueri media atau ukuran sumber untuk setiap opsi srcset selain yang terakhir. Bagian Learn yang membahas gambar responsif dengan srcset dan sintaksis deskriptif layak dibaca.

Gambar srcset lebih diprioritaskan daripada gambar src jika ada kecocokan.

<picture> dan <source>

Metode lain untuk menyediakan beberapa resource dan memungkinkan browser merender aset yang paling sesuai adalah dengan elemen <picture>. Elemen <picture> adalah elemen penampung untuk beberapa opsi gambar yang tercantum dalam jumlah elemen <source> yang tidak terbatas dan satu elemen <img> yang diperlukan.

Atribut <source> mencakup srcset, sizes, media, width, dan height. Atribut srcset umum untuk img, source, dan link, tetapi umumnya diterapkan sedikit berbeda di sumber karena kueri media dapat dicantumkan di atribut media <srcset>. <source> juga mendukung format gambar yang ditentukan dalam atribut type.

Browser mempertimbangkan setiap elemen turunan <source> dan memilih kecocokan terbaik di antaranya. Jika tidak ada kecocokan, URL dari atribut src elemen <img> akan dipilih. Nama yang dapat diakses berasal dari atribut alt dari <img> bertingkat. Bagian Learn yang membahas elemen <picture> dan sintaksis preskriptif juga layak dibaca.

Fitur performa tambahan

Ada sejumlah fitur gambar tambahan yang dapat meningkatkan performa situs Anda.

Pemuatan lambat

Atribut loading memberi tahu browser yang mendukung JS cara memuat gambar. Nilai eager default berarti gambar dimuat segera setelah HTML diuraikan, meskipun gambar berada di luar area pandang yang terlihat. Dengan menyetel loading="lazy", pemuatan gambar ditunda hingga kemungkinan akan masuk ke area pandang. "Kemungkinan" ditentukan oleh browser berdasarkan jarak gambar dari area tampilan. Nilai ini diperbarui saat pengguna men-scroll. Pemuatan lambat membantu menghemat bandwidth dan CPU, sehingga meningkatkan performa bagi sebagian besar pengguna. Jika JavaScript dinonaktifkan, karena alasan keamanan, semua gambar secara default menggunakan eager.

<img src="switch.svg" alt="light switch" loading="lazy" />

Rasio aspek

Browser mulai merender HTML saat diterima, membuat permintaan untuk aset saat ditemukan. Artinya, browser sudah merender HTML saat menemukan tag <img> dan membuat permintaan. Gambar juga perlu waktu untuk dimuat. Secara default, browser tidak mencadangkan ruang untuk gambar selain ukuran yang diperlukan untuk merender teks alt.

Elemen <img> selalu mendukung atribut height dan width tanpa satuan. Properti ini tidak digunakan lagi dan digantikan dengan CSS. CSS dapat menentukan dimensi gambar, sering kali menetapkan satu dimensi seperti max-width: 100%; untuk memastikan rasio aspek dipertahankan.

Karena CSS biasanya disertakan dalam <head>, CSS diuraikan sebelum <img> ditemukan. Namun, tanpa mencantumkan height atau rasio aspek secara eksplisit, ruang yang dicadangkan adalah tinggi (atau lebar) teks alt.

Jika developer hanya mendeklarasikan lebar, penerimaan dan rendering gambar akan menyebabkan pergeseran tata letak kumulatif yang merusak web vitals. Untuk mengatasi masalah ini, browser mendukung rasio aspek gambar. Menyertakan atribut height dan width pada <img> berfungsi sebagai petunjuk ukuran, yang memberi tahu browser tentang rasio aspek, sehingga memungkinkan jumlah ruang yang tepat dicadangkan untuk rendering gambar pada akhirnya. Saat browser menemukan satu dimensi, seperti contoh 50% kita, browser akan menyimpan ruang untuk gambar yang sesuai dengan dimensi CSS dan dengan dimensi lainnya yang mempertahankan rasio aspek lebar terhadap tinggi.

<img src="switch.svg" alt="light switch" role="img" width="70" height="112" />

Gambar Anda responsif jika CSS disiapkan dengan benar agar gambar tersebut responsif. Ya, nilai height dan width tanpa satuan yang disertakan akan diganti dengan CSS. Tujuan menyertakan atribut ini adalah untuk memesan ruang dengan rasio aspek yang tepat, sehingga meningkatkan performa dengan mengurangi pergeseran tata letak. Halaman akan tetap memerlukan waktu pemuatan yang hampir sama, tetapi UI tidak akan melompat saat gambar ditampilkan ke layar.

Fitur gambar lainnya

Elemen <img> juga mendukung atribut crossorigin, decoding, referrerpolicy, dan, di browser berbasis Blink, fetchpriority. Jarang digunakan, jika gambar adalah bagian dari peta sisi server, sertakan atribut boolean ismap dan susun <img> dalam link untuk pengguna tanpa perangkat penunjuk.

Atribut ismap tidak diperlukan, atau bahkan tidak didukung, di <input type="image" name="imageSubmitName"> karena koordinat x dan y lokasi klik dikirim selama pengiriman formulir, dengan menambahkan nilai ke nama input, jika ada. Misalnya, sesuatu seperti &imageSubmitName.x=169&imageSubmitName.y=66 dikirimkan dengan formulir saat pengguna mengklik gambar, lalu mengirimkannya. Jika gambar tidak memiliki atribut name, x dan y akan dikirim: &x=169&y=66.

Periksa pemahaman Anda

Uji pengetahuan Anda tentang gambar.

Dua atribut apa yang harus selalu dimiliki gambar latar depan?

size
Coba lagi.
alt
Benar.
src
Benar.