Ini adalah cara termudah untuk menggunakan sprite gambar, sekarang kami ingin mengembangkannya dengan menggunakan link dan efek hover
Image Sprite - Membuat Daftar Navigasi
Kami ingin menggunakan gambar sprite ["img_navsprite. gif"] untuk membuat daftar navigasi
Kami akan menggunakan daftar HTML, karena dapat berupa tautan dan juga mendukung gambar latar belakang
Contoh
#navlist {
posisi. terkait;
}
#navlist li {
batas. 0;
lapisan. 0;
daftar-gaya. tidak ada;
posisi. sangat;
atas. 0;
}
#navlist li, #navlist a {
tinggi. 44px;
menampilkan. blok;
}
#rumah {
kiri. 0px;
lebar. 46px;
Latar Belakang. url['img_navsprites. gif'] 0 0;
}
#prev {
kiri. 63px;
lebar. 43px;
Latar Belakang. url['img_navsprites. gif'] -47px 0;
}
#lanjut {
kiri. 129px;
lebar. 43px;
Latar Belakang. url['img_navsprites. gif'] -91px 0;
}
Contoh dijelaskan
- #navlist {posisi. relatif;} - posisi diatur ke relatif untuk memungkinkan pemosisian absolut di dalamnya
- #navlist li {margin. 0; bantalan. 0; gaya daftar. tidak ada; posisi. mutlak; atas. 0;} - margin dan padding disetel ke 0, gaya daftar dihapus, dan semua item daftar benar-benar diposisikan
- #navlist li, #navlist a {height. 44px;tampilan. blok;} - tinggi semua gambar adalah 44px
Sekarang mulailah mengatur posisi dan gaya untuk setiap bagian tertentu
- #rumah { kiri. 0px;lebar. 46px;} - Diposisikan sepenuhnya ke kiri, dan lebar gambar adalah 46px
- #rumah { latar belakang. url[img_navsprites. gif] 0 0;} - Menentukan gambar latar belakang dan posisinya [kiri 0px, atas 0px]
- #prev {kiri. 63px;lebar. 43px;} - Diposisikan 63px ke kanan [#home width 46px + beberapa ruang ekstra di antara item], dan lebarnya 43px
- #prev { latar belakang. url['img_navsprites. gif'] -47px 0;} - Mendefinisikan gambar latar belakang 47px ke kanan [#home width 46px + 1px line divider]
- #berikutnya {kiri. 129px;lebar. 43px;} - Diposisikan 129px ke kanan [mulai dari #prev adalah 63px + lebar #prev 43px + spasi ekstra], dan lebarnya adalah 43px
- #berikutnya { latar belakang. url['img_navsprites. gif'] -91px 0;} - Mendefinisikan gambar latar belakang 91px ke kanan [#home width 46px + 1px line divider + #prev width 43px + 1px line divider]
Sprite Gambar - Efek Arahkan
Sekarang kami ingin menambahkan efek hover ke daftar navigasi kami
tip. Pemilih :hover
dapat digunakan pada semua elemen, tidak hanya pada tautan
Gambar baru kita["img_navsprites_hover. gif"] berisi tiga gambar navigasi dan tiga gambar yang akan digunakan untuk efek hover
Karena ini adalah satu gambar tunggal, dan bukan enam file terpisah, tidak akan ada penundaan pemuatan saat pengguna mengarahkan kursor ke gambar
Dalam artikel ini, kita akan belajar tentang konsep gambar responsif — gambar yang bekerja dengan baik pada perangkat dengan ukuran layar, resolusi, dan fitur serupa lainnya yang sangat berbeda — dan melihat apa yang disediakan alat HTML untuk membantu mengimplementasikannya. Ini membantu meningkatkan kinerja di berbagai perangkat. Gambar responsif hanyalah salah satu bagian dari desain responsif, topik CSS mendatang untuk Anda pelajari
Prasyarat. Anda seharusnya sudah mengetahui dasar-dasar HTML dan cara menambahkan gambar statis ke halaman web. sasaran. Pelajari cara menggunakan fitur seperti dan elemen
untuk menerapkan solusi gambar responsif di situs webMari kita periksa skenario tipikal. Situs web tipikal mungkin berisi gambar header dan beberapa gambar konten di bawah header. Gambar header kemungkinan akan menjangkau seluruh lebar header, dan gambar konten akan pas di suatu tempat di dalam kolom konten. Ini contoh sederhana
Ini bekerja dengan baik pada perangkat layar lebar, seperti laptop atau desktop [Anda dapat melihat contohnya secara langsung dan menemukan kode sumbernya di GitHub. ] Kami tidak akan banyak membahas CSS dalam pelajaran ini, kecuali untuk mengatakan itu
- Konten isi telah disetel ke lebar maksimum 1200 piksel — pada area pandang di atas lebar tersebut, isi tetap pada 1200px dan memusatkan dirinya sendiri di ruang yang tersedia. Pada area pandang di bawah lebar tersebut, isi akan tetap 100% dari lebar area pandang
- Gambar header telah diatur sehingga bagian tengahnya selalu berada di tengah header, berapa pun lebar judulnya. Jika situs dilihat pada layar yang lebih sempit, detail penting di tengah gambar [orang] masih dapat dilihat, dan kelebihannya hilang dari kedua sisi. Tingginya 200px
- Gambar konten telah diatur sehingga jika elemen tubuh menjadi lebih kecil dari gambar, gambar mulai menyusut sehingga selalu berada di dalam tubuh, bukannya meluap.
Namun, masalah muncul saat Anda mulai melihat situs di perangkat layar sempit. Header di bawah terlihat OK, tetapi mulai memakan banyak ketinggian layar untuk perangkat seluler. Dan pada ukuran ini, sulit untuk melihat wajah dua orang dalam gambar konten pertama
Perbaikan akan menampilkan versi gambar yang dipotong yang menampilkan detail penting dari gambar saat situs dilihat di layar sempit. Gambar yang dipangkas kedua dapat ditampilkan untuk perangkat layar berukuran sedang, seperti tablet. Masalah umum di mana Anda ingin menyajikan gambar yang dipangkas berbeda dengan cara itu, untuk berbagai tata letak, umumnya dikenal sebagai masalah arah seni
Selain itu, tidak perlu menyematkan gambar sebesar itu di halaman jika sedang dilihat di layar ponsel. Melakukannya dapat membuang bandwidth; . Sebaliknya, gambar raster kecil mulai terlihat berbintik saat ditampilkan lebih besar dari ukuran aslinya [gambar raster memiliki lebar sejumlah piksel dan tinggi sejumlah piksel, seperti yang kita lihat saat melihat grafik vektor]. Idealnya, beberapa resolusi akan tersedia untuk browser web pengguna. Browser kemudian dapat menentukan resolusi optimal untuk dimuat berdasarkan ukuran layar perangkat pengguna. Ini disebut masalah pengalihan resolusi
Untuk membuat segalanya lebih rumit, beberapa perangkat memiliki layar beresolusi tinggi yang membutuhkan gambar lebih besar dari yang Anda harapkan untuk ditampilkan dengan baik. Ini pada dasarnya adalah masalah yang sama, tetapi dalam konteks yang sedikit berbeda
Anda mungkin berpikir bahwa gambar vektor akan menyelesaikan masalah ini, dan mereka melakukannya sampai tingkat tertentu — ukurannya kecil dalam ukuran file dan skalanya bagus, dan Anda harus menggunakannya sedapat mungkin. Namun, mereka tidak cocok untuk semua jenis gambar. Gambar vektor sangat bagus untuk grafik sederhana, pola, elemen antarmuka, dll. , tetapi mulai menjadi sangat rumit untuk membuat gambar berbasis vektor dengan jenis detail yang akan Anda temukan di, katakanlah, sebuah foto. Format gambar raster seperti JPEG lebih cocok untuk jenis gambar yang kita lihat pada contoh di atas
Masalah seperti ini tidak ada saat web pertama kali ada, di awal hingga pertengahan 90-an — saat itu satu-satunya perangkat yang ada untuk menjelajah Web adalah desktop dan laptop, sehingga teknisi browser dan penulis spesifikasi bahkan tidak berpikir untuk mengimplementasikannya solusi. Teknologi gambar responsif diterapkan baru-baru ini untuk memecahkan masalah yang ditunjukkan di atas dengan membiarkan Anda menawarkan beberapa file gambar ke browser, semuanya menampilkan hal yang sama tetapi berisi jumlah piksel yang berbeda [pengalihan resolusi], atau gambar berbeda yang cocok untuk alokasi ruang yang berbeda [art direction ]
catatan. Fitur baru yang dibahas dalam artikel ini — //
— semuanya didukung di browser desktop dan seluler modern [termasuk browser Microsoft's Edge, meskipun bukan Internet Explorer. ]Di bagian ini, kita akan melihat dua masalah yang diilustrasikan di atas dan menunjukkan cara menyelesaikannya menggunakan fitur gambar responsif HTML. Anda harus mencatat bahwa kami akan berfokus pada
2 elemen untuk bagian ini, seperti yang terlihat di area konten contoh di atas — gambar di header situs hanya untuk dekorasi, dan oleh karena itu diimplementasikan menggunakan gambar latar CSS. CSS bisa dibilang memiliki alat yang lebih baik untuk desain responsif daripada HTML, dan kita akan membicarakannya di modul CSS mendatangJadi, apa masalah yang ingin kita selesaikan dengan peralihan resolusi? . Elemen
_2 standar biasanya hanya memungkinkan Anda mengarahkan browser ke satu file sumber
Namun kami dapat menggunakan dua atribut — dan — untuk menyediakan beberapa gambar sumber tambahan beserta petunjuk untuk membantu browser memilih yang tepat. Anda dapat melihat contohnya di responsive kami. html contoh di GitHub [lihat juga kode sumber]
Atribut srcset
dan
0 terlihat rumit, tetapi tidak terlalu sulit untuk dipahami jika Anda memformatnya seperti yang ditunjukkan di atas, dengan bagian berbeda dari nilai atribut di setiap baris. Setiap nilai berisi daftar yang dipisahkan koma, dan setiap bagian dari daftar tersebut terdiri dari tiga sub-bagian. Mari kita lihat isinya masing-masing sekarangsrcset
_ menentukan kumpulan gambar yang akan kami izinkan untuk dipilih oleh browser, dan berapa ukuran setiap gambar. Setiap set informasi gambar dipisahkan dari yang sebelumnya dengan koma. Untuk masing-masing, kami menulis
- Nama file gambar [
9] - sebuah ruang
- Lebar intrinsik gambar dalam piksel [
_0] — perhatikan bahwa ini menggunakan unit
1, bukan
2 seperti yang Anda harapkan. Ukuran intrinsik gambar adalah ukuran aslinya, yang dapat ditemukan dengan memeriksa file gambar di komputer Anda [misalnya, di Mac Anda dapat memilih gambar di Finder dan menekan Cmd + I untuk membuka layar info]
0 mendefinisikan serangkaian kondisi media [dan. g. lebar layar] dan menunjukkan ukuran gambar apa yang terbaik untuk dipilih, ketika kondisi media tertentu benar — ini adalah petunjuk yang telah kita bicarakan sebelumnya. Dalam hal ini, sebelum setiap koma kita menulis- Kondisi media [
_4] — Anda akan mempelajari lebih lanjut tentang hal ini di topik CSS, tetapi untuk saat ini anggap saja kondisi media menjelaskan kemungkinan status layar dapat berada. Dalam hal ini, kami mengatakan "ketika lebar viewport adalah 600 piksel atau kurang" - sebuah ruang
- Lebar slot yang akan diisi gambar bila kondisi media benar [
5]
catatan. Untuk lebar slot, daripada memberikan lebar absolut [misalnya,
_5], Anda dapat memberikan alternatif lebar relatif terhadap viewport [misalnya,
7] — tetapi bukan persentase. Anda mungkin memperhatikan bahwa lebar slot terakhir tidak memiliki kondisi media [ini adalah default yang dipilih jika tidak ada kondisi media yang benar]. Browser mengabaikan semuanya setelah kondisi pencocokan pertama, jadi berhati-hatilah saat Anda mengurutkan kondisi mediaJadi, dengan atribut-atribut ini, browser akan melakukannya
- Lihatlah lebar perangkatnya
- Cari tahu kondisi media mana dalam daftar
_0 yang pertama benar - Lihat ukuran slot yang diberikan untuk kueri media tersebut
- Muat gambar yang dirujuk dalam daftar
srcset
yang memiliki ukuran yang sama dengan slot atau, jika tidak ada, gambar pertama yang lebih besar dari ukuran slot yang dipilih
Dan itu saja. Pada titik ini, jika browser pendukung dengan lebar viewport 480px memuat halaman, kondisi media
img {
width: 320px;
}
0 akan benar, sehingga browser memilih slot
5.
9 akan dimuat, karena lebar bawaannya [
_0] paling dekat dengan ukuran slot. Gambar 800px adalah 128KB pada disk, sedangkan versi 480px hanya 63KB — penghematan 65KB. Sekarang, bayangkan jika ini adalah halaman yang memiliki banyak gambar. Menggunakan teknik ini dapat menghemat banyak bandwidth bagi pengguna selulercatatan. Saat menguji ini dengan browser desktop, jika browser gagal memuat gambar yang lebih sempit saat jendelanya diatur ke lebar tersempit, lihat apa area pandangnya [Anda dapat memperkirakannya dengan masuk ke konsol JavaScript browser dan ketik
img {
width: 320px;
}
_4]. Browser yang berbeda memiliki ukuran minimum yang memungkinkan Anda mengurangi lebar jendela, dan mereka mungkin lebih lebar dari yang Anda kira. Saat mengujinya dengan browser seluler, Anda dapat menggunakan alat seperti halaman img {
width: 320px;
}
5 Firefox untuk memeriksa halaman yang dimuat di ponsel menggunakan alat pengembang desktopUntuk melihat gambar mana yang dimuat, Anda dapat menggunakan tab Monitor Jaringan Firefox DevTools atau panel Jaringan Chrome DevTools. Untuk Chrome, Anda mungkin juga ingin menonaktifkan cache untuk mencegahnya mengambil gambar yang sudah diunduh
Browser lama yang tidak mendukung fitur ini akan mengabaikannya. Sebagai gantinya, browser tersebut akan melanjutkan dan memuat gambar yang direferensikan dalam atribut seperti biasa
catatan. Dalam
img {
width: 320px;
}
_7 dari contoh yang ditautkan di atas, Anda akan menemukan baris img {
width: 320px;
}
8. Ini memaksa browser seluler untuk mengadopsi lebar viewport sebenarnya untuk memuat halaman web [beberapa browser seluler berbohong tentang lebar viewport mereka, dan sebaliknya memuat halaman dengan lebar viewport yang lebih besar kemudian mengecilkan halaman yang dimuat, yang tidak terlalu membantu untuk gambar atau desain responsif ]Jika Anda mendukung beberapa resolusi tampilan, tetapi semua orang melihat gambar Anda pada ukuran dunia nyata yang sama di layar, Anda dapat mengizinkan browser untuk memilih gambar resolusi yang sesuai dengan menggunakan srcset
dengan deskriptor x dan tanpa
0 — agak lebih mudah sintaksis. Anda dapat menemukan contoh tampilannya di srcset-resolutions. html [lihat juga kode sumbernya]
_________limabelas_______
Dalam hal ini,
0 tidak diperlukan — browser menentukan resolusi tampilan yang ditampilkan, dan menyajikan gambar yang paling sesuai yang direferensikan dalam srcset
. Jadi, jika perangkat yang mengakses halaman memiliki tampilan standar/resolusi rendah, dengan satu piksel perangkat mewakili setiap piksel CSS, gambar
_3 akan dimuat [yang tersirat adalah 1x, jadi Anda tidak perlu menyertakannya. ] Jika perangkat memiliki resolusi tinggi dua piksel perangkat per piksel CSS atau lebih, gambar
4 akan dimuat. Gambar 640px adalah 93KB, sedangkan gambar 320px hanya 39KBSingkatnya, masalah arah seni melibatkan keinginan untuk mengubah gambar yang ditampilkan agar sesuai dengan ukuran tampilan gambar yang berbeda. Misalnya, halaman web menyertakan bidikan lanskap besar dengan orang di tengah saat dilihat di browser desktop. Saat dilihat di browser seluler, gambar yang sama menyusut, membuat orang di dalam gambar menjadi sangat kecil dan sulit dilihat. Mungkin akan lebih baik untuk menampilkan gambar potret yang lebih kecil di ponsel, yang memperbesar orang tersebut. Elemen memungkinkan kita menerapkan solusi seperti ini
Kembali ke asal kita non-responsif. html misalnya, kami memiliki gambar yang sangat membutuhkan arahan seni
Mari kita perbaiki ini, dengan . Seperti _
7 dan
_8, elemen
adalah pembungkus yang berisi beberapa elemen
0 yang menyediakan sumber berbeda untuk dipilih browser, diikuti oleh elemen
2 yang sangat penting. Kode di responsif. html sepertinya begitu
- Elemen
0 menyertakan atribut
_3 yang berisi kondisi media — seperti pada contoh _srcset
pertama, kondisi ini adalah pengujian yang menentukan gambar mana yang ditampilkan — gambar pertama yang mengembalikan true akan ditampilkan. Dalam hal ini, jika lebar viewport adalah 799px atau kurang, gambar elemen
0 pertama akan ditampilkan. Jika lebar viewport adalah 800px atau lebih, itu akan menjadi yang kedua - Atribut
srcset
_ berisi jalur ke gambar yang akan ditampilkan. Sama seperti yang kita lihat dengan
2 di atas,
_0 dapat menggunakan atributsrcset
dengan referensi beberapa gambar, serta atribut
0. Jadi, Anda dapat menawarkan banyak gambar melalui elemen, tetapi kemudian juga menawarkan beberapa resolusi dari masing-masing gambar. Secara realistis, Anda mungkin tidak ingin melakukan hal semacam ini terlalu sering
- Dalam semua kasus, Anda harus memberikan elemen
_2, dengan
_6 danimg { width: 320px; }
4, tepat sebelum
5, jika tidak, gambar tidak akan muncul. Ini memberikan kasus default yang akan diterapkan ketika tidak ada kondisi media yang benar [Anda sebenarnya dapat menghapus elemen
0 kedua dalam contoh ini], dan fallback untuk browser yang tidak mendukung elemen
Kode ini memungkinkan kita menampilkan gambar yang sesuai pada tampilan layar lebar dan layar sempit, seperti yang ditunjukkan di bawah ini
catatan. Anda harus menggunakan atribut
3 hanya dalam skenario art direction; Saat browser mulai memuat halaman, browser mulai mendownload [memuat sebelumnya] gambar apa pun sebelum parser utama mulai memuat dan menginterpretasikan CSS dan JavaScript halaman. Mekanisme itu berguna secara umum untuk mengurangi waktu muat halaman, tetapi tidak membantu untuk gambar yang responsif — oleh karena itu perlu menerapkan solusi seperti srcset
. Misalnya, Anda tidak dapat memuat elemen
2, lalu mendeteksi lebar viewport dengan JavaScript, lalu secara dinamis mengubah gambar sumber menjadi lebih kecil jika diinginkan. Saat itu, gambar asli sudah dimuat, dan Anda juga akan memuat gambar kecil, yang bahkan lebih buruk dalam hal gambar responsifFormat gambar baru seperti dan dapat mempertahankan ukuran file yang rendah dan kualitas tinggi pada saat yang bersamaan. Format ini sekarang memiliki dukungan browser yang relatif luas tetapi sedikit "kedalaman sejarah"
_ memungkinkan kami terus melayani browser lama. Anda dapat menyediakan jenis MIME di dalam atribut
srcset
4 sehingga browser dapat segera menolak jenis file yang tidak didukung
- Jangan gunakan atribut
3, kecuali jika Anda juga memerlukan arahan seni - Dalam elemen
0, Anda hanya dapat merujuk ke gambar dari jenis yang dinyatakan dalamsrcset
4 - Gunakan daftar yang dipisahkan koma dengan
srcset
dan
0, sesuai kebutuhan
Untuk pembelajaran aktif ini, kami mengharapkan Anda menjadi berani dan kebanyakan melakukannya sendiri. Kami ingin Anda menerapkan tangkapan layar sempit/lebar yang sesuai dengan seni yang sesuai menggunakan _______ 55 _______, dan contoh pengalihan resolusi yang menggunakan ________ 57 _______
- Tulis beberapa HTML sederhana untuk memuat kode Anda [gunakan
2 sebagai titik awal, jika Anda suka]
- Temukan gambar lanskap layar lebar yang bagus dengan semacam detail yang terkandung di dalamnya di suatu tempat. Buat versi seukuran web menggunakan editor grafis, lalu pangkas untuk menampilkan bagian yang lebih kecil yang memperbesar detail, dan buat gambar kedua [lebar sekitar 480px bagus untuk ini]
- Gunakan elemen
untuk menerapkan pengalih gambar arah seni
- Buat beberapa file gambar dengan ukuran berbeda, masing-masing menampilkan gambar yang sama
- Gunakan
srcset
/5 untuk membuat contoh pengalih resolusi, baik untuk menyajikan gambar ukuran yang sama pada resolusi yang berbeda, atau ukuran gambar yang berbeda pada lebar viewport yang berbeda
Itu adalah balutan untuk gambar responsif — kami harap Anda menikmati bermain dengan teknik baru ini. Sebagai rangkuman, ada dua masalah berbeda yang telah kita diskusikan di sini
- arah seni. Masalah saat Anda ingin menyajikan gambar yang dipangkas untuk tata letak yang berbeda — misalnya gambar lanskap yang menampilkan pemandangan penuh untuk tata letak desktop, dan gambar potret yang menampilkan subjek utama yang diperbesar untuk tata letak seluler. Anda dapat memecahkan masalah ini menggunakan elemen
- Pergantian resolusi. Masalah di mana Anda ingin menyajikan file gambar yang lebih kecil ke perangkat layar sempit, karena mereka tidak memerlukan gambar besar seperti tampilan desktop — dan untuk menyajikan gambar beresolusi berbeda ke layar kepadatan tinggi/kepadatan rendah. Anda dapat mengatasi masalah ini menggunakan grafik vektor [gambar SVG] dan dengan atribut
Ini juga menutup seluruh Multimedia dan modul embedding. Satu-satunya hal yang harus dilakukan sekarang sebelum melanjutkan adalah mencoba penilaian Multimedia dan penyematan kami, dan lihat bagaimana hasilnya. selamat bersenang-senang