Este es uno que no he tenido que abordar antes. Necesito usar etiquetas alt en todas las imágenes de un sitio, incluidas las utilizadas por el atributo de imagen de fondo de CSS.
Hasta donde yo sé, no existe una propiedad CSS como esta, entonces, ¿cuál es la mejor manera de hacer esto, por favor?
title
atributo a los elementos con las imágenes de fondo, pero eso no tiene sentido para todos los elementos. ¿Por qué necesitas hacer esto? ¿Está tratando de manejar imágenes que no se cargan o está tratando de tener información sobre herramientas sobre las que sí lo hacen?<div>
incluso si no valida, todavía tiene el término clave y Google lo ama.Respuestas:
¡Seguro que las imágenes de fondo pueden presentar datos! De hecho, esto se recomienda a menudo cuando la presentación de iconos visuales es más compacta y fácil de usar que una lista equivalente de borrones de texto. Cualquier uso de sprites de imágenes puede beneficiarse de este enfoque.
Es bastante común que los iconos de las listas de hoteles muestren servicios. Imagine una página que enumera 50 hoteles y cada hotel tiene 10 servicios. Un CSS Sprite sería perfecto para este tipo de cosas: mejor experiencia de usuario porque es más rápido. Pero, ¿cómo se implementan las etiquetas ALT para estas imágenes? Sitio de ejemplo .
La respuesta es que no usan
alt
texto en absoluto, sino que usan eltitle
atributo en el div contenedor.HTML
CSS
De acuerdo con el W3C (ver enlaces arriba), el atributo de título tiene el mismo propósito que el atributo alt.
Título
alt
fuente
En este artículo de Yahoo Developer Network ( enlace archivado ) se sugiere que si es absolutamente necesario utilizar una imagen de fondo en lugar del elemento img y el atributo alt, utilice los atributos ARIA de la siguiente manera:
El caso de uso en el artículo describe cómo Flickr eligió usar imágenes de fondo porque el rendimiento mejoró enormemente en los dispositivos móviles.
fuente
Creo que deberías leer esta publicación de Christian Heilmann. Explica que las imágenes de fondo son SÓLO por motivos estéticos y no deben usarse para presentar datos y, por lo tanto, están exentas de la regla de que todas las imágenes deben tener texto alternativo.
Extracto (el énfasis es mío):
Estoy de acuerdo con él.
fuente
background-size
ybackground-position
con una<img>
etiqueta normal ? Esto hace que el posicionamiento de las imágenes de fondo sea bastante flexible, por ejemplo, en un espacio de héroe receptivo, donde la imagen probablemente contiene un mensaje de importancia crítica.Como se mencionó en otras respuestas, no hay un atributo alt (admitido) para una etiqueta div solo para la etiqueta img.
La verdadera pregunta es ¿por qué necesita agregar el atributo alt a todas las imágenes de fondo del sitio? Según esta respuesta, le ayudará a determinar qué ruta tomar en su aproximación.
Visual / Textual: si simplemente está intentando agregar un respaldo textual para el usuario si la imagen no se carga, simplemente use el atributo title. La mayoría de los navegadores proporcionarán una sugerencia visual sobre herramientas (cuadro de mensaje) cuando un usuario se desplaza sobre la imagen, y si la imagen no se carga por cualquier motivo, se comporta de la misma manera que un atributo alt que presenta texto cuando la imagen falla. Esta técnica aún permite que el sitio acelere los tiempos de carga manteniendo las imágenes configuradas como fondos.
Lectores de pantalla: la opción intermedia, esto varía porque técnicamente mantener sus imágenes como fondos y usar el enfoque de atributo de título debería funcionar como se indicó anteriormente, "Los agentes de usuario de audio pueden decir la información del título en un contexto similar". Sin embargo, esto no está garantizado para funcionar en todos los casos, incluso algunos lectores pueden ignorarlo por completo. Si termina optando por este enfoque, también puede intentar agregar etiquetas aria para ayudar a garantizar que los lectores de pantalla las capten.
SEO / Motores de búsqueda: Aquí está el más grande, si eras como yo, agregaste tus imágenes de fondo, todo estuvo bien. Luego, meses después, el cliente (o tal vez usted mismo) se dio cuenta de que se está perdiendo algo de oro de SEO de primera al no tener alt para sus imágenes. Tenga en cuenta que el atributo de título no tiene ningún peso en los motores de búsqueda. , según mi investigación y como se menciona en un artículo aquí: https://www.searchenginejournal.com/how-to-use-link-title-attribute-correctly /. Entonces, si su objetivo es SEO, deberá tener una etiqueta img con el atributo alt. Un enfoque posible es simplemente cargar imágenes reales muy pequeñas en el sitio con atributos alt, de esta manera obtendrá todo el SEO y no tendrá que reajustar el CSS existente en su lugar. Sin embargo, esto puede llevar a un tiempo de carga adicional dependiendo del tamaño y Google sí mira la ruta de las imágenes al indexar. En resumen, si va por esta ruta, simplemente acepte lo que debe hacerse e incluya las imágenes reales en lugar de usar fondos.
fuente
La creencia general es que no debería usar imágenes de fondo para cosas con un valor semántico significativo, por lo que realmente no existe una forma adecuada de almacenar datos alternativos con esas imágenes. La pregunta importante es ¿qué vas a hacer con esos datos alternativos? ¿Quieres que se muestre si las imágenes no se cargan? ¿Lo necesita para alguna función programática en la página? Puede almacenar los datos arbitrariamente utilizando propiedades CSS inventadas que no tienen significado (¿podrían causar errores?) O agregando imágenes ocultas que tienen la imagen y la etiqueta alt, y luego, cuando necesite una imagen de fondo alt, puede comparar la imagen rutas y luego maneje los datos como quiera usando algún script personalizado para simular lo que necesita.Sin embargo, no conozco ninguna forma de hacer que el navegador maneje automáticamente algún tipo de atributo alt para las imágenes de fondo.
fuente
La forma clásica de lograr esto es poner el texto en el div y usar una técnica de reemplazo de imágenes.
con background-image siendo la clase donde asigna la imagen de fondo y podría ser la clase de reemplazo de imagen HTML5boilerplates, a continuación:
fuente
Este artículo de W3C le dice lo que creen que debe hacer https://www.w3.org/WAI/GL/wiki/ARIATechnique_usingImgRole_with_aria-label_forCSS-backgroundImage
y tiene ejemplos aquí http://mars.dequecloud.com/demo/ImgRole.htm
dentro de los cuales
Aún así, si, como en el ejemplo anterior, el elemento que contiene la imagen de fondo es solo un contenedor vacío, personalmente prefiero poner el texto allí y ocultarlo usando CSS; justo donde muestra la imagen en su lugar:
fuente
Aquí está mi solución a este tipo de problema:
Cree una nueva clase en CSS y colóquela fuera de la pantalla. Luego, coloque su texto alternativo en HTML justo antes de la propiedad que llama a su imagen de fondo. Puede ser cualquier etiqueta,
H1
,H2
,p
, etc.CSS
HTML
fuente
No tengo claro lo que quieres.
Si desea que una propiedad de CSS represente el valor del atributo alt, entonces quizás esté buscando la función de atributo de CSS, por ejemplo:
Si desea poner el atributo alt en una imagen de fondo, entonces ... eso es extraño porque el atributo alt es un atributo HTML mientras que la imagen de fondo es una propiedad CSS. Si desea utilizar el atributo alt de HTML, creo que necesitará un elemento HTML correspondiente para colocarlo.
¿Por qué "necesita usar etiquetas alt en las imágenes de fondo": es esto por una razón semántica o por alguna razón de efecto visual (y si es así, entonces qué efecto o qué razón)?
fuente
Puede lograr esto colocando la
alt
etiqueta en el lugar dondediv
aparecerá su imagen.Ejemplo:
fuente
alt
atributo a un<div>
alt
atributosdiv
!!