2011-04-07 11 views
9

que he visto en algunos sitios que se pueden incluir imágenes en CSS utilizando una palabra clave "datos":CSS usando "data:"

.stuff { 
    background: transparent url(data:image/gif;base64,SOMEWEIRDCODEHERE) repeat center top; 
} 

el código extraño se parece a una cadena base64 como ecoded :

R0lGODlhMwAxAIAAAAAAAP /// yH5BAAAAAAALAAAAAAzADEAAAK8jI + pBr0PowytzotTtbm/DTqQ6C3hGX ElcraA9jIr66ozVpM3nseUvYP1UEHF0FUUHkNJxhLZfEJNvol06tzwrgd LbXsFZYmSMPnHLB + zNJFbq15 + SOf50 + 6rG7lKOjwV1ibGdhHYRVYVJ9Wn k2HWtLdIW MSH9lfyODZoZTb4xdnpxQSEF9oyOWIqp6gaI9pI1Qo7BijbF ZkoaAtEeiiLeKn72xM7vMZofJy8zJys2UxsCT3kO229LH1tXAAAOw ==

ven muy bien: D

Me preguntaba cómo puedo incluir un archivo GIF transparente de 1x1 píxeles como este? ¿Alguien sabe el código de datos para tal imagen?

¿Es una buena idea hacer esto para imágenes pequeñas y muy comunes? ¿Todos los navegadores admiten esto?

+1

A menos que haya algo de lo que no tenga conocimiento, no hay ninguna razón para usar un espaciador gif como imagen de fondo de CSS. –

+0

Hola Ben. Estoy tratando de hacer que los números de línea aquí no se puedan seleccionar: http://jsfiddle.net/rVwqR/ – Alex

+0

Solo evite la selección de esta manera a través de CSS; no se necesita ninguna imagen de fondo: http://stackoverflow.com/questions/826782/css-rule-to-disable-text-selection-highlighting/4407335#4407335 –

Respuesta

15

Eso se llama la The data URI scheme

uso del URI datos cocina para convertir casi cualquier cosa a los datos de URI. Enlace: http://software.hixie.ch/utilities/cgi/data/data

+0

He intentado convertir una imagen y me aparece una página en blanco – Alex

+0

@Alex: Sí, eso es porque la imagen es transparente, ¿no? De cualquier manera, una vez que conviertas, copia la url en la barra de direcciones. Debería comenzar con 'datos'. – Shaz

+0

ah veo ahora, pero el código generado es enorme: http: // jsfiddle.net/rSzfd /: x – Alex

13
data:image/gif;base64,R0lGODlhAQABAPAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw== 

No hay nada malo con hacer esto, se ahorra un HTTP de ida y vuelta. El único inconveniente es que no funciona en las versiones antiguas de IE (Internet Explorer 8, creo, comenzó a apoyarlo)

+0

muestra un fondo blanco. ¿cómo puedo hacerlo transparente? – Alex

+0

Lo siento, lo actualicé. –

+0

gracias, eso funciona. – dsomnus

5

este es un GIF transparente de un píxel

background-image: url(data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==); 
2

en función de los navegadores que necesita para apoyar usted podría ser mejor usar rgba(). Sé que esta pregunta es un poco vieja.

body { 
    background-color: rgba(0, 0, 0, .5); 
}