Carousel.vue 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <template>
  2. <div class="carousel">
  3. <div v-swiper:mySwiper="swiperOption">
  4. <div class="swiper-wrapper">
  5. <div class="swiper-slide" v-for="banner in banners">
  6. <a :href="banner.detailsLink" target="_blank">
  7. <img :src="banner.pictureLink">
  8. </a>
  9. </div>
  10. </div>
  11. <div class="swiper-pagination swiper-pagination-bullets"></div>
  12. <div class="swiper-button-prev"><i class="iconfont icon-arrow-left"></i></div>
  13. <div class="swiper-button-next"><i class="iconfont icon-arrow-right"></i></div>
  14. </div>
  15. </div>
  16. </template>
  17. <script>
  18. import { carousel } from '~utils/mixin'
  19. export default {
  20. name: 'carousel',
  21. data () {
  22. return {
  23. activeSlide: 0
  24. }
  25. },
  26. mixins: [carousel],
  27. computed: {
  28. banners () {
  29. if (this.$store.state.carousel.banners) {
  30. return this.$store.state.carousel.banners.data.data
  31. } else {
  32. return ''
  33. }
  34. },
  35. swiperOption () {
  36. return {
  37. autoplay: 5000,
  38. initialSlide: 0,
  39. loop: true,
  40. effect: this.effect,
  41. lazyLoading: true,
  42. // 解决点击分页器后图片就不能轮播的问题
  43. autoplayDisableOnInteraction: false,
  44. pagination: '.swiper-pagination',
  45. paginationClickable: true,
  46. paginationElement: 'li',
  47. prevButton: '.swiper-button-prev',
  48. nextButton: '.swiper-button-next'
  49. }
  50. }
  51. }
  52. }
  53. </script>
  54. <style lang="scss" scoped>
  55. @import '~assets/scss/variables';
  56. $carousel_width: 955px;
  57. $carousel_height: 400px;
  58. .carousel {
  59. width: $carousel_width;
  60. height: $carousel_height;
  61. transition: background-color .3s;
  62. position: relative;
  63. overflow: hidden;
  64. .swiper-wrapper {
  65. .swiper-slide {
  66. img {
  67. display: block;
  68. width: 955px;
  69. height: $carousel_height;
  70. }
  71. }
  72. }
  73. }
  74. </style>