Skip to content

astro-swiper

Astro Swiper - native component for Swiper.
Use for slides, carousel, photo swiper.

Install

Terminal window
npm install astro-swiper
pnpm add astro-swiper
bun install astro-swiper

Read the full doc on Github

Swiper options documentation can be found on swiperjs.com

Examples

Autoplay Example

Autoplay example: slider of 3 images, looping.

Full code

Code Snippet

---
import { Swiper, SwiperWrapper, SwiperSlide } from "astro-swiper";
---
<Swiper
options={{ // check options at https://swiperjs.com/swiper-api
autoplay: {
delay: 700,
disableOnInteraction: false,
waitForTransition: false,
},
loop: true,
}}>
<SwiperWrapper>
<SwiperSlide> <img src=... /> </SwiperSlide>
<SwiperSlide> <img src=... /> </SwiperSlide>
<SwiperSlide> <img src=... /> </SwiperSlide>
</SwiperWrapper>
</Swiper>

Navigation Example

Navigation example: slider of 3 images, with arrow or swiping to navigate from a slide to another one.

Note that if ones does not want to use the default swiper class swiper-button-prev and swiper-button-next to use its own css, it is possible to use

<SwiperButtonPrev addDefaultClass={false} class='my-swiper-button-prev'/>

Full code

Code Snippet

---
...
import { SwiperButtonPrev, SwiperButtonNext } from "astro-swiper";
import type { AstroSwiperType } from "astro-swiper";
const astroSwiperOptions: AstroSwiperType = {
options: {
loop: true,
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
},
};
---
<Swiper>
<SwiperWrapper>
<SwiperSlide> <img src=... /> </SwiperSlide>
<SwiperSlide> <img src=... /> </SwiperSlide>
<SwiperSlide> <img src=... /> </SwiperSlide>
</SwiperWrapper>
<SwiperButtonPrev />
<SwiperButtonNext />
</Swiper>

Pagination Example

Pagination example: slider of 3 images, with autoplay and pagination: 3 dots indicates which slide is displayed.

Full code

Code Snippet

---
...
import { SwiperButtonPrev, SwiperButtonNext } from "astro-swiper";
...
---
<Swiper>
<SwiperWrapper>
<SwiperSlide> <img src=... /> </SwiperSlide>
<SwiperSlide> <img src=... /> </SwiperSlide>
<SwiperSlide> <img src=... /> </SwiperSlide>
</SwiperWrapper>
<SwiperPagination />
</Swiper>

Thumbnail Example

Thumbnail example: a slider, with thumbnails at the bottom to see the progress.

The code is made of:

  • 2 slides: 1 for the main slide, and one for the thumbnail
  • each slide have a uniqueClass defined
  • the main slider refers to the thumbnail one using linkToThumbUniqueClass being the uniqueClass of the thumbnail slide
  • the thumbnail slider has an option to set the number of thumbs to show

Full code

Code Snippet

---
import { Swiper, SwiperWrapper, SwiperSlide } from "astro-swiper";
---
<Swiper
uniqueClass="myswiper-main"
linkToThumbUniqueClass="myswiper-thumbnail"
options={{ ... }}>
<SwiperWrapper>
<SwiperSlide> ... </SwiperSlide>
<SwiperSlide> ... </SwiperSlide>
...
</SwiperWrapper>
</Swiper>
<Swiper
uniqueClass="myswiper-thumbnail"
options={{
slidesPerView: 4,
freeMode: true,
watchSlidesProgress: true,
...
}}>
<SwiperWrapper>
<SwiperSlide> ... </SwiperSlide>
<SwiperSlide> ... </SwiperSlide>
...
</SwiperWrapper>
</Swiper>

How others are using astro-swiper

Here is how others are using astro-swiper, as found in public github repo:

Swiperjs demo

Here is how swiperjs.com demos are implemented with astro-swiper:

Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Full Astro Code
Slides Per View Auto Demo
Demo from SwiperJS
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Full Astro Code
Scroll Container Demo
Vertical Scroll Demo from SwiperJS
Slide 3

Slide 4

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In luctus, ex eu sagittis faucibus, ligula ipsum sagittis magna, et imperdiet dolor lectus eu libero. Vestibulum venenatis eget turpis sed faucibus. Maecenas in ullamcorper orci, eu ullamcorper sem. Etiam elit ante, luctus non ante sit amet, sodales vulputate odio. Aenean tristique nisl tellus, sit amet fringilla nisl volutpat cursus. Quisque dignissim lectus ac nunc consectetur mattis. Proin vel hendrerit ipsum, et lobortis dolor. Vestibulum convallis, nibh et tincidunt tristique, nisl risus facilisis lectus, ut interdum orci nisl ac nunc. Cras et aliquam felis. Quisque vel ipsum at elit sodales posuere eget non est. Fusce convallis vestibulum dolor non volutpat. Vivamus vestibulum quam ut ultricies pretium.

Suspendisse rhoncus fringilla nisl. Mauris eget lorem ac urna consectetur convallis non vel mi. Donec libero dolor, volutpat ut urna sit amet, aliquet molestie purus. Phasellus faucibus, leo vel scelerisque lobortis, ipsum leo sollicitudin metus, eget sagittis ante orci eu ipsum. Nulla ac mauris eu risus sagittis scelerisque iaculis bibendum mauris. Cras ut egestas orci. Cras odio risus, sagittis ut nunc vitae, aliquam consectetur purus. Vivamus ornare nunc vel tellus facilisis, quis dictum elit tincidunt. Donec accumsan nisi at laoreet sodales. Cras at ullamcorper massa. Maecenas at facilisis ex. Nam mollis dignissim purus id efficitur.

Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Full Astro Code
Slides Per Group Skip Demo
Demo from SwiperJS
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4

Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Subtitle

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam dictum mattis velit, sit amet faucibus felis iaculis nec. Nulla laoreet justo vitae porttitor porttitor. Suspendisse in sem justo.

Slide 4
Subtitle

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam dictum mattis velit, sit amet faucibus felis iaculis nec. Nulla laoreet justo vitae porttitor porttitor. Suspendisse in sem justo.

Slide 5
Subtitle

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam dictum mattis velit, sit amet faucibus felis iaculis nec. Nulla laoreet justo vitae porttitor porttitor. Suspendisse in sem justo.

Full Astro Code
Responsive Breakpoints Demo
Demo from SwiperJS
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Full Astro Code
Zoom Demo
Double-click on the image to zoom in Demo from SwiperJS
DemoSlideableMenu Demo

WORK IN PROGRESS
Full Astro Code
Change Direction Demo
Resize to dynamically change the swiper's direction. Demo from SwiperJS
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9
Slide 3
Slide 4
Slide 5
Slide 6
Slide 7
Slide 8
Slide 9

Help needed?

Do you need help to integrate astro-swiper in your astro template / component? I’ll be happy to help!

  • mention me with @pascal-brand38 in an issue on your own github repo
  • or fill a GitHub issue in astro-swiper github

Support us

Let’s star the project as you like it.