Vue系列——vue2封装swiper轮播组件

快来打我* 2022-05-21 02:09 473阅读 0赞

#

新建了一个子组件叫做Banner.vue,这个子组件自然就是指轮播图组件swiper(感兴趣的可以去官网看看)。

第一步:安装swiper。

npm install --save swiper

第二步:写template。

轮播图是一个列表,所以这里使用到了v-for来遍历,轮播的部分是swiper-slide元素。我把图片路径绑定到了style属性上面。











  1. </div>
  2. <div class="swiper-pagination swiper-pagination-white"></div>
  3. </div>
  4. <div class="swiper-container">
  5. <div class="swiper-wrapper">
  6. <div class="swiper-slide" v-for="item in listImg">
  7. <img :src="item.url"/>
  8. <!--<img src="../../assets/01.jpg"/>-->
  9. </div>
  10. </div>
  11. <div class="swiper-pagination swiper-pagination-white"></div>
  12. </div>

#

第三步:编写Banner.vue的JavaScript代码。

根据swiper的官方教程,我们需要实例化swiper。
1、导入swiper;
2、导入swiper的css;
3、通过获取图片数据listImg;
4、mounted类似react中的componentDidMount方法,实例化swiper必须等到dom渲染完成才能操作。

  1. <script>
  2. import Swiper from 'swiper';
  3. import 'swiper/dist/css/swiper.min.css';
  4. export default {
  5. data(){
  6. return {
  7. //图片路径
  8. listImg:[
  9. {url:'../../../static/01.jpg'},
  10. {url:'../../../static/02.jpg'},
  11. {url:'../../../static/03.jpg'}
  12. ]
  13. }
  14. },
  15. mounted() {
  16. console.log('mounted', this)
  17. var mySwiper = new Swiper ('.swiper-container', {
  18. loop: true,
  19. pagination: {
  20. el: '.swiper-pagination',
  21. },
  22. // 如果需要前进后退按钮
  23. navigation: {
  24. nextEl: '.swiper-button-next',
  25. prevEl: '.swiper-button-prev',
  26. },
  27. autoplay: {
  28. disableOnInteraction: false,
  29. },
  30. })
  31. }
  32. }
  33. </script>

第四步:写css样式

  1. <style>
  2. .swiper-container {width: 100%; height: 10rem;}
  3. .swiper-wrapper {width: 100%; height: 100%; }
  4. .swiper-slide { width: 100%; height: 100%;}
  5. .swiper-pagination-bullet { width:0.833rem;
  6. height: 0.833rem;display: inline-block; background: #7c5e53; }
  7. .swiper-slide img{width: 100%;height: 100%; }
  8. </style>

完整代码:

  1. <template>
  2. <div>
  3. <!--轮播图---写法-->
  4. <div class="swiper-container">
  5. <div class="swiper-wrapper">
  6. <div class="swiper-slide" v-for="item in listImg">
  7. <img :src="item.url"/>
  8. <!--<img src="../../assets/01.jpg"/>-->
  9. </div>
  10. </div>
  11. <div class="swiper-pagination swiper-pagination-white"></div>
  12. </div>
  13. </div>
  14. </template>
  15. <script>
  16. import Swiper from 'swiper';
  17. import 'swiper/dist/css/swiper.min.css';
  18. export default {
  19. data(){
  20. return {
  21. //图片路径
  22. listImg:[
  23. {url:'../../../static/01.jpg'},
  24. {url:'../../../static/02.jpg'},
  25. {url:'../../../static/03.jpg'}
  26. ]
  27. }
  28. },
  29. mounted() {
  30. console.log('mounted', this)
  31. var mySwiper = new Swiper ('.swiper-container', {
  32. loop: true,
  33. pagination: {
  34. el: '.swiper-pagination',
  35. },
  36. // 如果需要前进后退按钮
  37. navigation: {
  38. nextEl: '.swiper-button-next',
  39. prevEl: '.swiper-button-prev',
  40. },
  41. autoplay: {
  42. disableOnInteraction: false,
  43. },
  44. })
  45. }
  46. }
  47. </script>
  48. <style>
  49. .swiper-container {width: 100%; height: 10rem;}
  50. .swiper-wrapper {width: 100%; height: 100%; }
  51. .swiper-slide { width: 100%; height: 100%;}
  52. .swiper-pagination-bullet { width:0.833rem;
  53. height: 0.833rem;display: inline-block; background: #7c5e53; }
  54. .swiper-slide img{width: 100%;height: 100%; }
  55. </style>

发表评论

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

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

相关阅读

    相关 vue组件

    写轮播组件的思路: 1、确定传入的参数:轮播图的数据(图片地址,跳转href,图片ID,标题等基础数据)、轮询时间 2、写好轮播图的基本样式,父组件传入参数,动态加载进

    相关 Vue——图片组件

    Notices: 这是我一个项目中的一个子组件,要展示的数据、图片地址等的都在父组件data中。所以后面的讲述都是基于从父组件获取的参数进行处理。(如需将这个SlideShow