El qué, por qué y cómo de los URI de datos en el diseño web

Veamos cómo mejorar el rendimiento de su sitio reduciendo la cantidad de solicitudes HTTP que realiza. Vamos a aprovechar una técnica conocida como el esquema URI de datos; codificar tanto imágenes como fuentes en cadenas de datos puros que se pueden integrar directamente en su marca y hojas de estilo.

Miniatura: Los íconos de Broccolidryiconsaniconseticfullof ... de Visual Idiot (usaremos estos íconos en un minuto ...)


A medida que las conexiones a Internet se hacían más rápidas y las computadoras más potentes, el rendimiento del sitio web solía ser una de las mejores prácticas a menudo pasadas por alto. Hoy, garantizar que su sitio web tenga un buen desempeño es absolutamente vital para mantener felices tanto a sus usuarios como a los motores de búsqueda; especialmente cuando se accede al sitio utilizando datos móviles y teléfonos con poca potencia y otros dispositivos.


El qué, por qué y cómo de los URI de datos

Ya hemos examinado CSS Sprite Sheets: Mejores prácticas, herramientas y aplicaciones útiles en Webdesigntuts +, demostrando cómo puede mejorar el rendimiento al reducir las solicitudes HTTP y al reducir el tamaño general del archivo de imagen. Pero, ¿sabía que puede representar una imagen (en realidad cualquier dato binario) en su HTML o CSS utilizando solo una cadena de texto ASCII??

Esta técnica se conoce como el esquema URI de datos y, de hecho, no es nueva. Aunque los URI de datos han estado flotando por más de diez años, solo han ganado popularidad recientemente con una amplia compatibilidad con el navegador y un enfoque en la mejora del rendimiento del sitio..

¿Cuáles son los beneficios de usar URI de datos??

El principal beneficio de usar URI de datos es la mejora del rendimiento. El navegador obtiene todos los recursos que se utilizan en su sitio mediante una solicitud HTTP. Esto incluye todo, desde hojas de estilo, a archivos JavaScript, a imágenes. Independientemente de la velocidad de la conexión a Internet, casi todos los navegadores limitan la cantidad máxima de solicitudes HTTP simultáneas a dos a la vez, lo que resulta en un cuello de botella de datos. Cuantas más solicitudes HTTP deban realizarse, peor será el rendimiento general del sitio..

La combinación de datos de imágenes en el HTML o CSS del sitio elimina instantáneamente la necesidad de que el navegador obtenga recursos adicionales. Aunque los datos codificados en Base64 en bruto generalmente se consideran un 33% más grandes que su contraparte optimizada (por ejemplo, una imagen), luego de la optimización de archivos CSS y CSS, la diferencia en el tamaño del archivo generalmente es insignificante..

¿Cómo se ven los URI de datos??

Un URI de datos es esencialmente datos binarios codificados en un formato Base64, junto con información adicional para el navegador, que incluye un tipo MIME, un Charset y el formato de codificación (Base64).

El URI de datos (en su forma más simple) se ve así:

datos: [] [; charset =] [; base64],

Para usar un URI de datos como una imagen HTML en línea, el formato se ve así:

  Mi imagen 

Para usar un URI de datos como una imagen de fondo que se repite en CSS, el formato es el siguiente:

body background-image: url ('data: image / png; base64,'); Repetición de fondo: repetir; 

Alternativamente, combine los elementos de fondo con la abreviatura de CSS:

div.logo background: url ('data: image / png; base64,') sin repetición arriba a la izquierda; margen: 20px 10px 0 10px; 

Si bien hemos utilizado imágenes para ilustrar el uso de URI de datos, se puede usar casi cualquier medio, incluidos archivos multimedia, fuentes (como veremos en breve) y mucho más..

Cómo usar URIs de datos

OK, seamos prácticos con un par de ejemplos. Tomemos la siguiente imagen (un mosaico de repetición que descargué de Patrones sutiles), la convertimos en un URI de datos y usamos CSS para crear un fondo de repetición para un sitio o interfaz.

Aunque los URI de datos pueden parecer bastante extraños, el proceso para crear uno es muy simple.

Primero, diríjase al convertidor de URI de datos de la semántica web y cargue la imagen seleccionando la ubicación del archivo de la imagen y haciendo clic en la herramienta "Convertir imagen":

Una vez procesada, si te desplazas hacia abajo en la página, verás cómo se ve esta imagen como codificada en base64:

Dado que necesitamos un fondo repetido para nuestro proyecto, tendremos que modificar el CSS que nos proporciona la herramienta..

Para un fondo que se repite, copie y pegue el siguiente CSS:

 div.logo repetición de fondo: repetir; Imagen de fondo: url (datos: image / jpeg; base64, / 9J / 4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP / sABFEdWNreQABAAQAAABkAAD / 4QMraHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu + 7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI / PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjMtYzAxMSA2Ni4xNDU2NjEsIDIwMTIvMDIvMDYtMTQ6NTY6MjcgICAgICAgICI + + IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjlCNDA1N0EyRkNEQzExRTE5NEEyOEY1NEFFMzlEMzVFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjlCNDA1N0EzRkNEQzExRTE5NEEyOEY1NEFFMzlEMzVFIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OUI0MDU3QTBGQ0RDMTF FMTk0QTI4RjU0QUUzOUQzNUUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6OUI0MDU3QTFGQ0RDMTFFMTk0QTI4RjU0QUUzOUQzNUUiLz4gPC9yZGY6RGVzY3JpcHRpb24 + IDwvcmRmOlJERj4gPC94OnhtcG1ldGE + IDW / eHBhY2tldCBlbmQ9InIiPz7 / 7gAOQWRvYmUAZMAAAAAB / 9sAhAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgIDAwMDAwMDAwMDAQEBAQEBAQIBAQICAgECAgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwP / wAARCAAnACgDAREAAhEBAxEB / 8QAowAAAgICAwAAAAAAAAAAAAAABwoICwUGAwQJAQABBAMBAQAAAAAAAAAAAAAFAwQHCAACBgEJEAAABgIBAwIDBQkAAAAAAAABAgMEBQYRBwgAIRIxQVEyCWGBIkIWcZGhsSNjJtYKEQACAAUBBAYFCAsBAAAAAAABAgARAwQFBiExQRJRYXGx0QeRIjITFPBCUnJkdMTUgWKSI1Ozw9OUtHUX / 9oADAMBAAIRAxEAPwBWSkVqnzdWqU1PVCnzs3NVWtTM3NTtVr0xLzMxKQrCQlJWVlJOOdP5GSkXzhRZwusodVVU4mMYRER6PUaVM0V9RCSo + aJzkJ8IoVrDUmq6ep8rRoZXK06KZO7VFS8uUVVW4qKqqqVQqqoACgAAASEFqLoWsjgUT6y1gf0EQU1zSlPsEPxQZu / b26dpSt9xSnP6o8IjW / 1XrdSQuczg7MjeD + vBIjtd6kOBc6k1Ec39zVtBP + 8DV4cgGelVpW4Mmp05fUHhHGXmsPMFSZah1CB1ZO / H4iNoS1vp4QER05pzAYxnU2uxz3ER7 / pwRHAB0r7i3kJU6X7C + EAqmtPMUHZqPUc / + RkPzEDXbdC1cw1hst9Fau1dEycdru9SEZKQ + uKVEysbJx1XlXjCQjZKPg279g + ZO0CKpLJKEUTOUBKICGekbmhbChU5UpzCE7EEwZHjKO48u9X69r67wdG7z2erWtTNWKPTq5G9qU3R7qkro6PXZHRlJVlYFSDIgxHvXbvwo1F7 / JSKeGBEAxiuRgeg / H + PQ2k4FNV4co7h1RMGsLQtqbKOBvyd5 / s1Ym5pnjFyk3nXndv0jxt3 / uOpR004rcjZ9V6e2HsKusLC0ZRsm8gnk3Uq5LxrWZaxsw0cKNTqlXIg5RUMUCqkEXDVaaH1mUGW47I5JNJZ7M0WusVYXdzQVipalRq1F5gAeUlFIDAEGR2gMOBE7QAv0 ++ BROxOEfEQgfAvGzTRf5UsOgXxFf6b + k + MX0by80A3tYPDntsrb + 3Ffjz04p8htUcheX99PxY3JrnjxXuS + 7yVG7Bo26UzS8PruR3XYoLWZq5YyVaNosfTZGOexbWEM2WIzcJLtiNhMCiYD0NtWp1KSKXU1eUTE5nZvnx6Y + ffmV5eZfGapy1 / b4q6ttNpfVTTqC2qJbLTaqRT5H5BSVCWCoFIXaqqNwjyl2zLCtrDZxAN2U1tfifMH5qnMZDAewZ63uD + 4qSl7B7oC6Ax / u9cYNpezmrA7vtdGIuUl6ZOnUsoGEPGnVMuMh2 / x + NDP2Z6G0yORJ / RHcInrU1BzqDJbuU5G7O77RUPRth8D / mk5k8U9CcDtp1LenJ3jrpa3ynLW / WKPq23d26y1rY5CuudOaEjGk / Hwl1tUFJvIR1JRTtum6SSOgddqsmBvNM4A0vFZqgIBIC9HWdkTP5QZDE43Tdxb3Vzb0axvnbleoiNI0qInJiDIlSAeMiN4MNwKWNBJQ6SmCqJnMmcooq5KcgiUxRwYQyAh0yibYX3 + vTzG4r2f6b3LjR1b5Ncd7Bu5jZdNV1zpyA3XrOZ2s2slM5S6iXuNfca6jbU8uCE3U20G / Uk2hm RV2BGS4rlTBFTxdWqsKyuQeWe / wDREV + amSxd1obJ46jc27XpRV92tRDUmtVCy8gbmmoBmJTEjPdFdvseWBXX2wCeXz0O6J / MGB861KFD3yPr2z0WrOBSdVO0o3DqMVC0dj + TV2IaRJGVszPsuaRgC1N741SpEESh41Ssl7gP5YKPD2x646ZISEXb80d0S9naAfP35IInf3PEfxnjbkJAMBkfTv6iOfh6d / X4h6dL80tjQAr46e7j2fL0Q + 3I / wDUj9PR / JSDxLWXN1Mjt67dESLqXQKoJEcOFFSkBQeVqInAgHx5CQmfXAenQ74WrKeyUWK / 9S02F5mS7HbTX0e33QmLyp3XX968pOTm8Kkymompbq5Fbx23Vouzox7SyR9a2VtG1XWAZWBpESc5FNJxpEziJHabV67QTcFOVNZUoAcz + nNaag7wPlwiuepHt8rnrrJW9NjRrV3dSdhkxnIjpG47SOsxF27SvnSronkf6lOtRM5EwfjgJEv7O + esqmdNj + qe49UbactJaixrBJSyNqfRcUz0QKImTbRcRDRboZEzmMhoiOcnj4OwzUeddhHNWiykfMwkVIw0uwUUREyLpo4XauEhKokochimFslSQAIMpDgeiJCzGLuGzF46 / CkNeVztubRTtqudqtWDKdu1WAYGYIBEZQlkYh8pZwe / tTrqPf7q7jPW / NTnxn2HwgcMPeSJBt + X73Zy / nx2iWZkAgPjP5yHYaZdh7 / YIVzPWF14zI7D4Q2fD3vH4Qj73Zj8RHP + qG3snYfupd6 / 13rFccAZdQPhCBwtx02n + XY / mIw1lsKDmt2RsVOc83VdnWpBcVS3Mm5TuYp4iQ7h6 / g2rFm3IdQBUVWUTSTIAmOYCgI9eVHUg7Dzcp4HoPVuglhMNcLm7Fy1qFW9oNsurMn1ayGQVKxZiZSCqCSZAAkx / 9k = ); 

Tomemos un ejemplo aún más fácil, convirtiendo la siguiente imagen en un URI de datos y colocándola en nuestro marcado como una imagen en línea:

Simplemente siga los pasos anteriores para convertir la imagen en una imagen codificada en base64 y copie el marcado HTML generado por la herramienta (desde el panel 'Como una imagen') y péguelo directamente en su marcado HTML de la misma forma que lo haría para insertar una imagen en línea regular.

El código final para este ejemplo se ve así:

 

Cuándo usar URI de datos (y cuándo evitarlos)

Realmente no hay reglas estrictas sobre cuándo usar los URI de datos para reemplazar los activos del sitio, pero hay una serie de inconvenientes y peculiaridades que se deben tener en cuenta a la hora de elegir si usar URI de datos o no..

  • Si planeas apoyar
  • Los URI de datos no se almacenan en caché por el navegador, por lo que deberán descargarse en todas las páginas, incluso si ya han sido procesados ​​por el navegador..
  • Los URI de datos son más adecuados para recursos pequeños, pero se pueden usar para recursos más grandes (por ejemplo, fotografías) sin incurrir en mayores penalizaciones de rendimiento (después de gzipping son aproximadamente un 2-3% más grandes que el archivo original). Tenga en cuenta, sin embargo, que el usuario del sitio no verá cualquier cosa hasta que se descargue todo el recurso, lo que podría ser indeseable para usuarios con dispositivos móviles o con una conexión lenta a Internet.
  • Los URI de datos hacen que sus documentos CSS y HTML se vean muy desordenados. Para sitios grandes y la utilización generalizada de URI de datos, las hojas de estilo y el marcado se vuelven más difíciles de leer, navegar y mantener.
  • Cada vez que realice un cambio en un activo (por ejemplo, una hoja de cálculo), deberá volver a codificar el archivo de imagen, agregando más pasos a su flujo de trabajo.

Fuentes de iconos codificados en base64

¿Recuerdas que dije eso? alguna ¿Se pueden usar datos binarios en el esquema de URI de datos? Ahora que hemos visto las imágenes codificadas en base64, veamos cómo convertir una fuente de icono en un URI de datos e implementarla en un proyecto.

De hecho, los URI de datos son una combinación perfecta para las fuentes de iconos, especialmente si solo planea usar algunos símbolos con un tamaño de archivo pequeño.

Vamos a utilizar la aplicación web en línea IcoMoon para generar un conjunto de fuentes personalizado, generar el URI de datos y generar el código CSS final.

Primero, dirígete al sitio de IcoMoon y haz clic en el enlace "Comenzar a usar la aplicación":

A continuación, explore los conjuntos de fuentes para seleccionar sus fuentes de iconos personalizados o use el campo de búsqueda en la parte superior izquierda de la página para encontrar fuentes que coincidan con las etiquetas 'Comentario', 'Corazón', 'Ojo' y 'Buscar'.

He usado el conjunto de fuentes Broccolidry de Visual Idiot en este ejemplo.

A continuación, vaya a la página de configuración de descarga haciendo clic en el botón 'Fuente' en la parte inferior de la pantalla:

En la página de configuración de descarga, cambie la Línea de base al 10%, haga clic en el ícono de configuración para que aparezcan las opciones avanzadas y seleccione la casilla de verificación 'Base64 Encode & Embed in CSS'. Haga clic en el icono 'Guardar' para descargar su fuente.

Una vez que haya descargado y extraído la fuente personalizada, puede abrir el archivo 'index.html' para ver su fuente y sus combinaciones de Unicode:

Usando su fuente de icono personalizado

Ahora que hemos creado nuestro conjunto de fuentes de iconos personalizados, veamos cómo podemos usarlo en un proyecto.

Primero, abra la hoja de estilo provista en la descarga de IcoMoon y localice el siguiente CSS. Ya que el nombre del juego se trata de reducir las solicitudes HTTP, vamos a copiar y pegar todo el CSS provisto en nuestra propia hoja de estilo principal.

 
@ font-face font-family: 'customFont'; src: url (datos: fuente / SVG; charset = utf-8; base64, PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI / Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8bWV0YWRhdGE + ClRoaXMgaXMgYSBjdXN0b20gU1ZHIGZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uCjEKPC9tZXRhZGF0YT4KPGRlZnM + Cjxmb250IGlkPSJjdXN0b21Gb250IiBob3Jpei1hZHYteD0iNTEyIiA + Cjxmb250LWZhY2UgdW5pdHMtcGVyLWVtPSI1MTIiIGFzY2VudD0iNDYxIiBkZXNjZW50PSItNTEiIC8 + CjxtaXNzaW5nLWdseXBoIGhvcml6LWFkdi14PSI1MTIiIC8 + CjxnbHlwaCB1bmljb2RlPSImI3gyMTsiIGQ9Ik0gNTA3LjQ0LTIuMjQ4YyA2LjA5Ni02LjA5NiwgNi4wOTYtMTUuOTg0LDAuMDAtMjIuMDk2bC0yMi4wOTYtMjIuMDk2CgljLTYuMTEyLTYuMDk2LTE2LjAwLTYuMDk2LTIyLjA5NiwwLjAwbC0xNTQuNjg4LDE1NC42ODhjLTEuNjgsMS42OC0yLjgwLDMuNjY0LTMuNTUyLDUuNzc2QyAyNzMuMjgsOTAuODQsIDIzNC4zMiw3Ny4wMCwgMTkyLjAwLDc3LjAwCglDIDg1Ljk2OCw3Ny4wMCwwLjAwLDE2Mi45NjgsMC4wMCwyNjkuMDBDMC4wMCwzNzUuMDMyLCA4NS45NjgsNDYxLjAwLCAxOTIuMDAsNDYxLjAwYyAxMDYuMDMy LDAuMDAsIDE5Mi4wMC04NS45NjgsIDE5Mi4wMC0xOTIuMDBjMC4wMC00Mi4zMi0xMy44NC04MS4yOC0zNy4wMjQtMTEzLjAwOAoJYyAyLjExMi0wLjc1MiwgNC4wOTYtMS44NTYsIDUuNzc2LTMuNTUyTCA1MDcuNDQtMi4yNDh6IE0gMTkyLjAwLDM5Ny4wMGMtNzAuNjg4LDAuMDAtMTI4LjAwLTU3LjMxMi0xMjguMDAtMTI4LjAwYzAuMDAtNzAuNjg4LCA1Ny4zMTItMTI4LjAwLCAxMjguMDAtMTI4LjAwcyAxMjguMDAsNTcuMzEyLCAxMjguMDAsMTI4LjAwCglDIDMyMC4wMCwzMzkuNjg4LCAyNjIuNjg4LDM5Ny4wMCwgMTkyLjAwLDM5Ny4wMHoiIC8 + CjxnbHlwaCB1bmljb2RlPSImI3gyMjsiIGQ9Ik0gMjU2LjAwLDEzLjQ5NmMtMTAuMzg0LDAuMDAtMjUuNTg0LDExLjY4LTM1LjY2NCwxMi43NTJjLTI4Ljc1Mi0yNC4xMTItNTguNzA0LTUzLjEzNi05OS40MjQtNjguMjI0CgljLTE3Ljc3Ni03LjUzNi0zMy4wNC0xMS45MDQtMzcuMDA4LTcuMTUyYy01LjMyOCw2LjE5Mi0xMy4zNzYsMTQuNzg0LTE0LjgwLDE3LjA4OGMgMC4wOCwzLjQyNCwgNC4yMjQsMC43MiwgOC43MzYsNS41ODQKCWMgMjQuNTc2LDEwLjMzNiwgNDAuNDQ4LDM3LjAwOCwgNTEuMTIsNjkuNjE2QyA1MS45ODQsODEuNzM2LDAuMDAsMTU0LjEwNCwwLjAwLDIzNy4yMDhDMC4wMCwzNjAuNzQ0LCAxMTQuNjI0LDQ2MC45MDQsIDI1Ni4wMCw0NjAuOTA0cyAyNTYuMDAtMTAwLjE0NCwgMjU2LjAwLTIyMy42OTYKCVMgMzk3LjM3NiwxMy40OTYsIDI1Ni4wMCwx My40OTZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjM7IiBkPSJNIDM2OC4wMCw0MjkuMDBjLTM4LjQ2NCwwLjAwLTY5LjI5Ni0xMy44MDgtOTYuNDgtNDEuMDA4Yy0wLjAxNi0wLjAxNi0wLjAzMi0wLjAzMi0wLjA0OC0wLjA0OAoJbC0wLjAxNiwwLjAwTCAyNTYuMDAsMzY4LjQ3MkwgMjQwLjU0NCwzODYuNzZjLTAuMDE2LDAuMDE2LTAuMDMyLDAuMDMyLTAuMDQ4LDAuMDQ4TCAyNDAuNDgsMzg2LjgwOCBsMC4wMCwwLjAwQyAyMTMuMjgsNDE0LjAyNCwgMTgyLjQ2NCw0MjkuMDAsIDE0NC4wMCw0MjkuMDBTIDY5LjM3Niw0MTQuMDI0LCA0Mi4xNzYsMzg2LjgyNAoJQyAxNC45OTIsMzU5LjYyNCwwLjAwLDMyMy40NjQsMC4wMCwyODUuMDBjMC4wMC0zOC40MzIsIDE0Ljk2LTc0LjU5MiwgNDIuMTI4LTEwMS43NzZMIDIzMy4yOC05LjUyOEMgMjM5LjI4LTE1LjU5MiwgMjQ3LjQ3Mi0xOS4wMCwgMjU2LjAwLTE5LjAwcyAxNi43MiwzLjQwOCwgMjIuNzIsOS40NzIKCWwgMTkxLjEzNiwxOTIuNzUyQyA0OTcuMDI0LDIxMC40MDgsIDUxMi4wMCwyNDYuNTUyLCA1MTIuMDAsMjg1LjAwYzAuMDAsMzguNDY0LTE0Ljk5Miw3NC42MjQtNDIuMTc2LDEwMS44MjRDIDQ0Mi42MjQsNDE0LjAyNCwgNDA2LjQ2NCw0MjkuMDAsIDM2OC4wMCw0MjkuMDBMIDM2OC4wMCw0MjkuMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjQ7IiBkPSJNIDI1Ni4wMCwzNjUuMDBDIDExNC42MDgsMzY1LjAwLDAuMDAsMjA1LjAwLDAuMDAsMjA1LjAwcyAx MTQuNjA4LTE2MC4wMCwgMjU2LjAwLTE2MC4wMHMgMjU2LjAwLDE2MC4wMCwgMjU2LjAwLDE2MC4wMFMgMzk3LjM5MiwzNjUuMDAsIDI1Ni4wMCwzNjUuMDB6IE0gMjU2LjAwLDEwOS4wMAoJCQljLTUzLjAwOCwwLjAwLTk2LjAwLDQyLjk5Mi05Ni4wMCw5Ni4wMHMgNDIuOTkyLDk2LjAwLCA5Ni4wMCw5Ni4wMHMgOTYuMDAtNDIuOTkyLCA5Ni4wMC05Ni4wMFMgMzA5LjAwOCwxMDkuMDAsIDI1Ni4wMCwxMDkuMDB6IE0gMjU2LjAwLDI2OS4wMGMtMzUuMzQ0LDAuMDAtNjQuMDAtMjguNjU2LTY0LjAwLTY0LjAwcyAyOC42NTYtNjQuMDAsIDY0LjAwLTY0LjAwcyA2NC4wMCwyOC42NTYsIDY0LjAwLDY0LjAwCgkJCVMgMjkxLjM0NCwyNjkuMDAsIDI1Ni4wMCwyNjkuMDB6IiAvPjwvZm9udD48L2RlZnM + PC9zdmc +) formato ( 'svg'), url (datos: fuente / ttf; charset = utf-8; base64, AAEAAAANAIAAAwBQRkZUTWJ6KjIAAAbwAAAAHEdERUYANQAGAAAG0AAAACBPUy8yT9zb + QAAAVgAAABWY21hcARB + ​​dYAAAHQAAABUmdhc3D // wADAAAGyAAAAAhnbHlmq9ef6AAAAzgAAAGoaGVhZPoP + 5cAAADcAAAANmhoZWED / f / WAAABFAAAACRobXR4CqoAAAAAAbAAAAAgbG9jYQGQASoAAAMkAAAAEm1heHAATQApAAABOAAAACBuYW1lOPxXYAAABOAAAAGqcG9zdJ + wTbMAAAaMAAAAOgABAAAAAQAAJNzn + l8PPPUACwIAAAAAAMx4XYAAAAAAzHhdgAAA / 80CAAHNAAAACAACAAAAAAAAAAEAAAHN / 80ALgIAAAD + AAIAAAEAAAAAAAAAAAAAA AAAAAAAIAAEAAAAIACYAAwAAAAAAAgAAAAEAAQAAAEAAAAAAAAAAAQIAAZAABQAIAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAIABQMAAAAAAAAAAAABEAAAAAAAAAAAAAAAUGZFZABAACHwAAHN / 80ALgHNADOAAAABAAAAAAAAAgAAAAAAAAAAqgAAAgAAAAIAAAACAAAAAgAAAAAAAAAAAAADAAAAAwAAABwAAQAAAAAATAADAAEAAAAcAAQAMAAAAAgACAACAAAAAAAk8AD // // wAAAAAAIfAA 8AAP / iEAcAAQAAAAAAAAAAAAABBgAAAQAAAAAAAAABAgAAAAIAAAAAAAAAAAAAAAAAAAABAAAAAwQFBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgBkAIoAxgDUAAAAAgAA / 9EB / AHNABUAHQAABRYPAQYvASYnBiMiJjQ2MhYVFAcWFyYiBhQWMjY0AfsLCxYLC5oDATM + UHBwoHAlAwNsaktLaksCCwsWCwuaAwMlcKBwcFA + MwED9UtqS0tqAAAAAAEAAP / OAgABzQAeAAAlIiYjDgQHBicuAic0PgE3NjcuATU0NjIWFAYBAAYZBQIdCxgVDCAFAgcFAQIFAiESO0aW1JaWDQ0BGQkSCwQNBgIIBgEBAQICDTgeZz1dg4O5hAAAAAABAAD / 7QIAAa0AFgAAASIHIwcnMCMxJiMiBhQfARYy PwE2NCYBcDcpAQ8PASo2PFQqvwoaCr8qVAGtKRQTKlR4KsEJCcEqeFQAAAAAAwAAAC0CAAFtABUAHQAlAAAAIg4CDwEeBDI + Aj8BLgMGIiY0NjIWFCYiBhQWMjY0AShQUT0xDQwFETc4U1BRPTENDAURNzhTUDg4UDhFNiUlNiUBbSEvLxARBxU3KiMhLy8QEQcVNyrdOFA4OFBoJTYlJTYAAAAAAQAA / 80CAAHNAAIAABEBIQIA / gABzf4AAAAAAAAADACWAAEAAAAAAAEACgAWAAEAAAAAAAIABwAxAAEAAAAAAAMAJgCHAAEAAAAAAAQACgDEAAEAAAAAAAUACwDnAAEAAAAAAAYACgEJAAMAAQQJAAEAFAAAAAMAAQQJAAIADgAhAAMAAQQJAAMATAA5AAMAAQQJAAQAFACuAAMAAQQJAAUAFgDPAAMAAQQJAAYAFADzAGMAdQBzAHQAbwBtAEYAbwBuAHQAAGN1c3RvbUZvbnQAAFIAZQBnAHUAbABhAHIAAFJlZ3VsYXIAAEYAbwBuAHQARgBvAHIAZwBlACAAMgAuADAAIAA6ACAAYwB1AHMAdABvAG0ARgBvAG4AdAAgADoAIAAxADQALQA5AC0AMgAwADEAMgAARm9udEZvcmdlIDIuMCA6IGN1c3RvbUZvbnQgOiAxNC05LTIwMTIAAGMAdQBzAHQAbwBtAEYAbwBuAHQAAGN1c3RvbUZvbnQAAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAAVmVyc2lvbiAxLjAAAGMAdQBzAHQAbwBtAEYAbwBuAHQAAGN1c3RvbUZvbnQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAQACAAQABQAGAAcBAgd1bmlGMDAwAAAAAAAB // == 8AAgABAAAADgAAABgAAAAAAAIAAQADAAcAAQAEAAAAAgAAAAAAAQAAAADJiW8xAAAAAMx4XYAAAAAAzHhdgA ) formato ('truetype'); fuente-peso: normal; estilo de letra: normal; 

Estas pocas líneas de CSS ahora tendrán su Fuente de Icono personalizada lista para funcionar en todos los navegadores modernos. Si desea admitir el modo de compatibilidad de IE9 y las versiones anteriores de IE, deberá agregar una regla adicional (tenga en cuenta que esto buscará recursos adicionales, pero solo cuando el Agente de usuario lo solicite).

 @ font-face font-family: 'customFont';  src: url ('… /fonts/customFont.eot');  src: url ('… /fonts/customFont.eot?#iefix') formato ('embedded-opentype'); fuente-peso: normal; estilo de letra: normal;

¿Curioso acerca de estas correcciones de IE? Paul Irish tiene una excelente publicación de blog sobre una sintaxis a prueba de balas @ font-face.

Ahora que hemos creado nuestras reglas, hay dos formas en que podemos incluir la fuente personalizada en nuestro diseño, las cuales usan entidades de Unicode para hacer referencia al icono correspondiente. Lo mejor de la aplicación IcoMoon es que todo el CSS ya se ha generado para nosotros, listo para ser copiado en nuestra hoja de estilo principal, dependiendo del enfoque que decidamos usar (o ambos).

Usando la fuente de su icono: Enfoque del icono de datos

La primera técnica para usar la fuente de su icono es el enfoque del icono de datos, que mantiene nuestro marcado agradable y limpio y es fácil de leer para la pantalla.

Digamos que queremos incluir un icono de comentario (en este caso con el valor Unicode de & # x22;) dentro de un elemento span en nuestra página.

Nuestro HTML:

  

El CSS relevante (tomado directamente de la hoja de estilo IcoMoon descargada) es el siguiente (los comentarios son míos).

/ * A: antes de que se cree un pseudo elemento para cualquier elemento HTML con el atributo del icono de datos * / [icono de datos]: antes de que / * la familia de fuentes se establezca en nuestra regla @ font-face * / font-family : 'Fuente personalizada'; / * El contenido para el pseudo elemento se obtiene del icono de datos HTML (por ejemplo, ") * / content: attr (icono de datos); / * Instrucciones adicionales para lectores de pantalla (no reconocidos universalmente) * / speak: none; / * Estilo de fuente universal * / font-weight: normal; -webkit-font-smoothing: antialiased; span / * Estilo de fuente específico * / font-size: 2em; color: # A2A2A2; relleno: 2px 5px 2px 5px; margen derecho: 5px;

Si bien este enfoque es agradable y simplificado, y evita la acumulación adicional de clases en su marca, puede que no sea la mejor opción para el código de mantenimiento. A menos que su memoria de caracteres Unicode sea tanto enciclopédica como fotográfica, este enfoque no contiene ninguna información dentro del HTML que lo induzca a qué icono se mostrará..

Usando la fuente de su icono: Enfoque de clase adicional

Como un enfoque alternativo, puede elegir usar clases de CSS adicionales en su HTML para mostrar el icono. Esto tiene la ventaja de ingresar información semántica y descriptiva directamente en su marca, lo que mejora la legibilidad de su código..

Para usar este enfoque, agregue un elemento en su HTML con un nombre de clase como lo proporciona la hoja de estilos IcoMoon:

 

Nuestro CSS se verá así (los comentarios son míos).

/ * La regla se aplicará a cualquier elemento HTML con una clase de 'icon- * l y establece un pseudo-elemento al elemento * / [class ^ = "icon -"]: antes, [class * = "icon- "]: antes de / * Familia de fuentes se establece el nombre establecido en nuestra regla de font-face * / font-family: 'personalizado'; estilo de letra: normal; hablar: ninguno; fuente-peso: normal; -webkit-font-smoothing: suavizado;  .icon-comment: before / * El contenido para el pseudo elemento se establece en unicode escapado (es decir, "se convierte en '/ 22') * / content:" \ 22 ";

Ahora, con un poco de estilo adicional, puede implementar fácilmente fuentes de iconos de gran apariencia en su próximo proyecto, sin atascar su árbol de recursos con recursos adicionales.


Conclusión

Gracias por tomarse el tiempo de explorar algunas de las maneras en que puede aprovechar al máximo los URI de datos para su próximo proyecto.

Es importante recordar que los URI de datos no son siempre la mejor solucion. Si bien el uso de CSS3, SVG e Icon Fonts tiene algunos beneficios muy convincentes sobre el uso de imágenes (especialmente en el ámbito del diseño responsivo), los beneficios de codificar sus imágenes en base64 son más variados. Al considerar si usar URI de datos en su próximo proyecto, sopese los tiempos de carga y las solicitudes HTTP reducidas con capacidad de mantenimiento de código; simplemente considere los URI de datos como otra herramienta en su caja de herramientas!

¿Disfrutó de este tutorial y ahora está ansioso por comenzar a utilizar estas técnicas de una manera más práctica? Esté atento a los nuevos contenidos premium pronto, en los que utilizaremos URI de datos de forma extensa para crear un diseño de interfaz de usuario ligero. Mira este espacio!

¿Cómo ha utilizado las fuentes de iconos y las URI de datos en sus proyectos? Suscríbete y deja un comentario.!


Recursos adicionales

  • Herramienta de conversión de URI de datos de semántica web
  • IcoMoon Font App
  • El por qué y cómo de las texturas en diseño web
  • Sintaxis a prueba de balas @ font-face
  • CSS Sprite Sheets: Mejores prácticas, herramientas y aplicaciones útiles
  • Conjunto de fuentes Broccolidry
  • Primeros pasos con gráficos vectoriales escalables (SVG)
  • duri.me una herramienta dataURI super simple