Con el nuevo Apple MacBook Pro con pantalla retina, si proporciona una imagen "estándar" en su sitio web, será un poco confusa. Entonces tienes que proporcionar una imagen de retina.
¿Hay alguna forma de cambiar automáticamente a @2x
imágenes, como lo hace iOS (con Objective-C)? Lo que encontré es: CSS para imágenes de alta resolución en pantallas móviles y retina , pero me gustaría poder encontrar un proceso automático para todas mis imágenes, sin CSS o JavaScript .
¿Es posible?
ACTUALIZACIÓN
Destacaría este interesante artículo sugerido por @Paul D. Waite y una interesante discusión al respecto enlazada por Sebastian .
html
image
retina-display
jan267
fuente
fuente
Respuestas:
Hay un nuevo atributo para la etiqueta img que le permite agregar un atributo retina src, llamado srcset. No se necesita javascript o CSS, no hay doble carga de imágenes.
<img src="low-res.jpg" srcset="high-res.jpg 2x">
Soporte del navegador: http://caniuse.com/#search=srcset
Otros recursos:
fuente
src
por lo que IE / Opera siempre solicitará la versión de DPI más alta.Existen diferentes soluciones, cada una con sus pros y sus contras. Cuál es el mejor para usted depende de varios factores, como el diseño de su sitio web, el tipo de tecnología que utilizan sus visitantes habituales, etc. Tenga en cuenta que las pantallas Retina no se limitan al Macbook Pro Retina y los próximos iMacs, sino que también incluyen dispositivos móviles, que pueden tener sus propias necesidades.
El problema también está estrechamente relacionado con las imágenes en diseños receptivos en general. De hecho, probablemente sea mejor utilizar técnicas genéricas de diseño receptivo, en lugar de diseñar para dispositivos específicos. Después de todo, la tecnología también seguirá cambiando todo el tiempo en el futuro.
Algunas de las soluciones / discusiones que noté:
<picture>
etiqueta puede convertirse en una solución respaldada por un grupo de trabajo del W3C e incluso por Apple.Como muestran las otras respuestas, hay incluso más técnicas, pero probablemente aún no haya mejores prácticas.
Una cosa que me pregunto es cómo probar y depurar algunas de estas técnicas, sin tener los respectivos dispositivos disponibles ...
fuente
Como nadie ha mencionado lo obvio todavía, lo dejaré flotar: cuando sea posible, solo use SVG. Aparecen en hermosas resoluciones de retina sin ningún esfuerzo.
El soporte es bueno, ya que IE8 es el principal dinosaurio del que preocuparse. Los tamaños de archivos comprimidos con Gzip suelen ser mejores que los formatos de mapa de bits (png / jpg) y las imágenes son más flexibles; puede reutilizarlos en diferentes resoluciones y cambiarles el estilo si es necesario, lo que ahorra tiempo de desarrollo y ancho de banda de descarga.
fuente
svg
es con los navegadores más antiguos.Aquí está la mezcla menos que uso para lograr esto para las imágenes de fondo. retina.js no funciona para imágenes de fondo si está usando dotLess, ya que requiere su propio mixin, que a su vez usa la evaluación de script que no es compatible con dotLess.
El truco con todo esto es obtener soporte para IE8. No puede hacer fácilmente el tamaño de fondo, por lo que el caso base (consulta de medios no móviles) tiene que ser un icono simple sin escala. La consulta de medios luego maneja el caso de retina y es libre de usar la clase de tamaño de fondo, ya que retina nunca se usará en IE8.
Muestra de uso:
Esto requiere que tenga dos archivos:
start_grey-97_12.png
[email protected]
Donde el
2x
archivo es de doble resolución para retina.fuente
Simplemente proporcione imágenes de retina a todos y reduzca la imagen a la mitad de su tamaño nativo dentro del elemento de imagen. Digamos que su imagen es
400px
ancha y alta, solo especifique el ancho de la imagen200px
para que se vea nítida así:Si su imagen es fotográfica, probablemente pueda aumentar la compresión JPG sin que se vea peor, porque los artefactos de compresión JPG probablemente no serán visibles cuando se muestre la imagen en
2x
: consulte http://blog.netvlies.nl/ design-interactie / retina-revolution /fuente
si sus imágenes de fondo, una forma sencilla de hacer esto es:
otra forma sencilla es utilizar este método:
Simplemente reemplace:
con
fuente
Encontré esta forma interesante de proporcionar imágenes de resolución múltiple.
En realidad, usa CSS, algo que quería evitar, y solo funciona en Safari y Chrome.
Estoy hablando
image-set
.Aquí hay un ejemplo , proporcionado por Apple ( aquí ):
Quiero compartir también estos dos enlaces:
image-set()
notación @ W3Cfuente
Con JSF, puede crear una etiqueta Facelets personalizada para evitar la molestia de tener que agregar
srcset
a cada imagen.En tu
taglib.xml
podrías tener algo como:Y su etiqueta podría verse así:
Que podría usarse como:
Y rendirá:
fuente
Este problema es especialmente complicado con sitios receptivos donde una imagen puede tener un ancho variable dependiendo del tamaño del navegador. Además, cuando se trata de un CMS en el que varios editores están cargando potencialmente miles de imágenes, me parece poco realista pedirle a la gente que cargue imágenes especialmente comprimidas.
Así que escribí una secuencia de comandos que tiene esto en cuenta, se activa en la parte inferior de la página y al finalizar el cambio de tamaño. Cada vez teniendo en cuenta la densidad de píxeles y el tamaño que ocupa la imagen.
http://caracaldigital.com/retina-handling-code/
fuente
Si no se siente frustrado por el miedo a usar java-script, aquí hay un buen artículo http://www.highrobotics.com/articles/web/ready-for-retina.aspx . Tiene una solución muy sencilla.
Y el ejemplo en JSFiddle vale más que mil palabras.
Utilizando:
JS:
fuente