Manz 🇮🇨⚡👾 Profile picture
Jul 25, 2021 21 tweets 8 min read Read on X
Developah: ¿Poner una imagen en HTML? ¡Claro que sé hacerlo! ¡Eso lo sabe hacer todo el mundo!

🧵Abro hilo.
A ver, maticemos un poco antes de que me caigan encima, que puede sonar prepotente.

En HTML suelen pasar dos cosas:

✅Es MUY FÁCIL hacer algo.
✅Es DIFÍCIL hacerlo correctamente.

¿Cómo pondrías una imagen?
— Fácil. Uso etiqueta `<img>` y en el atributo `src` pongo la imagen.
✅¿Funciona? Sí
❌¿Es correcto? No

En HTML, TODAS las etiquetas `<img>` deben tener el atributo `alt`, donde se debe especificar un «texto alternativo» de reemplazo por si, por alguna razón, las imágenes no están disponibles, se muestre dicho texto.
✅¿Ahora tiene los atributos obligatorios? Sí
❌¿Es correcto? No

Movidos por el afán SEO (posicionarse en buscadores), una mala estrategia (muy común) es colocar una lista de palabras clave.

El objetivo de `alt` es proporcionar una frase alternativa (con sentido) a la imagen.
⁉️ ¿Y si la imagen no necesita una descripción?
Quizás deberías considerar si se trata de elementos de decoración y sería mejor colocarla con CSS.

Una forma de mejorar el SEO, en lugar de añadir palabras clave de forma indiscriminada, mejora el nombre de la imagen.
✅¿Mejor? Sí
✅¿Se podría mejorar? También

Podemos usar las siguientes etiquetas:

`<figure>` engloba el conjunto visual
`<figcaption>` asocia información al contenido visual

No tiene que usarse necesariamente con imágenes: también videos, fragmentos de código, etc...
✅¡Esto tiene mejor pinta! Sí
❌¿Hemos terminado? Para nada

Es importante saber que formato es el más adecuado que podemos usar para nuestras imágenes. Y esto depende de lo que se muestra en ellas.

En este caso usamos JPG (muy común), pero no es el mejor para todos los casos.
Hay muchos formatos interesantes hoy en día. Cito los más relevantes:

✅SVG
✅PNG
❌GIF -> MP4 ó APNG
✅APNG

✅JPG
❌JPEG2000 -> JPG ó WebP
❌JPEG-XR -> JPG ó WebP
✅WebP
🟧AVIF
🟧JPEG-XL

Más información:
lenguajehtml.com/html/multimedi…
Formatos menos conocidos como APNG (PNG animado), WebP (alternativa a JPG con soporte de transparencia y animación) o AVIF y JPEG-XL (mejoras del JPG clásico) son buenas opciones, pero algunos navegadores podrían no soportarlos, y no podemos permitir eso...
Así que vamos a usar `<picture>` para indicar fallbacks:

—Si el navegador soporta AVIF, lo usa
—Si no lo soporta, intenta con JPEG XL.
—Si no lo soporta, intenta con WebP.
—Si no soporta ninguno, usa un `<img>` normal.

—Si no soporta imágenes (lector de voz), usa texto `alt`.
✅¡Oye, esto está genial! Sí
❌¿Perfecto, no? Que va

Imagina que tienes una página-galería con >50 imágenes HD. Sería ideal que el navegador sólo cargue imágenes a medida que se hace scroll (lazy load).

Existe atributo `loading="lazy"` en `<img>` e `<iframe>` para ello:
Sin embargo, mucho ojo al soporte actual.

—No está soportado en Internet Explorer
—Firefox no lo soporta en `<iframe>` aún
—Safari no lo tiene activado por defecto

Existe un polyfill que puede ser interesante para casos en los que se necesite soporte:
github.com/mfranzke/loadi…
❌¿Ya estaría, no? Nope

Una buena recomendación en etiquetas de imagen es incluir atributos `width` y `height` con las dimensiones específicas de la imagen.

Esto permite al navegador conocer el tamaño antes de descargar la imagen y evitar saltos en la página mientras carga.
❌¿YA?

En la cabecera de la página HTML (etiqueta `<head>`) puedes incluir una etiqueta `<link rel="preload">` donde indicar al navegador que precargue una imagen (la más grande de la página) previamente, consiguiendo una web más rápida y mejorarando el LCP de Google Web Vitals.
❌QUE SI QUIERE BOLSA, SEÑORA

También existe un atributo `decoding="async"` que se puede utilizar en algunos casos para indicar al navegador que no procese la imagen aún y que lo haga más tarde, aprovechando los recursos en otros detalles y mejorando la velocidad de carga.
Y no sé que más decir...
¿Se ha quedado un buen día, no?
(Silba)
Ah... espera... ¿Todavía sigues ahí?
Yo después de compartir todos estos consejos y ver como se dispara el número de likes y RT del hilo.
Creo que me merezco un follow, ¿no? Estoy en las siguientes redes (a parte de Twitter @Manz ):

🔵Telegram: t.me/ManzDev
🟣Twitch: twitch.tv/ManzDev
🔴Youtube: youtube.com/c/ManzDev
⚫Discord: discord.gg/2psv38AhSA

👇manz.dev

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Manz 🇮🇨⚡👾

Manz 🇮🇨⚡👾 Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @Manz

Jun 30, 2023
📚ROADMAP FRONTEND 2023
🧠¿En qué debo enfocarme?

✨Ruta de aprendizaje recomendada
✨No tienes que profundizar, pero si conocer bases
✨Especialízate cuando encuentres lo que te interesa
✨Es subjetiva (es mi opinión)

La explico en siguientes tweets👇
Si estás empezando, enfócate en aprender las bases:

✨ HTML/CSS
✨ Frameworks CSS: Bootstrap / Tailwind CSS
✨ Puedes usar para practicar

Aquí te enfocas en ver detalles visuales, apariencia para construir una página. https://t.co/UwA38SOg12Codepen.io
Por aquí tienes una tabla periódica de HTML para profundizar en las etiquetas HTML que existen.

Pulsando sobre cada uno de los elementos HTML, tienes más información sobre ellos, ejemplos, etc:

🧪Tabla periódica de HTML:
https://t.co/saFDMH9KjTlenguajehtml.com/html/introducc…
Read 12 tweets
Jun 25, 2023
📘En 2023... ¡La forma de escribir CSS está CAMBIANDO! ¡Y mucho!

✨Se avecinan muchos cambios (y muy potentes)
✨Mejor soporte en navegadores
✨Escribimos menos código para hacer más cosas
✨¡Nativo! Sin preprocesadores, librerías o similar

🧵¡Te las voy explicando!👇
➡ Combinador `:is()`

La clásica agrupación de selectores, ahora puedes hacerla con el combinador lógico `:is()`, que permite incluso hacer combinaciones de múltiples selectores

✨Más expresivo
✨Más fácil de leer
🧨Puedes usar `:where()` para ser menos específico
➡ Colores RGB

La nueva sintaxis de escribir colores RGB en CSS.

✨Valores porcentuales en vez de 0...255
✨Separado por espacios, sin necesidad de comas
✨Canal alfa separado por slash `/`
🧨Transparencia o no... ¡No hace falta `rgba()`!
Read 9 tweets
Jun 13, 2023
📘¡Corrige tu código CSS automágicamente!

✨Corrige al guardar en VSCode con CTRL+S
✨Reorganiza propiedades por género o categoría
✨Revisa y corrige erratas o valores incorrectos
✨Adapta a formato adecuado en líneas largas
✨Fusiona en propiedades de atajo si es posible

🔽
Para activarlo en un proyecto, simplemente escribimos en una terminal:

1️⃣ `npm install -D stylelint stylelint-config-manzdev`

2️⃣ Luego, creamos un fichero `.stylelintrc.json` y añadimos lo siguiente:

PS: Dentro de `rules` podemos añadir nuestras propias reglas personalizadas. {   extends: "stylelin...
3️⃣ Si queremos que VSCode corrija sólo, instalamos esta extensión:
marketplace.visualstudio.com/items?itemName…

Y añadimos esta configuración en `.vscode/settings.json` o en `F1` / `Settings JSON`:

✨Desactiva linters básicos
✨Activa Stylelint como linter por defecto al guardar {   "css.validate"...
Read 4 tweets
Jun 11, 2023
🆕Animaciones CSS con «Motion Paths»

Mediante CSS podemos crear trayectos y animarlos de forma muy rápida y sencilla.

✨Trayectos con la función `ray()`
✨Trayectos SVG con la función `path()`
✨Trayectos desde un .svg con la función `url()`

¡Te explico como funcionan!
🔽 <div class="container&...
Con este sencillo código (no te olvides del tamaño de alto del contenedor), obtenemos este resultado. ¿Qué es lo que ha ocurrido?

✨Hemos creado 3 trayectos
✨Los hemos animado para ir de inicio a fin
✨La magia está en la función `ray()` aunque se pueden usar otras
Por ejemplo, podemos crear trayectos con la función `path()` creando paths SVG para animar elementos y moverlos a través del trayecto (rectas, curvas, etc...)

✨Desde ficheros SVG ya creados
✨Desde trayectos SVG indicados desde CSS
✨Crea el path en yqnn.github.io/svg-path-edito…
Read 4 tweets
Jun 11, 2023
📙¿La etiqueta HTML más infravalorada?

La etiqueta `<datalist>` nos permite ampliar y potenciar con datos otras etiquetas de formulario.

✨Por ejemplo, podemos convertir un <input> de texto en un híbrido con <select>, abierto a nuevas opciones, con filtro de autocompletado:

🧵 <input type="text"...
✨Utilizada junto a un <input> de fechas, podemos predefinir varias fechas como si fuera un <select>, y dar la opción de escoger "Otras..." para mostrar el selector de fechas tradicional. <input type="date"...
✨ Utilizada junto a un <input> de colores, podemos predefinir colores específicos, de modo que el usuario pueda escoger el color concreto, o mostrar el color picker del sistema. <input type="color&quo...
Read 5 tweets
Jun 11, 2023
10 de Junio de 2023. Acaba de lanzarse Debian 12.

🧵Toca actualizar, así que se viene hilo... Logo de Debian. La mejor di...
Antes de nada: Suelo trabajar con Windows, utilizando WSL2 (Linux para Windows) y hasta ahora tenía un Debian 11 (Bullseye) instalado.

Si tienes Windows 10/11, te aconsejo usar WSL2. Es como tener un Linux nativo dentro de Windows:

terminaldelinux.com/terminal/wsl/i… WSL: Windows Subsystem for ...
1️⃣ El primer paso es actualizar nuestro `/etc/apt/sources.list` (repositorio de paquetes). Donde pone bullseye (debian 11) debemos cambiarlo por bookworm:

`sed s/bullseye/bookworm/g /etc/apt/sources.list > /tmp/sources.list && sudo mv /tmp/sources.list /etc/apt/sources.list`
Read 9 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(