Astro Starter Kit
Words are nice... but code speaks louder. Dive into a fully commented project template, showcasing these techniques (and more) in action.
Sorry, no results found for "".
One of the major advantages of using DatoCMS instead of any other content management systems is its responsiveImage
query, which will return pre-computed image attributes that will help you setting up responsive images in your frontend without any additional manipulation.
To make it even easier to offer responsive, progressive, lazy-loaded images on your projects, we offer a package called @datocms/astro
that exposes an <Image />
component and pairs perfectly with the responsiveImage
query:
To take advantage of it, install the @datocms/astro
package:
Before using the image component, it is necessary to obtain the necessary data by running a GraphQL query using responsiveImage
.
Then, inside your Astro component or page, feed content coming from a responsiveImage
query directly into the <Image />
component:
---import { Image } from '@datocms/astro';
const query = ` query HomeQuery { blogPost { title cover { responsiveImage(imgixParams: { fit: crop, w: 300, h: 300, auto: format }) { # always required src srcSet width height
# not required, but strongly suggested! alt title
# LQIP (base64-encoded) base64
# you can omit 'sizes' if you explicitly pass the 'sizes' prop to the image component sizes } } }`;const data = await executeQuery(query);---
<article> <h1>{data.blogPost.title}</h1> <Image data={data.blogPost.cover.responsiveImage} /></article>
The image component creates zero JS footprint, produces a single <picture /> element, and implements lazy-loading using the native loading="lazy"
attribute. You can refer to the package README to learn more.