nuxt3:swiper实现轮播效果

柔光的暖阳◎ 2024-03-27 14:56 200阅读 0赞

一、背景

nuxt3项目使用swiper实现轮播图效果。

二、官网文档

2.1、Swiper CDN

Swiper CDN - Swiper中文网

2.2、使用方法

Swiper使用方法 - Swiper中文网

2.3、基础演示

Swiper演示 - Swiper中文网

2.4、api

中文api - Swiper中文网

三、项目使用

3.1、nuxt.config.ts引入css、js

  1. link: [
  2. { rel: 'stylesheet', type: 'text/css', href: 'https://unpkg.com/swiper@8/swiper-bundle.css'}
  3. ],
  4. script: [
  5. {
  6. type: 'text/javascript',
  7. src: 'https://unpkg.com/swiper@8/swiper-bundle.js'
  8. }
  9. ]

3.2、页面使用

  1. <template>
  2. <div class="container">
  3. <div class="swiper mySwiper">
  4. <div class="swiper-wrapper">
  5. <div class="swiper-slide">snow</div>
  6. <div class="swiper-slide">Slide 1</div>
  7. <div class="swiper-slide">Slide 2</div>
  8. <div class="swiper-slide">Slide 3</div>
  9. <div class="swiper-slide">Slide 4</div>
  10. <div class="swiper-slide">Slide 5</div>
  11. <div class="swiper-slide">Slide 6</div>
  12. <div class="swiper-slide">Slide 7</div>
  13. <div class="swiper-slide">Slide 8</div>
  14. <div class="swiper-slide">Slide 9</div>
  15. <div class="swiper-slide">Slide 10</div>
  16. </div>
  17. <div class="swiper-button-prev"></div>
  18. <div class="swiper-button-next"></div>
  19. </div>
  20. </div>
  21. </template>
  22. <script setup lang="ts">
  23. onMounted(() => {
  24. let swiper = new Swiper(".mySwiper", {
  25. slidesPerView: 5, // 轮播区域展示的数量
  26. spaceBetween: 30,
  27. mousewheel: true,
  28. keyboard: true,
  29. loop: true, // 循环播放
  30. speed: 2500,
  31. autoplay: { // 自动播放
  32. delay: 2500,
  33. disableOnInteraction: false,
  34. },
  35. navigation: {
  36. prevEl: ".swiper-button-prev",
  37. nextEl: ".swiper-button-next",
  38. },
  39. // pagination: {
  40. // el: ".swiper-pagination",
  41. // clickable: true,
  42. // }
  43. });
  44. })
  45. </script>
  46. <style scoped lang="scss">
  47. .container{
  48. .swiper {
  49. width: 500px;
  50. height: 100px;
  51. border: 2px solid #ff0000;
  52. }
  53. .swiper-slide {
  54. text-align: center;
  55. font-size: 18px;
  56. background: #fff;
  57. background: #ccc;
  58. display: -webkit-box;
  59. display: -ms-flexbox;
  60. display: -webkit-flex;
  61. display: flex;
  62. -webkit-box-pack: center;
  63. -ms-flex-pack: center;
  64. -webkit-justify-content: center;
  65. justify-content: center;
  66. -webkit-box-align: center;
  67. -ms-flex-align: center;
  68. -webkit-align-items: center;
  69. align-items: center;
  70. }
  71. .swiper-button-prev{
  72. background: #eee;
  73. width: 30px;
  74. height: 30px;
  75. border-radius: 50%;
  76. }
  77. .swiper-button-next{
  78. background: #eee;
  79. width: 30px;
  80. height: 30px;
  81. border-radius: 50%;
  82. }
  83. .swiper-slide img {
  84. display: block;
  85. width: 100%;
  86. height: 100%;
  87. object-fit: cover;
  88. }
  89. // 去掉左右箭头默认样式
  90. .swiper-button-prev:after{
  91. display: none;
  92. }
  93. .swiper-button-next:after{
  94. display: none;
  95. }
  96. // 定义新的样式
  97. .swiper-button-prev{
  98. width: 35px;
  99. height: 35px;
  100. background: url('~/assets/imgs/nginx.jpg') no-repeat;
  101. bottom: 15px;
  102. }
  103. .swiper-button-next{
  104. width: 35px;
  105. height: 35px;
  106. background:url('~/assets/imgs/nginx.jpg') no-repeat;
  107. bottom: 15px;
  108. }
  109. }
  110. </style>

3.3、效果展示

9ab51e5809a64a1c8030eb17f39c1756.png

四、过程记录

记录一、

再引入swiper时,尝试了npm 包: swiper、vue-awesome-swiper等,尝试在nuxt3里增加plugin的方式引入,都没有成功,个人感觉应该是可以的,可能是我没有尝试对,最后使用了在nuxt.config.ts中引入的方法。

记录二、

在nuxt.config.ts中引入网络上的js、css,可能会加载慢导致页面加载速度也慢,我们可以把js、css放在public目录下,引入本地文件,这样可以加快文件请求速度。

五、欢迎交流指正,关注我,一起学习。

发表评论

表情:
评论列表 (有 0 条评论,200人围观)

还没有评论,来说两句吧...

相关阅读