Tengo muchas imágenes en una página, una galería. Quiero que las imágenes se mantengan nítidas, así que no escalo el navegador, uso las dimensiones originales de la imagen.
Sin embargo, esto solo funciona cuando el nivel de zoom del navegador es del 100%. Cuando aumento o disminuyo el nivel de zoom, disminuye la calidad de las imágenes.
Algunos clientes en realidad tienen diferentes niveles de zoom por defecto. Me preguntaba, ¿cómo puedes manejarlo y lo manejamos nosotros?
Aclamaciones
Respuestas:
Creo que la mayoría de las otras respuestas han perdido el punto: no se trata de anular las preferencias del usuario, se trata de dar imágenes de la mejor calidad en el escenario común del dispositivo de un usuario que asigna más de un píxel físico para cada píxel CSS, también conocido como " píxel de referencia "en su imagen, lo que hace que el navegador amplíe la imagen, haciéndola pixelada y granulada.
Mis soluciones sugeridas a continuación, pero primero aquí están las cuatro formas en que esto puede suceder:
width: 200px; height: 200px;
realmente se escalará esa imagen de 200 px por 200 px en más de 200 x 200 píxeles, lo que puede hacer que sea granulada.Cualquiera de estos resultará en el problema de John de una galería de imágenes que se ve sorprendentemente granulada.
Esperaba que alguien tuviera una gran solución a este problema, pero por ahora estas son mis opciones preferidas, comenzando con la más efectiva pero menos universalmente posible:
Si 1. y 2. no son posibles, pero es realmente importante y la calidad de la imagen es más importante que, por ejemplo, el tiempo de carga, simplemente duplique la imagen.
Esto es lo que Google hace con su logotipo en su página de inicio: aplastan una imagen PNG de 538 px x 190 px en un contenedor de 269 px x 95 px. También es más o menos lo mismo que el funcionamiento de las imágenes receptivas.
Esto solía considerarse una mala práctica porque las versiones antiguas de IE eran terribles para reducir las imágenes, pero ahora se usan muy raramente y son mucho menos comunes que las pantallas de alta densidad de píxeles. Todavía es algo indeseable, ya que aumentará el tamaño de la imagen y, por lo tanto, aumentará el tiempo de carga; eso es una compensación que debe juzgar caso por caso.
fuente
Como DA01 comentó, no debes hacer nada al respecto.
Zoom es una opción especificada por el usuario y, por lo tanto, está bajo su control. La configuración con la que deciden meterse no debería ser su responsabilidad.
Puede tener en cuenta diferentes navegadores y versiones y lo que no, pero en términos razonables no debe tener en cuenta el zoom de un usuario.
Claro que puede representar el 125% o el 150% (y es posible que ni siquiera tenga que hacerlo). ¿Pero 200%, 300%, más? Simplemente no tiene ningún sentido.
¿Qué sucede si el usuario usa el tema de Windows de alto contraste? ¿Qué pasa si usan constantemente la lupa? ¿A quien le importa?
Idealmente, su sitio web es lo suficientemente flexible como para no hacer una diferencia real entre la pequeña diferencia de zoom, pero las imágenes disminuirán en calidad con el zoom, pero esa no es su responsabilidad.
Por supuesto, esta es solo mi opinión, pero la compañía para la que trabajo también les dice explícitamente a los clientes que no admitimos sus preferencias de zoom.
fuente
Otras personas han dado algunos buenos consejos sobre los problemas que enfrentarás y no soy lo suficientemente bueno en esta área para hacer un buen tutorial, pero ...
Es posible que desee diseñar un sitio receptivo que se ajuste de acuerdo con la resolución / dispositivo del usuario y luego probablemente esté buscando un código que cambie las imágenes a archivos de resolución más alta o más baja cuando se solicite, en lugar de estirar y comprimir las imágenes que tiene.
La última vez que intenté hacer esto, utilicé media-query.js y picturefill.js. Ver: http://responsivedesign.is/resources/images/picture-fill . Tenía un diseño de 3 columnas donde algunas imágenes abarcarían dos columnas ... Cuando la ventana del navegador se hizo lo suficientemente pequeña, las imágenes grandes cambiarían a una versión de resolución más pequeña que solo tendría una columna de ancho. El navegador del usuario simplemente cargará la versión del archivo que necesita. (y en mi caso, el complemento de albañilería movería todo para acomodarlo).
Por supuesto, entonces su usuario debe tener javascript habilitado ...
fuente
No puede forzar la mano del usuario. La configuración de usuario no es tuya para jugar. La configuración y eludirlos es una mala idea, puede haber una razón por la cual el usuario hizo algo. En cualquier caso, no puede garantizar nada en los distintos dispositivos.
De hecho, si entras en el aspecto técnico, se vuelve aún más interesante. Realmente das las llaves del reino con tu página web. Vea que el usuario descarga la página web y ahora puede hacer lo que quiera con ella. No tiene control sobre esta capa, después de todo se ejecuta en la máquina de los usuarios y pueden hacer lo que quieran. Incluso stackexhange no se ve igual en mi computadora / móvil que en la suya. Modifico automáticamente algunos aspectos de la GUI para corregir 2 errores de representación y he agregado 2 accesos directos.
fuente
El comportamiento molesto de las imágenes de aumento de escala en las pantallas HiDPI, que conduce a fotos borrosas (también conocido como la pesadilla de los fotógrafos), también me ha preocupado durante bastante tiempo. También me preguntaba que no hay un atributo CSS simple para deshabilitar eso para las imágenes.
Mi solución actual con CSS se ve así:
El siguiente paso sería usar clases para definir y establecer diferentes tamaños de imagen si es necesario. No conozco una forma de obtener dinámicamente los tamaños de imagen. La función CSS attr () parece no funcionar para esto.
fuente
Entonces esto sería más una pregunta de programación. Pero usando JQuery, o incluso solo css plano, puede mostrar diferentes imágenes en función del ancho de pantalla de los usuarios, la altura de la pantalla, etc.
De nuevo, aunque probablemente este no sea el intercambio de pila para preguntar.
fuente
Simplemente puede hacer esto a través de HTML en la cabecera del sitio agregue esto
Los desarrolladores no recomiendan esto para cada tipo de sitio, pero debe cumplir con lo que está pidiendo.
fuente
Espero que ayude: transformación de regla css: escala en la etiqueta del cuerpo u otra - no es perfecta, mira aquí, por favor
/programming/23099849/stop-firefox-dpi-scaling-when-windows-setting-is-at-125/42755741#42755741
fuente