0Pricing
HTML Academy · Lección

Carga diferida de imágenes: loading=lazy

Aplace las imágenes fuera de pantalla con el atributo nativo loading

Carga diferida de imágenes: loading=lazy es una lección gratuita de HTML Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de HTML Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de HTML Academy incluye 4 lecciones en total.

El atributo loading

<img loading="lazy" src="..."> indica al navegador que posponga la descarga de la imagen hasta que esté a punto de entrar en la ventana gráfica. La compatibilidad nativa con todos los navegadores modernos convierte esto en la mejora de rendimiento más sencilla para páginas con muchas imágenes.

Cómo se define «cerca de la ventana gráfica»

Los navegadores utilizan un pequeño margen heurístico (normalmente unos miles de píxeles por debajo del pliegue). La imagen comienza a cargarse con suficiente antelación para que esté completamente renderizada cuando el usuario se desplace hasta ella; la carga diferida resulta imperceptible si se desplaza con cuidado.

Cuándo no usar la carga diferida

No establezca nunca loading="lazy" en imágenes situadas en la parte visible inicialmente ni en la candidata de su LCP (largest contentful paint). La carga diferida retrasa el elemento visual más importante, lo que perjudica tanto la velocidad percibida como Core Web Vitals.

Ancho y alto obligatorios

Para que la carga diferida sea eficaz, proporcione a <img> valores explícitos de width y height (o CSS aspect-ratio). Sin dimensiones, el navegador no puede reservar espacio, el desplazamiento provoca reorganizaciones del diseño y la heurística de carga diferida falla.

<img loading="lazy" src="cat.jpg" width="800" height="600" alt="A cat">

Carga diferida de iframe

El mismo atributo funciona en <iframe>. <iframe loading="lazy"> pospone la carga de mapas, vídeos e inserciones sociales situados debajo del pliegue; de lo contrario, cada uno cargaría megabytes de JavaScript de terceros en cada visita a la página.

eager es el valor predeterminado

El valor predeterminado es loading="eager" (cargar inmediatamente) y rara vez se escribe explícitamente. Establecer eager en imágenes situadas en la parte visible inicialmente puede ser útil como documentación, ya que indica a quienes revisan el código que la elección de eager fue deliberada.

Combinar con srcset

La carga diferida se combina perfectamente con las imágenes adaptables. El navegador sigue eligiendo el candidato adecuado de srcset; simplemente pospone la descarga. No se requiere coordinación adicional entre loading="lazy" y srcset.

<img
  loading="lazy"
  srcset="img-400.jpg 400w, img-800.jpg 800w, img-1200.jpg 1200w"
  sizes="(min-width: 768px) 800px, 100vw"
  src="img-800.jpg"
  alt="Hero"
  width="800" height="600"
>

Indicación de decodificación

Combine la carga diferida con decoding="async" para permitir que el navegador decodifique la imagen fuera del hilo principal. Esto evita bloquear la entrada del usuario durante el desplazamiento cuando muchas imágenes llegan simultáneamente después de una larga ráfaga de desplazamiento.

Imágenes de fondo

CSS background-image no se puede cargar de forma diferida de manera nativa. Para los fondos principales situados en la parte visible inicialmente, esto no supone ningún problema; para los fondos situados debajo del pliegue, use IntersectionObserver para incorporar la URL cuando el elemento se acerque a la ventana gráfica.

Comportamiento al imprimir

Al imprimir la página, el navegador carga todas las imágenes de forma inmediata, independientemente de loading="lazy", para que la copia impresa esté completa. No es necesario aplicar un caso especial a las imágenes con carga diferida en las hojas de estilo de impresión.

Medición del ahorro

La auditoría «Defer offscreen images» de Lighthouse muestra todas las imágenes que deberían tener loading="lazy". Filtrar el panel de red por «Img» y usar la vista «Waterfall» muestra las cargas escalonadas que produce la carga diferida; las solicitudes iniciales disminuyen drásticamente en las galerías de imágenes.

Comprobación de conocimientos

¿Por qué es perjudicial establecer loading="lazy" en una imagen principal situada en la parte superior de la página?

Resumen

Usar loading="lazy" en elementos <img> y <iframe> que están fuera de la pantalla proporciona una mejora de rendimiento con un solo atributo. Combínelo con valores explícitos de width/height (para reservar espacio), srcset (para adaptabilidad) y decoding="async" (para mantener la fluidez del desplazamiento). No lo aplique nunca a la imagen de LCP ni a ningún elemento visible en la ventana gráfica inicial.

Preguntas frecuentes

¿La lección «Carga diferida de imágenes: loading=lazy» es gratis?

Sí — el texto completo de «Carga diferida de imágenes: loading=lazy» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de HTML Academy, actualiza a CoddyKit PRO. El curso de HTML Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Carga diferida de imágenes: loading=lazy»?

Aplace las imágenes fuera de pantalla con el atributo nativo loading Practicas HTML Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar HTML Academy?

No se requiere experiencia previa. HTML Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Carga diferida de imágenes: loading=lazy»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de HTML Academy?

Sí. Cada lección de HTML Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Los atributos async y defer
  2. Preload, prefetch y preconnect
  3. Carga diferida de imágenes: loading=lazy
  4. Sugerencias de recursos: modulepreload
← Volver a HTML Academy