Layout: Frame
The frame layout is useful for cropping media (images and video) to a specific aspect ratio. It uses percentage padding to create a frame with a set aspect ratio (because padding is always based on the width of an element), which then acts as a window onto the content inside.
It is not recommended to apply the .l-frame class to the figure element, as this will obscure the figcaption if used. Instead, place it on an inner picture or div element.
Because .l-frame has a Flexbox context, we use align-items: center; and justify-content: center; to centre the child item both vertically and horizontally.
Internet Explorer/Edge considerations
The default frame layout uses object-fit: cover for images and videos. This is not supported in Internet Explorer or Edge prior to version 16 and in Edge 16-18 it is only supported on images. However, the Chromium Edge browser, which does support object-fit, is now available to systems as far back as Windows 7.
For images, a simple JavaScript workaround is available that swaps the image for a background-image instead, although this removes the accessibility benefits offered by images. Alternatively, you may prefer to forgo object-fit and adapt your instance of the frame to rely on absolute positioning and hiding any overflow.
Image credit
Photo by Steve Johnson on Unsplash
.l-frame--16-9
.l-frame--3-2
.l-frame--4-3
.l-frame--square