Carousel.vue 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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.hrefUrl" target="_blank">
  7. <img :src="banner.pictureUrl">
  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. export default {
  19. name: 'carousel',
  20. data () {
  21. return {
  22. activeSlide: 0,
  23. swiperOption: {
  24. autoplay: 5000,
  25. initialSlide: 0,
  26. loop: true,
  27. effect: 'fade',
  28. lazyLoading: true,
  29. // 解决点击分页器后图片就不能轮播的问题
  30. autoplayDisableOnInteraction: false,
  31. pagination: '.swiper-pagination',
  32. paginationClickable: true,
  33. paginationElement: 'li',
  34. prevButton: '.swiper-button-prev',
  35. nextButton: '.swiper-button-next'
  36. }
  37. // banners: {}
  38. }
  39. },
  40. // mounted () {
  41. // this.$http.get('/api/carousel/home%20page%20banner')
  42. // .then(response => {
  43. // this.banners = response.data
  44. // this.x++
  45. // })
  46. // }
  47. computed: {
  48. banners () {
  49. if (this.$store.state.carousel.banners) {
  50. let banner = this.$store.state.carousel.banners.data.slice()
  51. banner.sort(function (a, b) {
  52. return a.orderNumber - b.orderNumber
  53. })
  54. return banner
  55. } else {
  56. return ''
  57. }
  58. }
  59. }
  60. }
  61. </script>
  62. <style lang="scss" scoped>
  63. @import '~assets/scss/variables';
  64. $carousel_width: 668px;
  65. $carousel_height: 358px;
  66. .carousel {
  67. width: $carousel_width;
  68. height: $carousel_height;
  69. transition: background-color .3s;
  70. position: relative;
  71. overflow: hidden;
  72. .swiper-wrapper {
  73. .swiper-slide {
  74. img {
  75. display: block;
  76. width: $carousel_width;
  77. height: $carousel_height;
  78. }
  79. }
  80. }
  81. }
  82. </style>