Picture
The picture component lets you display a responsive image.
#Usage
<x-picture
:src="featured_image"
size.default.width="62"
size.default.height="62"
lazy="false"
/>
#Source
Use the src attribute to set the source url and alternative text of the image. This should either be an instance of Statamic\Assets\Asset or a string for your url.
In other words, if you have a field called image which allows you to select a single image you can use:
<x-picture
src="{{ $image }}"
size.default.width="150"
size.default.height="150"
/>
If you pass in an instance of Statamic\Assets\Asset, the alt text will automatically be set.
#Sizes
To display different size images for different screen sizes, you can use the size attribute.
The property name should be:
- size -
query-dimension
query - The screen size you want to display the image for. You may use shorthands defined inside of the screens array inpicture.blade.php, or any pixel value.
dimension - Either width or height
The picture component is mobile-first. For example, default is 0px and above, md is 800px and above, etc.
#Examples
An avatar that displays 50x50 on all screen sizes.
<x-picture
size.default.width="50"
size.default.height="50"
/>
A full screen banner that displays as 400x200 on mobile, 800x400 on tablet, and 1200x600 on desktop.
<x-picture
size.default.width="400"
size.default.height="200"
size.sm.width="800"
size.sm.height="400"
size.md.width="1200"
size.md.height="600"
/>
#Lazy Loading
Lazy loading is enabled by default. You can disable it by setting the lazy attribute to false.
(This will change the attribute to eager instead.)
#Pixel Density
The picture component automatically generates images for 1x and 2x pixel density.
#Glide
To keep things simple, we only use the fit attribute currently.
#HTML Attributes
You can add any HTML attributes to either the img or the picture tag by using slots.
<x-picture>
<x-slot:picture class="overflow-hidden aspect-square" />
</x-picture>
<x-picture>
<x-slot:img fetchpriority="high" />
</x-picture>
#Reference
#Properties
| Property | Description | Default | Required |
|---|---|---|---|
src |
The source url of the image | Yes | |
alt |
Alternative text of the image | Yes | |
fit |
The fit of the image | crop_focal |
|
lazy |
The top and bottom margin | true |
#Slots
| Slot | Description |
|---|---|
x-slot:picture |
Use to add html attributes to the <picture> element |
x-slot:img |
Use to add html attributes to the <img> element |