{"id":27787,"date":"2022-03-24T19:51:57","date_gmt":"2022-03-24T19:51:57","guid":{"rendered":"http:\/\/three-ways-to-implement-a-carousel-in-nuxtjs"},"modified":"2025-10-30T10:41:18","modified_gmt":"2025-10-30T17:41:18","slug":"three-ways-to-implement-a-carousel-in-nuxtjs","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/","title":{"rendered":"NuxtJS Carousel | How to Implement a Carousel in NuxtJS"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p>\nCarousels, also known as image sliders or slideshows, play a vital role in enhancing the user interface of websites. They allow multiple pieces of content to be displayed in a limited space, typically cycling through images, text, or other HTML elements.\n<\/p>\n<p>\nNuxt.js is a powerful and versatile framework that provides various ways to integrate carousels into your websites. While its main strength lies in crafting Vue.js applications, it offers flexibility in the components and modules you can use. \n<\/p>\n<p>This article will explore three ways to implement a NuxtJS carousel. While you can get your images from any source, for this tutorial, you will store and deliver your images using Cloudinary. So to learn how to set up a Nuxt carousel slider here you aren\u2019t required to use Cloudinary, but it makes it easier when you handle your images in Cloudinary. If you\u2019re not using Cloudinary, you can sign up for free for life.<\/p>\n<p>NuxtJS is an open-source framework that enhances the capabilities of VueJS with features such as fast server-side rendering, pre-configurations, and a large ecosystem of modules. All these provide an excellent developer experience.<\/p>\n<h2>CodeSandbox and GitHub repo<\/h2>\n<p>Click the link in the CodeSandbox below to view a complete demo of this article:<\/p>\n<p><a href=\"https:\/\/codesandbox.io\/embed\/nuxt-image-carousel-iu2lsp?fontsize=14&amp;hidenavigation=1&amp;theme=dark\">https:\/\/codesandbox.io\/embed\/nuxt-image-carousel-iu2lsp?fontsize=14&amp;hidenavigation=1&amp;theme=dark<\/a><\/p>\n<\/div>\n\n\n  <div class=\"wp-block-cloudinary-code-sandbox \">\n    <iframe\n      src=\"https:\/\/codesandbox.io\/embed\/nuxt-image-carousel-iu2lsp?theme=dark&amp;codemirror=1&amp;highlights=&amp;editorsize=50&amp;fontsize=14&amp;expanddevtools=0&amp;hidedevtools=0&amp;eslint=0&amp;forcerefresh=0&amp;hidenavigation=0&amp;initialpath=%2F&amp;module=&amp;moduleview=0&amp;previewwindow=&amp;view=&amp;runonclick=1\"\n      height=\"500\"\n      style=\"width: 100%;\"\n      title=\"nuxt-image-carousel-iu2lsp\"\n      loading=\"lazy\"\n      allow=\"accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking\"\n      sandbox=\"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts\"\n    ><\/iframe>\n  <\/div>\n\n\n<div class=\"wp-block-cloudinary-markdown \"><p>To view its source code on GitHub, click <a href=\"https:\/\/github.com\/dpkreativ\/nuxt-image-carousel\">here<\/a>.<\/p>\n<h2>Prerequisites<\/h2>\n<p>To understand the concepts presented in this article, a good knowledge of JavaScript and Vuejs is required. Experience with NuxtJS is not strictly required, but it will be preferred. <a href=\"https:\/\/cloudinary.com\/users\/register\/free\">Create a free-for-life account at Cloudinary<\/a> to store, manipulate and deliver your images.<\/p>\n<h2>Setting Up the Nuxt Carousel Slider Project<\/h2>\n<p>To create a new project, navigate to your preferred folder and run the code below in your terminal:<\/p>\n<pre><code>npx create-nuxt-app nuxt-image-carousel\n<\/code><\/pre>\n<p>The terminal will present you with a series of prompts. Follow the recommended options below:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/c_limit,w_2000\/f_auto\/q_auto\/media_jams\/s_0154AB9652C28E4E24FB96B78D4CEAF5BD8A4BBF8C8411FA200553BEF0948D4F_1646797356648_Screenshot+2022-03-09+040749.png\" alt=\"Screenshot of Nuxt carousel slider set up prompts\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"1046\" height=\"302\"\/><\/p>\n<p>On successful setup, open the project in your preferred code editor, and run the terminal command below:<\/p>\n<pre><code> yarn dev\n<\/code><\/pre>\n<p>This will serve the project with a hot reload development server on localhost:3000 accessible on your browser.<\/p>\n<h2>NuxtJS Carousel Example 1: Bootstrap Vue<\/h2>\n<p><a href=\"https:\/\/bootstrap-vue.org\/\">Bootstra<\/a><a href=\"http:\/\/\">p<\/a> <a href=\"https:\/\/bootstrap-vue.org\/\">Vue<\/a> is a component library based on the popular Bootstrap framework, optimized for Vue.js websites and apps.<\/p>\n<p><strong>Installation and setup<\/strong>\nIn your project\u2019s terminal, install <code>bootstrap-vue<\/code> by running the command below:<\/p>\n<pre><code>yarn add bootstrap-vue\n<\/code><\/pre>\n<p>In your <code>nuxt.config.js<\/code> file, add <code>bootstrap-vue<\/code> to the modules section:<\/p>\n<pre><code>\/\/ nuxt.config.js\nexport default {\n  \/\/ Modules: https:\/\/go.nuxtjs.dev\/config-modules\n  modules: [\n    'bootstrap-vue\/nuxt'\n  ]\n}\n<\/code><\/pre>\n<p>This will give you access to <code>bootstrap.css<\/code> and <code>bootstrap-vue.css<\/code><\/p>\n<p><strong>Implementation<\/strong>\nNavigate to your <code>components\/<\/code> folder, create a <code>FirstDemo\/<\/code> folder with an <code>index.vue<\/code> file having the following content.<\/p>\n<pre><code>&lt;template&gt;\n  &lt;div style=&quot;width: 100%; max-width: 800px; margin: 20px auto&quot;&gt;\n    &lt;h1&gt;First Demo - Bootstrap Vue&lt;\/h1&gt;\n    &lt;b-carousel\n      :interval=&quot;0&quot; controls indicators img-width=&quot;1024&quot;\n      img-height=&quot;480&quot; background=&quot;#ababab&quot;\n    &gt;\n      &lt;b-carousel-slide\n        img-src=&quot;https:\/\/res.cloudinary.com\/dpkreativ\/image\/upload\/b_auto,c_mpad,h_480,w_1024\/v1646483551\/wallpapers\/car.jpg&quot;\n      &gt;&lt;\/b-carousel-slide&gt;\n      &lt;b-carousel-slide\n        img-src=&quot;https:\/\/res.cloudinary.com\/dpkreativ\/image\/upload\/b_auto,c_mpad,h_480,w_1024\/v1646695756\/wallpapers\/laptop.jpg&quot;\n      &gt;&lt;\/b-carousel-slide&gt;\n      &lt;b-carousel-slide\n        img-src=&quot;https:\/\/res.cloudinary.com\/dpkreativ\/image\/upload\/b_auto,c_mpad,h_480,w_1024\/v1646696065\/wallpapers\/conversation.jpg&quot;\n      &gt;&lt;\/b-carousel-slide&gt;\n    &lt;\/b-carousel&gt;\n  &lt;\/div&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nexport default {\n  name: 'FirstDemo',\n}\n&lt;\/script&gt;\n<\/code><\/pre>\n<p>In the code above:<\/p>\n<ul>\n<li>You created a <code>&lt;div&gt;<\/code> with a max width of <code>800px<\/code> and <code>margin: 20px auto<\/code> to space it out.<\/li>\n<li>\n<code>&lt;b-carousel&gt;<\/code> is the carousel component provided by <code>bootstrap-vue<\/code>. It wraps the carousel slides and provides custom attributes for setting up the carousel.<\/li>\n<li>You set <code>:interval<\/code> to <code>0<\/code>, added <code>controls<\/code>, and specified an image width and height. These settings will be applied to each slide in the carousel automatically.<\/li>\n<li>\n<code>&lt;b-carousel-slide&gt;<\/code> represents each individual slide. It contains an <code>img-src<\/code> with a Cloudinary image URL. In each image URL, you added <code>b_auto,c_mpad,h_480,w_1024<\/code> Cloudinary transformations to programmatically set the size of the image to match the carousel.<\/li>\n<\/ul>\n<p>To view your carousel, navigate to <code>pages\/index.vue<\/code> and update <code>&lt;template&gt;<\/code> with the code below:<\/p>\n<pre><code>&lt;template&gt;\n  &lt;div&gt;\n    &lt;FirstDemo \/&gt;\n  &lt;\/div&gt;\n&lt;\/template&gt;\n<\/code><\/pre>\n<p>Here\u2019s the result:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/c_limit,w_2000\/f_auto\/q_auto\/media_jams\/s_0154AB9652C28E4E24FB96B78D4CEAF5BD8A4BBF8C8411FA200553BEF0948D4F_1646697890240_image.png\" alt=\"Screenshot of Nuxt carousel slider using Bootstrap showing an photo of a car driving in the mountains\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"1002\" height=\"549\"\/><\/p>\n<p>Go through their <a href=\"https:\/\/bootstrap-vue.org\/docs\/components\/carousel\">official documentation<\/a> for more information on how you can implement carousels with Bootstrap Vue.<\/p>\n<h2>NuxtJS Carousel Example 2: Vue Awesome Swiper<\/h2>\n<p><a href=\"https:\/\/github.surmon.me\/vue-awesome-swiper\/\">Vue Awesome Swiper<\/a> is a carousel component based on <a href=\"https:\/\/swiperjs.com\/\">Swiper.js<\/a> written specifically for Vue.js. It has inbuilt support for desktop and mobile <a href=\"https:\/\/cloudinary.com\/glossary\/spa-single-page-application\">Single Page Applications<\/a> (SPAs) and Server-side rendering (SSR).<\/p>\n<p><strong>Installation and setup<\/strong>\nIn your project\u2019s terminal, run the command below to install Vue Awesome Swiper:<\/p>\n<pre><code>yarn add swiper@5.x vue-awesome-swiper\n<\/code><\/pre>\n<p>This also installs <code>swiper5<\/code>, the version of Swiper.js compatible with <code>vue-awesome-swiper<\/code>.<\/p>\n<p>In your <code>nuxt.config.js<\/code> file, update <code>css: []<\/code> with the code below:<\/p>\n<pre><code>\/\/ nuxt.config.js\nexport default {\n  css: [\n    'swiper\/css\/swiper.css'\n  ]\n}\n<\/code><\/pre>\n<p>This will make Swiper\u2019s CSS file available globally.<\/p>\n<p><strong>Implementation<\/strong>\nNavigate to your <code>components\/<\/code> folder and create a <code>SecondDemo\/<\/code> folder with an <code>index.vue<\/code> file containing the code below:<\/p>\n<pre><code>&lt;template&gt;\n  &lt;div style=&quot;width: 100%; max-width: 800px; margin: 20px auto&quot;&gt;\n    &lt;h1&gt;Second Demo - Vue Awesome Swiper&lt;\/h1&gt;\n  &lt;\/div&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nimport { Swiper, SwiperSlide } from 'vue-awesome-swiper'\n\nexport default {\n  name: 'SecondDemo',\n  components: {\n    Swiper,\n    SwiperSlide,\n  },\n\n  data() {\n    return {\n      swiperOption: {\n        slidesPerView: 1,\n        spaceBetween: 20,\n        loop: true,\n        pagination: {\n          el: '.swiper-pagination',\n          clickable: true,\n        },\n        navigation: {\n          nextEl: '.swiper-button-next',\n          prevEl: '.swiper-button-prev',\n        },\n      },\n    }\n  },\n}\n&lt;\/script&gt;\n<\/code><\/pre>\n<p>In the code above:<\/p>\n<ul>\n<li>Your <code>&lt;template&gt;<\/code> has some boilerplate code to identify the demo you\u2019re currently working on.<\/li>\n<li>You imported Vue Awesome Swiper\u2019s default components; <code>Swiper<\/code> (the carousel wrapper) and <code>SwiperSlide<\/code> (the carousel items).<\/li>\n<li>\n<code>data()<\/code> contains some component APIs you can apply to your carousel. You specified that the carousel should show only one slide per view, have pagination, and be on an infinite loop.<\/li>\n<\/ul>\n<p>Now, update <code>&lt;template&gt;<\/code> portion above with the code below to display the slider on the browser:<\/p>\n<pre><code>&lt;template&gt;\n  &lt;div style=&quot;width: 100%; max-width: 800px; margin: 20px auto&quot;&gt;\n    &lt;h1&gt;Second Demo - Vue Awesome Swiper&lt;\/h1&gt;\n    &lt;swiper class=&quot;swiper&quot; :options=&quot;swiperOption&quot;&gt;\n      &lt;swiper-slide&gt;\n        &lt;img\n          src=&quot;https:\/\/res.cloudinary.com\/dpkreativ\/image\/upload\/v1646483551\/wallpapers\/car.jpg&quot;\n          alt=&quot;car&quot;\n        \/&gt;\n      &lt;\/swiper-slide&gt;\n      &lt;swiper-slide&gt;\n        &lt;img\n          src=&quot;https:\/\/res.cloudinary.com\/dpkreativ\/image\/upload\/v1646695756\/wallpapers\/laptop.jpg&quot;\n          alt=&quot;laptop&quot;\n        \/&gt;\n      &lt;\/swiper-slide&gt;\n      &lt;swiper-slide&gt;\n        &lt;img\n          src=&quot;https:\/\/res.cloudinary.com\/dpkreativ\/image\/upload\/v1646749176\/wallpapers\/photo-1646727002357-073c182015e0_qv2xlg.jpg&quot;\n          alt=&quot;mist&quot;\n        \/&gt;\n      &lt;\/swiper-slide&gt;\n      &lt;div class=&quot;swiper-pagination&quot; slot=&quot;pagination&quot;&gt;&lt;\/div&gt;\n      &lt;div class=&quot;swiper-button-prev&quot; slot=&quot;button-prev&quot;&gt;&lt;\/div&gt;\n      &lt;div class=&quot;swiper-button-next&quot; slot=&quot;button-next&quot;&gt;&lt;\/div&gt;\n    &lt;\/swiper&gt;\n  &lt;\/div&gt;\n&lt;\/template&gt;\n<\/code><\/pre>\n<p>In this code:<\/p>\n<ul>\n<li>You wrapped your carousel with a <code>&lt;swiper&gt;<\/code> component. <code>:options<\/code> takes in your specified component APIs from <code>sliderOptions<\/code> and applies it to the carousel<\/li>\n<li>Your <code>&lt;swiper&gt;<\/code> component contains a few <code>&lt;swiper-slide&gt;<\/code> elements, each of which contains an image for your carousel.<\/li>\n<\/ul>\n<p>To view your carousel, navigate to <code>pages\/index.vue<\/code> and update <code>&lt;template&gt;<\/code> with the code below:<\/p>\n<pre><code>&lt;template&gt;\n  &lt;div&gt;\n    &lt;SecondDemo \/&gt;\n  &lt;\/div&gt;\n&lt;\/template&gt;\n<\/code><\/pre>\n<p>Here\u2019s the result:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/c_limit,w_2000\/f_auto\/q_auto\/media_jams\/s_0154AB9652C28E4E24FB96B78D4CEAF5BD8A4BBF8C8411FA200553BEF0948D4F_1646798691781_image.png\" alt=\"Screenshot of Nuxt carousel slider using Vue awesome slider showing a photo of a person\u2019s hand working at a desk surrounded by paint, paper, and a computer\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"833\" height=\"596\"\/><\/p>\n<p>To explore Vue Awesome Swiper in-depth, check out its <a href=\"https:\/\/github.com\/surmon-china\/vue-awesome-swiper\">official documentation<\/a>.<\/p>\n<h2>NuxtJS Carousel Example 3:  Vue Slick Carousel<\/h2>\n<p>\n<a href=\"https:\/\/gs-shop.github.io\/vue-slick-carousel\/\">Vue Slick Carousel<\/a> is a Vuejs implementation of the original Slick Carousel. It comes with built-in support for SSR and offers a variety of functions like lazy loading, variable width, and vertical sliders. However, it&#8217;s worth noting that the slick carousel is based on jQuery. While this doesn&#8217;t present an immediate issue, considering that VueJS is declarative, you might encounter challenges or prefer another solution that better aligns with Vue&#8217;s declarative nature.\n<\/p>\n<p><strong>Installation and setup<\/strong>\nTo install Vue Slick Carousel, run the command below in your terminal:<\/p>\n<pre><code>yarn add vue-slick-carousel\n<\/code><\/pre>\n<p>In your <code>nuxt.config.js<\/code> file, update <code>css: []<\/code> with the code below:<\/p>\n<pre><code>\/\/ nuxt.config.js\nexport default {\n  css: [\n    'vue-slick-carousel\/dist\/vue-slick-carousel.css',\n    'vue-slick-carousel\/dist\/vue-slick-carousel-theme.css',\n  ]\n}\n<\/code><\/pre>\n<p>This will add the CSS files for Vue Slick Carousel globally.<\/p>\n<p><strong>Implementation<\/strong>\nNavigate to your <code>components\/<\/code> folder and create a <code>ThirdDemo\/<\/code> folder with an <code>index.vue<\/code> file containing the code below:<\/p>\n<pre><code>&lt;template&gt;\n  &lt;div style=&quot;width: 100%; max-width: 800px; margin: 20px auto&quot;&gt;\n    &lt;h1&gt;Third Demo - Vue Slick Carousel&lt;\/h1&gt;\n  &lt;\/div&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nimport VueSlickCarousel from 'vue-slick-carousel'\nexport default {\n  name: 'ThirdDemo',\n  components: {\n    VueSlickCarousel,\n  },\n  data() {\n    return {\n      slickOptions: {\n        slidesToShow: 1,\n      },\n    }\n  },\n}\n&lt;\/script&gt;\n\n&lt;style&gt;\n.slick-next:before,\n.slick-prev:before {\n  color: black;\n}\n&lt;\/style&gt;\n<\/code><\/pre>\n<p>In the code above:<\/p>\n<ul>\n<li>You imported <code>VueSlickCarousel<\/code> and made it available as a component.<\/li>\n<li>You set <code>slickOptions<\/code> to contain some component APIs for your carousel.<\/li>\n<li>You set the styling for the <code>next<\/code> and <code>prev<\/code> buttons on your carousel.<\/li>\n<\/ul>\n<p>To see how this implementation works on your browser, update <code>&lt;template&gt;<\/code> portion above with the code below:<\/p>\n<pre><code>&lt;template&gt;\n  &lt;div style=&quot;width: 100%; max-width: 800px; margin: 20px auto&quot;&gt;\n    &lt;h1&gt;Third Demo - Vue Slick Carousel&lt;\/h1&gt;\n    &lt;!-- Implementation --&gt;\n    &lt;div&gt;\n      &lt;VueSlickCarousel v-bind=&quot;slickOptions&quot;&gt;\n        &lt;div&gt;\n          &lt;img\n            src=&quot;https:\/\/res.cloudinary.com\/dpkreativ\/image\/upload\/v1646483551\/wallpapers\/car.jpg&quot;\n            alt=&quot;car&quot;\n          \/&gt;\n        &lt;\/div&gt;\n        &lt;div&gt;\n          &lt;img\n            src=&quot;https:\/\/res.cloudinary.com\/dpkreativ\/image\/upload\/v1646695756\/wallpapers\/laptop.jpg&quot;\n            alt=&quot;laptop&quot;\n          \/&gt;\n        &lt;\/div&gt;\n        &lt;div&gt;\n          &lt;img\n            src=&quot;https:\/\/res.cloudinary.com\/dpkreativ\/image\/upload\/v1646749176\/wallpapers\/photo-1646727002357-073c182015e0_qv2xlg.jpg&quot;\n            alt=&quot;mist&quot;\n          \/&gt;\n        &lt;\/div&gt;\n      &lt;\/VueSlickCarousel&gt;\n    &lt;\/div&gt;\n  &lt;\/div&gt;\n&lt;\/template&gt;\n<\/code><\/pre>\n<p>In this code, <code>&lt;VueSlickCarousel&gt;<\/code> contains <code>v-bind=``&quot;``slickOptions``&quot;<\/code> as its parameter, which makes use of the component APIs in your <code>&lt;script&gt;<\/code>.<\/p>\n<p>To view your carousel, navigate to <code>pages\/index.vue<\/code> and update <code>&lt;template&gt;<\/code> with the code below:<\/p>\n<pre><code>&lt;template&gt;\n  &lt;div&gt;\n    &lt;SecondDemo \/&gt;\n  &lt;\/div&gt;\n&lt;\/template&gt;\n<\/code><\/pre>\n<p>Here\u2019s the result:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/c_limit,w_2000\/f_auto\/q_auto\/media_jams\/s_0154AB9652C28E4E24FB96B78D4CEAF5BD8A4BBF8C8411FA200553BEF0948D4F_1646799651740_image.png\" alt=\"Screenshot of Nuxt carousel slider using Vue Slick showing an photo of a car driving in the mountains\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"836\" height=\"591\"\/><\/p>\n<p>You can explore all the component APIs available in Vue Slick Carousel from its <a href=\"https:\/\/gs-shop.github.io\/vue-slick-carousel\/#\/api\">documentation<\/a>.<\/p>\n<p>\nFor developers seeking a quick solution, there are pre-built sandboxes available. One option is the <code>nuxt-vue-carousel-example<\/code> sandbox on CodeSandbox. This pre-built solution can be used as a template to jumpstart your development. \n<\/p>\n<h2>Conclusion<\/h2>\n<p>In this article, you discovered three ways to implement a carousel in your Nuxt project. You can further explore various customizations available to each carousel.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":27788,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[134,370,372,371],"class_list":["post-27787","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-guest-post","tag-image","tag-nuxtjs","tag-under-review"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.6 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>NuxtJS Carousel | How to Implement a Carousel in NuxtJS<\/title>\n<meta name=\"description\" content=\"Learn 3 different ways to set up a Nuxt carousel slider using Cloudinary for free.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"NuxtJS Carousel | How to Implement a Carousel in NuxtJS\" \/>\n<meta property=\"og:description\" content=\"Learn 3 different ways to set up a Nuxt carousel slider using Cloudinary for free.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-03-24T19:51:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-30T17:41:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681926279\/Web_Assets\/blog\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987.png?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"840\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"NuxtJS Carousel | How to Implement a Carousel in NuxtJS\",\"datePublished\":\"2022-03-24T19:51:57+00:00\",\"dateModified\":\"2025-10-30T17:41:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/\"},\"wordCount\":9,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681926279\/Web_Assets\/blog\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987.png?_i=AA\",\"keywords\":[\"Guest Post\",\"Image\",\"NuxtJS\",\"Under Review\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2022\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/\",\"url\":\"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/\",\"name\":\"NuxtJS Carousel | How to Implement a Carousel in NuxtJS\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681926279\/Web_Assets\/blog\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987.png?_i=AA\",\"datePublished\":\"2022-03-24T19:51:57+00:00\",\"dateModified\":\"2025-10-30T17:41:18+00:00\",\"description\":\"Learn 3 different ways to set up a Nuxt carousel slider using Cloudinary for free.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681926279\/Web_Assets\/blog\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681926279\/Web_Assets\/blog\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987.png?_i=AA\",\"width\":1600,\"height\":840,\"caption\":\"Image showing NuxtJS logo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"NuxtJS Carousel | How to Implement a Carousel in NuxtJS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"name\":\"Cloudinary Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cloudinary.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\",\"name\":\"Cloudinary Blog\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"width\":312,\"height\":60,\"caption\":\"Cloudinary Blog\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"NuxtJS Carousel | How to Implement a Carousel in NuxtJS","description":"Learn 3 different ways to set up a Nuxt carousel slider using Cloudinary for free.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/","og_locale":"en_US","og_type":"article","og_title":"NuxtJS Carousel | How to Implement a Carousel in NuxtJS","og_description":"Learn 3 different ways to set up a Nuxt carousel slider using Cloudinary for free.","og_url":"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/","og_site_name":"Cloudinary Blog","article_published_time":"2022-03-24T19:51:57+00:00","article_modified_time":"2025-10-30T17:41:18+00:00","og_image":[{"width":1600,"height":840,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681926279\/Web_Assets\/blog\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987.png?_i=AA","type":"image\/png"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/"},"author":{"name":"","@id":""},"headline":"NuxtJS Carousel | How to Implement a Carousel in NuxtJS","datePublished":"2022-03-24T19:51:57+00:00","dateModified":"2025-10-30T17:41:18+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/"},"wordCount":9,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681926279\/Web_Assets\/blog\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987.png?_i=AA","keywords":["Guest Post","Image","NuxtJS","Under Review"],"inLanguage":"en-US","copyrightYear":"2022","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/","url":"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/","name":"NuxtJS Carousel | How to Implement a Carousel in NuxtJS","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681926279\/Web_Assets\/blog\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987.png?_i=AA","datePublished":"2022-03-24T19:51:57+00:00","dateModified":"2025-10-30T17:41:18+00:00","description":"Learn 3 different ways to set up a Nuxt carousel slider using Cloudinary for free.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681926279\/Web_Assets\/blog\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681926279\/Web_Assets\/blog\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987.png?_i=AA","width":1600,"height":840,"caption":"Image showing NuxtJS logo"},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/guest_post\/three-ways-to-implement-a-carousel-in-nuxtjs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"NuxtJS Carousel | How to Implement a Carousel in NuxtJS"}]},{"@type":"WebSite","@id":"https:\/\/cloudinary.com\/blog\/#website","url":"https:\/\/cloudinary.com\/blog\/","name":"Cloudinary Blog","description":"","publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudinary.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudinary.com\/blog\/#organization","name":"Cloudinary Blog","url":"https:\/\/cloudinary.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","width":312,"height":60,"caption":"Cloudinary Blog"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":""}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681926279\/Web_Assets\/blog\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987\/b31e4837aa39a106d5f2b9420db48db2f6a4ff00-1600x840-1_2778817987.png?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/27787","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=27787"}],"version-history":[{"count":6,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/27787\/revisions"}],"predecessor-version":[{"id":39032,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/27787\/revisions\/39032"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/27788"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=27787"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=27787"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=27787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}