Carousel.vue 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. <img :src="banner.pictureUrl">
  7. </div>
  8. </div>
  9. <div class="swiper-pagination swiper-pagination-bullets"></div>
  10. <div class="swiper-button-prev"><i class="iconfont icon-arrow-left"></i></div>
  11. <div class="swiper-button-next"><i class="iconfont icon-arrow-right"></i></div>
  12. </div>
  13. </div>
  14. </template>
  15. <script>
  16. export default {
  17. name: 'carousel',
  18. data () {
  19. return {
  20. activeSlide: 0,
  21. swiperOption: {
  22. autoplay: 5000,
  23. initialSlide: 1,
  24. loop: true,
  25. effect: 'fade',
  26. lazyLoading: true,
  27. pagination: '.swiper-pagination',
  28. paginationClickable: true,
  29. paginationElement: 'li',
  30. prevButton: '.swiper-button-prev',
  31. nextButton: '.swiper-button-next'
  32. }
  33. // banners: {}
  34. }
  35. },
  36. // mounted () {
  37. // this.$http.get('/api/carousel/home%20page%20banner')
  38. // .then(response => {
  39. // this.banners = response.data
  40. // this.x++
  41. // })
  42. // }
  43. computed: {
  44. banners () {
  45. return this.$store.state.carousel.banners.data
  46. }
  47. }
  48. }
  49. </script>
  50. <style lang="scss" scoped>
  51. @import '~assets/scss/variables';
  52. $carousel_width: 668px;
  53. $carousel_height: 358px;
  54. .carousel {
  55. width: $carousel_width;
  56. height: $carousel_height;
  57. transition: background-color .3s;
  58. position: relative;
  59. overflow: hidden;
  60. .swiper-wrapper {
  61. .swiper-slide {
  62. img {
  63. display: block;
  64. width: $carousel_width;
  65. height: $carousel_height;
  66. }
  67. }
  68. }
  69. }
  70. </style>