index.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <template>
  2. <demo-section>
  3. <demo-block :title="$t('basicUsage')">
  4. <van-swipe
  5. :autoplay="3000"
  6. indicator-color="white"
  7. >
  8. <van-swipe-item>1</van-swipe-item>
  9. <van-swipe-item>2</van-swipe-item>
  10. <van-swipe-item>3</van-swipe-item>
  11. <van-swipe-item>4</van-swipe-item>
  12. </van-swipe>
  13. </demo-block>
  14. <demo-block :title="$t('title2')">
  15. <van-swipe :autoplay="3000">
  16. <van-swipe-item
  17. v-for="(image, index) in images"
  18. :key="index"
  19. >
  20. <img v-lazy="image">
  21. </van-swipe-item>
  22. </van-swipe>
  23. </demo-block>
  24. <demo-block :title="$t('title3')">
  25. <van-swipe
  26. indicator-color="white"
  27. @change="onChange"
  28. >
  29. <van-swipe-item>1</van-swipe-item>
  30. <van-swipe-item>2</van-swipe-item>
  31. <van-swipe-item>3</van-swipe-item>
  32. <van-swipe-item>4</van-swipe-item>
  33. </van-swipe>
  34. </demo-block>
  35. <demo-block :title="$t('title4')">
  36. <van-swipe
  37. vertical
  38. :autoplay="3000"
  39. indicator-color="white"
  40. class="demo-swipe--vertical"
  41. >
  42. <van-swipe-item>1</van-swipe-item>
  43. <van-swipe-item>2</van-swipe-item>
  44. <van-swipe-item>3</van-swipe-item>
  45. <van-swipe-item>4</van-swipe-item>
  46. </van-swipe>
  47. </demo-block>
  48. <demo-block :title="$t('title5')">
  49. <van-swipe
  50. :autoplay="3000"
  51. :width="300"
  52. :loop="false"
  53. indicator-color="white"
  54. >
  55. <van-swipe-item>1</van-swipe-item>
  56. <van-swipe-item>2</van-swipe-item>
  57. <van-swipe-item>3</van-swipe-item>
  58. <van-swipe-item>4</van-swipe-item>
  59. </van-swipe>
  60. </demo-block>
  61. <demo-block :title="$t('title6')">
  62. <van-swipe @change="onChange">
  63. <van-swipe-item>1</van-swipe-item>
  64. <van-swipe-item>2</van-swipe-item>
  65. <van-swipe-item>3</van-swipe-item>
  66. <van-swipe-item>4</van-swipe-item>
  67. <div
  68. class="custom-indicator"
  69. slot="indicator"
  70. >
  71. {{ current + 1 }}/4
  72. </div>
  73. </van-swipe>
  74. </demo-block>
  75. </demo-section>
  76. </template>
  77. <script>
  78. export default {
  79. i18n: {
  80. 'zh-CN': {
  81. title2: '图片懒加载',
  82. title3: '监听 change 事件',
  83. title4: '纵向滚动',
  84. title5: '设置滑块大小',
  85. title6: '自定义指示器',
  86. message: '当前 Swipe 索引:'
  87. },
  88. 'en-US': {
  89. title2: 'Image Lazyload',
  90. title3: 'Change Event',
  91. title4: 'Vertical Scrolling',
  92. title5: 'Set Swiper Item Size',
  93. title6: 'Custom indicator',
  94. message: 'Current Swipe index:'
  95. }
  96. },
  97. data() {
  98. return {
  99. current: 0,
  100. images: [
  101. 'https://img.yzcdn.cn/public_files/2017/09/05/3bd347e44233a868c99cf0fe560232be.jpg',
  102. 'https://img.yzcdn.cn/public_files/2017/09/05/c0dab461920687911536621b345a0bc9.jpg',
  103. 'https://img.yzcdn.cn/public_files/2017/09/05/4e3ea0898b1c2c416eec8c11c5360833.jpg',
  104. 'https://img.yzcdn.cn/public_files/2017/09/05/fd08f07665ed67d50e11b32a21ce0682.jpg'
  105. ]
  106. };
  107. },
  108. methods: {
  109. onChange(index) {
  110. this.current = index;
  111. this.$toast(this.$t('message') + index);
  112. }
  113. }
  114. };
  115. </script>
  116. <style lang="less">
  117. @import '../../style/var';
  118. .demo-swipe {
  119. padding-bottom: 30px;
  120. .van-swipe {
  121. cursor: pointer;
  122. &-item {
  123. color: @white;
  124. font-size: 20px;
  125. text-align: center;
  126. line-height: 150px;
  127. &:nth-child(even) {
  128. background-color: #39a9ed;
  129. }
  130. &:nth-child(odd) {
  131. background-color: #66c6f2;
  132. }
  133. }
  134. img {
  135. width: 100%;
  136. height: 240px;
  137. display: block;
  138. padding: 30px 60px;
  139. box-sizing: border-box;
  140. background-color: @white;
  141. pointer-events: none;
  142. }
  143. }
  144. &--vertical {
  145. height: 200px;
  146. .van-swipe-item {
  147. line-height: 200px;
  148. }
  149. }
  150. .custom-indicator {
  151. position: absolute;
  152. right: 5px;
  153. bottom: 5px;
  154. padding: 2px 5px;
  155. font-size: 12px;
  156. color: @white;
  157. background: rgba(0, 0, 0, .1);
  158. }
  159. }
  160. </style>