Dengan Apple MacBook Pro baru dengan tampilan retina, jika Anda memberikan gambar "standar" di situs web Anda, itu akan sedikit kabur. Jadi Anda harus memberikan gambar retina.
Apakah ada cara untuk secara otomatis beralih ke @2x
gambar, seperti yang dilakukan iOS (dengan Objective-C)? Apa yang saya temukan adalah: CSS untuk gambar beresolusi tinggi pada tampilan seluler dan retina , tetapi saya berharap saya dapat menemukan proses otomatis untuk semua gambar saya, tanpa CSS atau JavaScript .
Apa itu mungkin?
UPDATE
Saya akan menekankan artikel menarik yang disarankan oleh @Paul D. Waite dan diskusi menarik tentangnya yang ditautkan oleh Sebastian .
html
image
retina-display
jan267
sumber
sumber
Jawaban:
Terdapat atribut baru untuk tag img yang memungkinkan Anda menambahkan atribut retina src, yaitu srcset. Tidak perlu javascript atau CSS, tidak perlu memuat gambar ganda.
<img src="low-res.jpg" srcset="high-res.jpg 2x">
Dukungan Browser: http://caniuse.com/#search=srcset
Sumber Daya Lainnya:
sumber
src
sehingga IE / Opera akan selalu meminta versi DPI yang lebih tinggi.Ada solusi yang berbeda, masing-masing dengan pro dan kontranya sendiri. Mana yang terbaik untuk Anda bergantung pada berbagai faktor, seperti bagaimana situs web Anda dirancang, jenis teknologi apa yang digunakan pengunjung biasa, dll. Perhatikan bahwa tampilan retina tidak terbatas pada Macbook Pro Retina dan iMac yang akan datang, tetapi juga mencakup perangkat seluler, yang mungkin memiliki kebutuhannya sendiri.
Masalah tersebut juga terkait erat dengan gambar pada desain responsif pada umumnya. Faktanya, mungkin yang terbaik adalah menggunakan teknik desain responsif umum, daripada mendesain untuk perangkat tertentu. Bagaimanapun, teknologi akan terus berubah sepanjang waktu juga di masa depan.
Beberapa solusi / diskusi yang saya catat:
<picture>
tag tersebut dapat menjadi solusi yang didukung oleh kelompok kerja W3C dan bahkan Apple.Seperti yang ditunjukkan oleh jawaban lain, ada lebih banyak teknik - tetapi mungkin belum ada praktik terbaik.
Satu hal yang saya ingin tahu adalah bagaimana menguji dan men-debug beberapa teknik ini, tanpa memiliki perangkat masing-masing yang tersedia ...
sumber
Karena belum ada yang menyebutkan yang sudah jelas, saya akan menampilkannya: jika memungkinkan, gunakan saja SVG. Mereka muncul pada resolusi retina yang indah tanpa usaha apapun.
Dukungan untuk itu bagus dengan IE8 menjadi dinosaurus utama yang perlu dikhawatirkan. Ukuran file Gzip seringkali lebih baik daripada format bitmap (png / jpg) dan gambarnya lebih fleksibel; Anda dapat menggunakannya kembali pada resolusi yang berbeda dan mengubah gaya mereka jika perlu, yang menghemat waktu pengembangan dan bandwidth unduhan.
sumber
svg
adalah dengan browser lama.Berikut adalah lebih sedikit mixin yang saya gunakan untuk mendapatkan gambar latar belakang ini. retina.js tidak berfungsi untuk gambar latar belakang jika Anda menggunakan dotLess, karena memerlukan mixin sendiri yang menggunakan evaluasi skrip yang tidak didukung di dotLess.
Trik dengan semua ini adalah untuk mendapatkan dukungan IE8. Itu tidak dapat dengan mudah melakukan ukuran latar belakang sehingga kasus dasar (kueri media non seluler) harus berupa ikon sederhana dan tidak berskala. Kueri media kemudian menangani kasus retina dan bebas menggunakan kelas ukuran latar belakang karena retina tidak akan pernah digunakan di IE8.
Contoh penggunaan:
Ini mengharuskan Anda memiliki dua file:
start_grey-97_12.png
[email protected]
Dimana
2x
file tersebut beresolusi ganda untuk retina.sumber
Cukup berikan gambar retina kepada semua orang, dan perkecil gambar hingga setengah dari ukuran aslinya di dalam elemen gambar. Misalnya, gambar Anda
400px
lebar dan tinggi - cukup tentukan lebar gambar200px
agar terlihat tajam seperti ini:Jika gambar Anda adalah foto, Anda mungkin dapat meningkatkan kompresi JPG tanpa membuatnya terlihat lebih buruk, karena artefak kompresi JPG mungkin tidak akan terlihat saat gambar ditampilkan di
2x
: lihat http://blog.netvlies.nl/ desain-interactie / retina-revolusi /sumber
jika gambar latar belakangnya, cara sederhana untuk melakukan ini adalah:
cara sederhana lainnya adalah dengan menggunakan metode ini:
Ganti saja:
dengan
sumber
Saya telah menemukan cara menarik ini untuk menyediakan gambar dengan banyak resolusi.
Ini sebenarnya menggunakan CSS, sesuatu yang ingin saya hindari, dan hanya berfungsi di Safari dan Chrome.
Saya bicarakan
image-set
.Berikut contohnya , disediakan oleh Apple (di sini ):
Saya ingin membagikan juga dua tautan ini:
image-set()
notasi @ W3Csumber
Dengan JSF Anda dapat membuat tag Faselet khusus untuk menghemat keharusan menambahkan
srcset
ke setiap gambar.Dalam diri Anda,
taglib.xml
Anda bisa memiliki sesuatu seperti:Dan tag Anda akan terlihat seperti ini:
Yang bisa digunakan seperti:
Dan akan membuat:
sumber
Masalah ini sangat rumit dengan situs responsif di mana dan gambar dapat memiliki lebar yang bervariasi bergantung pada ukuran browser. Juga ketika berurusan dengan CMS di mana beberapa editor berpotensi mengunggah 1000 gambar, bagi saya sepertinya tidak realistis bagi saya untuk meminta orang mengunggah gambar yang dikompresi secara khusus.
Jadi saya menulis skrip yang memperhitungkan hal ini, itu diaktifkan di bagian bawah halaman dan pada pengubahan ukuran selesai. Setiap kali memperhitungkan kerapatan piksel dan ukuran gambar yang ditempati.
http://caracaldigital.com/retina-handling-code/
sumber
Jika Anda tidak frustasi karena takut menggunakan java-script maka berikut adalah artikel bagus http://www.highrobotics.com/articles/web/ready-for-retina.aspx . Ini memiliki solusi yang sangat sederhana.
Dan contohnya di JSFiddle bernilai ribuan kata.
Menggunakan:
JS:
sumber