Bento Inline Gallery
<head>
<script type="module" async src="https://cdn.ampproject.org/bento.mjs" ></script> <script nomodule src="https://cdn.ampproject.org/bento.js"></script> <script type="module" async src="https://cdn.ampproject.org/v0/bento-inline-gallery-1.0.mjs" ></script> <script nomodule async src="https://cdn.ampproject.org/v0/bento-inline-gallery-1.0.js" ></script> <link rel="stylesheet" href="https://cdn.ampproject.org/v0/bento-inline-gallery-1.0.css" /> <script type="module" async src="https://cdn.ampproject.org/v0/bento-base-carousel-1.0.mjs" ></script> <script nomodule async src="https://cdn.ampproject.org/v0/bento-base-carousel-1.0.js" ></script> <link rel="stylesheet" href="https://cdn.ampproject.org/v0/bento-base-carousel-1.0.css" />
</head><body>
<bento-inline-gallery id="inline-gallery"> <bento-inline-gallery-thumbnails style="height: 100px" loop ></bento-inline-gallery-thumbnails> <bento-base-carousel style="height: 200px" snap-align="center" visible-count="3" loop > <img src="https://picsum.photos/id/237/640/480" data-thumbnail-src="https://picsum.photos/id/237/64/48" /> <img src="https://picsum.photos/id/238/640/480" data-thumbnail-src="https://picsum.photos/id/238/64/48" /> <img src="https://picsum.photos/id/239/640/480" data-thumbnail-src="https://picsum.photos/id/239/64/48" /> <img src="https://picsum.photos/id/240/640/480" data-thumbnail-src="https://picsum.photos/id/240/64/48" /> <img src="https://picsum.photos/id/241/640/480" data-thumbnail-src="https://picsum.photos/id/241/64/48" /> <img src="https://picsum.photos/id/242/640/480" data-thumbnail-src="https://picsum.photos/id/242/64/48" /> </bento-base-carousel> <bento-inline-gallery-pagination style="height: 20px" ></bento-inline-gallery-pagination> </bento-inline-gallery>
</body>Displays slides, with optional pagination dots and thumbnails. Its implementation uses a Bento Base Carousel. Both components must be properly installed for the environment (Web Component vs Preact).
Use bento-inline-gallery as a web component or a React functional component:
↓ Web Component ↓ React / PreactWeb Component
You must include each Bento component's required CSS library to guarantee proper loading and before adding custom styles. Or use the light-weight pre-upgrade styles available inline. See Layout and style.
Import via npm
npm install @bentoproject/inline-galleryimport {defineElement as defineBentoInlineGallery} from '@bentoproject/inline-gallery';
defineBentoInlineGallery();Include via <script>
<script type="module" src="https://cdn.ampproject.org/bento.mjs" crossorigin="anonymous"></script>
<script nomodule src="https://cdn.ampproject.org/bento.js" crossorigin="anonymous"></script>
<script type="module" src="https://cdn.ampproject.org/v0/bento-inline-gallery-1.0.mjs" crossorigin="anonymous"></script>
<script nomodule src="https://cdn.ampproject.org/v0/bento-inline-gallery-1.0.js" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.ampproject.org/v0/bento-inline-gallery-1.0.css" crossorigin="anonymous">Example
<head>
<script type="module" async src="https://cdn.ampproject.org/bento.mjs" ></script> <script nomodule src="https://cdn.ampproject.org/bento.js"></script> <script type="module" async src="https://cdn.ampproject.org/v0/bento-inline-gallery-1.0.mjs" ></script> <script nomodule async src="https://cdn.ampproject.org/v0/bento-inline-gallery-1.0.js" ></script> <link rel="stylesheet" href="https://cdn.ampproject.org/v0/bento-inline-gallery-1.0.css" /> <script type="module" async src="https://cdn.ampproject.org/v0/bento-base-carousel-1.0.mjs" ></script> <script nomodule async src="https://cdn.ampproject.org/v0/bento-base-carousel-1.0.js" ></script> <link rel="stylesheet" href="https://cdn.ampproject.org/v0/bento-base-carousel-1.0.css" />
</head><body>
<bento-inline-gallery id="inline-gallery"> <bento-inline-gallery-thumbnails style="height: 100px" loop ></bento-inline-gallery-thumbnails> <bento-base-carousel style="height: 200px" snap-align="center" visible-count="3" loop > <img src="img1.jpeg" data-thumbnail-src="img1-thumbnail.jpeg" /> <img src="img2.jpeg" data-thumbnail-src="img2-thumbnail.jpeg" /> <img src="img3.jpeg" data-thumbnail-src="img3-thumbnail.jpeg" /> <img src="img4.jpeg" data-thumbnail-src="img4-thumbnail.jpeg" /> <img src="img5.jpeg" data-thumbnail-src="img5-thumbnail.jpeg" /> <img src="img6.jpeg" data-thumbnail-src="img6-thumbnail.jpeg" /> </bento-base-carousel> <bento-inline-gallery-pagination style="height: 20px" ></bento-inline-gallery-pagination> </bento-inline-gallery>
</body>Layout and style
Each Bento component has a small CSS library you must include to guarantee proper loading without content shifts. Because of order-based specificity, you must manually ensure that stylesheets are included before any custom styles.
<link
rel="stylesheet"
type="text/css"
href="https://cdn.ampproject.org/v0/bento-inline-gallery-1.0.css"
/>Alternatively, you may also make the light-weight pre-upgrade styles available inline:
<style>
bento-inline-gallery,
bento-inline-gallery-pagination,
bento-inline-gallery-thumbnails {
display: block;
}
bento-inline-gallery {
contain: layout;
}
bento-inline-gallery-pagination,
bento-inline-gallery-thumbnails {
overflow: hidden;
position: relative;
}
</style>Attributes on <bento-inline-gallery-pagination>
inset
Boolean attribute indicating whether to display the pagination indicator as inset (overlaying the carousel itself). Default is false.
Attributes on <bento-inline-gallery-thumbnails>
aspect-ratio
A Number defining the ratio of width to height that slides should be displayed in. This value is optional.
loop
Boolean attribute indicating whether thumbnails should loop. The default is false.
Styling
You may use the bento-inline-gallery, bento-inline-gallery-pagination, bento-inline-gallery-thumbnails, and bento-base-carousel element selectors to style the pagination indicator, thumbnails, and carousel freely.
Preact/React Component
Import via npm
npm install @bentoproject/inline-galleryimport React from 'react';
import {BentoInlineGallery} from '@bentoproject/inline-gallery/react';
import '@bentoproject/inline-gallery/styles.css';
function App() {
return (
<BentoInlineGallery id="inline-gallery">
<BentoInlineGalleryThumbnails aspect-ratio="1.5" loop />
<BentoBaseCarousel snap-align="center" visible-count="1.2" loop>
<img src="server.com/static/inline-examples/images/image1.jpg" />
<img src="server.com/static/inline-examples/images/image2.jpg" />
<img src="server.com/static/inline-examples/images/image3.jpg" />
</BentoBaseCarousel>
<BentoInlineGalleryPagination inset />
</BentoInlineGallery>
);
}Layout and style
Container type
The BentoInlineGallery component has a defined layout size type. To ensure the component renders correctly, be sure to apply a size to the component and its immediate children via a desired CSS layout (such as one defined with width). These can be applied inline:
<BentoInlineGallery style={{width: 300}}>...</BentoInlineGallery>Or via className:
<BentoInlineGallery className="custom-styles">...</BentoInlineGallery>.custom-styles {
background-color: red;
}Props for BentoInlineGalleryPagination
In addition to the common props, BentoInlineGalleryPagination supports the props below:
inset
Boolean attribute indicating whether to display the pagination indicator as inset (overlaying the carousel itself). Default is false.
Props for BentoInlineGalleryThumbnails
In addition to the common props, BentoInlineGalleryThumbnails supports the props below:
aspectRatio
A Number defining the ratio of width to height that slides should be displayed in (this is optional).
loop
Boolean attribute indicating whether thumbnails should loop. Default is false.