Carousel.vue 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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: 1,
  26. loop: true,
  27. effect: 'fade',
  28. lazyLoading: true,
  29. pagination: '.swiper-pagination',
  30. paginationClickable: true,
  31. paginationElement: 'li',
  32. prevButton: '.swiper-button-prev',
  33. nextButton: '.swiper-button-next'
  34. }
  35. // banners: {}
  36. }
  37. },
  38. // mounted () {
  39. // this.$http.get('/api/carousel/home%20page%20banner')
  40. // .then(response => {
  41. // this.banners = response.data
  42. // this.x++
  43. // })
  44. // }
  45. computed: {
  46. banners () {
  47. return this.$store.state.carousel.banners.data
  48. }
  49. }
  50. }
  51. </script>
  52. <style lang="scss" scoped>
  53. @import '~assets/scss/variables';
  54. $carousel_width: 668px;
  55. $carousel_height: 358px;
  56. .carousel {
  57. width: $carousel_width;
  58. height: $carousel_height;
  59. transition: background-color .3s;
  60. position: relative;
  61. overflow: hidden;
  62. .swiper-wrapper {
  63. .swiper-slide {
  64. img {
  65. display: block;
  66. width: $carousel_width;
  67. height: $carousel_height;
  68. }
  69. }
  70. }
  71. }
  72. </style>