The artdirect extension allows you to fully control art direction through your CSS. This is accomplished by two techniques which you can be used separately or combined. The extension hooks into the data-sizes="auto"
feature.
The first feature is by tagging and the second feature uses the information of the displayed aspect ratio of the img
elements and the physical aspect ratio of your images.
You can either enable the artdirect extension for all images using JavaScript:
// never try to import *.min.js files
import lazySizes from 'lazysizes';
import 'lazysizes/plugins/artdiect/ls.artdirect';
lazySizes.cfg.autoArtDirect = true;
Or for a specific img
element using CSS:
picture > img.is-autoartdirect {
font-family: "artdirect";
}
You can use a whitespace separated list of tags on the source
elements data-tag
attribute as also a whitespace separated list of tags inside of the CSS font-family
:
<style>
picture > img.is-autoartdirect {
font-family: "artdirect: tag-default";
}
@media (max-width: 960px) {
picture > img.is-autoartdirect {
font-family: "artdirect: tag-cropped";
}
}
</style>
<picture>
<source
data-srcset="http://placehold.it/500x600/11e87f/fff"
data-tag="tag-default" />
<source
data-srcset="http://placehold.it/300x300"
data-tag="tag-cropped" />
<img
data-src="http://placehold.it/500x600/11e87f/fff"
class="lazyload"
data-sizes="auto"
alt="image with artdirection" />
</picture>
By providing the specific layout height and width (no auto
values) through CSS and providing the physical aspect ratio of the images through either a data-aspectratio
attribute or through w
andh
descriptors or through width
and height
content attributes the plugin can choose the best image source.
<style>
picture > img.is-autoartdirect {
display: block;
height: 200px;
max-height: 60vh;
width: 100%;
object-fit: cover;
font-family: "artdirect", "object-fit: cover";
}
</style>
<picture>
<source
data-srcset="http://placehold.it/500x600/11e87f/fff"
data-aspectratio="0.834"
/>
<source
data-srcset="http://placehold.it/700x300"
data-aspectratio="2.34"
/>
<img
data-src="http://placehold.it/500x600/11e87f/fff"
class="lazyload"
data-sizes="auto"
alt="image with artdirection" />
</picture>
The aspect ratio feature can be perfectly combined with the tagging feature.
<style>
picture > img.is-autoartdirect {
display: block;
height: 200px;
max-height: 60vh;
width: 100%;
object-fit: cover;
font-family: "artdirect", "object-fit: cover";
}
@media (max-width: 1100px) {
font-family: "artdirect: tag-foo tag-baz", "object-fit: cover";
}
</style>
<picture>
<source
data-srcset="http://placehold.it/500x600/11e87f/fff"
data-aspectratio="0.834"
data-tag="tag-foo"
/>
<source
data-srcset="http://placehold.it/1400x600/e8117f/fff 1400w 600h"
data-aspectratio="0.834"
/>
<source
data-srcset="http://placehold.it/700x300"
data-aspectratio="2.34"
data-tag="tag-baz tag-foobar"
/>
<img
data-src="http://placehold.it/500x600/11e87f/fff"
class="lazyload"
data-sizes="auto"
alt="image with artdirection" />
</picture>