Carousel 走马灯

旋转木马,一组轮播的区域。

何时使用

  • 当有一组平级的内容。
  • 当内容空间不足时,可以用走马灯的形式进行收纳,进行轮播展现。
  • 常用于一组图片或卡片轮播。

代码演示

Carousel走马灯 - 图1

基本

最简单的用法。

  1. <template>
  2. <a-carousel :afterChange="onChange">
  3. <div><h3>1</h3></div>
  4. <div><h3>2</h3></div>
  5. <div><h3>3</h3></div>
  6. <div><h3>4</h3></div>
  7. </a-carousel>
  8. </template>
  9. <script>
  10. export default {
  11. methods: {
  12. onChange (a, b, c) {
  13. console.log(a, b, c)
  14. },
  15. },
  16. }
  17. </script>
  18. <style scoped>
  19. /* For demo */
  20. .ant-carousel >>> .slick-slide {
  21. text-align: center;
  22. height: 160px;
  23. line-height: 160px;
  24. background: #364d79;
  25. overflow: hidden;
  26. }
  27. .ant-carousel >>> .slick-slide h3 {
  28. color: #fff;
  29. }
  30. </style>

Carousel走马灯 - 图2

垂直

垂直显示。

  1. <template>
  2. <a-carousel vertical>
  3. <div><h3>1</h3></div>
  4. <div><h3>2</h3></div>
  5. <div><h3>3</h3></div>
  6. <div><h3>4</h3></div>
  7. </a-carousel>
  8. </template>
  9. <script>
  10. export default {
  11. }
  12. </script>
  13. <style scoped>
  14. /* For demo */
  15. .ant-carousel >>> .slick-slide {
  16. text-align: center;
  17. height: 160px;
  18. line-height: 160px;
  19. background: #364d79;
  20. overflow: hidden;
  21. }
  22. .ant-carousel >>> .slick-slide h3 {
  23. color: #fff;
  24. }
  25. </style>

Carousel走马灯 - 图3

渐显

切换效果为渐显。

  1. <template>
  2. <a-carousel effect="fade">
  3. <div><h3>1</h3></div>
  4. <div><h3>2</h3></div>
  5. <div><h3>3</h3></div>
  6. <div><h3>4</h3></div>
  7. </a-carousel>
  8. </template>
  9. <script>
  10. export default {
  11. }
  12. </script>
  13. <style scoped>
  14. /* For demo */
  15. .ant-carousel >>> .slick-slide {
  16. text-align: center;
  17. height: 160px;
  18. line-height: 160px;
  19. background: #364d79;
  20. overflow: hidden;
  21. }
  22. .ant-carousel >>> .slick-slide h3 {
  23. color: #fff;
  24. }
  25. </style>

Carousel走马灯 - 图4

自动切换

定时切换下一张。

  1. <template>
  2. <a-carousel autoplay>
  3. <div><h3>1</h3></div>
  4. <div><h3>2</h3></div>
  5. <div><h3>3</h3></div>
  6. <div><h3>4</h3></div>
  7. </a-carousel>
  8. </template>
  9. <script>
  10. export default {
  11. }
  12. </script>
  13. <style scoped>
  14. /* For demo */
  15. .ant-carousel >>> .slick-slide {
  16. text-align: center;
  17. height: 160px;
  18. line-height: 160px;
  19. background: #364d79;
  20. overflow: hidden;
  21. }
  22. .ant-carousel >>> .slick-slide h3 {
  23. color: #fff;
  24. }
  25. </style>

Carousel走马灯 - 图5

自定义分页

自定义分页展示。

  1. <template>
  2. <a-carousel arrows dotsClass="slick-dots slick-thumb">
  3. <a slot="customPaging" slot-scope="props">
  4. <img :src="getImgUrl(props.i)" />
  5. </a>
  6. <div v-for="item in 4">
  7. <img :src="baseUrl+'abstract0'+item+'.jpg'" />
  8. </div>
  9. </a-carousel>
  10. </template>
  11. <script>
  12. const baseUrl = 'https://raw.githubusercontent.com/vueComponent/ant-design-vue/master/components/vc-slick/assets/img/react-slick/'
  13. export default {
  14. data() {
  15. return {
  16. baseUrl,
  17. }
  18. },
  19. methods: {
  20. getImgUrl(i) {
  21. return `${baseUrl}abstract0${i + 1}.jpg`
  22. }
  23. }
  24. }
  25. </script>
  26. <style scoped>
  27. /* For demo */
  28. .ant-carousel >>> .slick-dots {
  29. height: auto
  30. }
  31. .ant-carousel >>> .slick-slide img{
  32. border: 5px solid #FFF;
  33. display: block;
  34. margin: auto;
  35. max-width: 80%;
  36. }
  37. .ant-carousel >>> .slick-thumb {
  38. bottom: -45px;
  39. }
  40. .ant-carousel >>> .slick-thumb li {
  41. width: 60px;
  42. height: 45px;
  43. }
  44. .ant-carousel >>> .slick-thumb li img {
  45. width: 100%;
  46. height: 100%;
  47. filter: grayscale(100%);
  48. }
  49. .ant-carousel >>> .slick-thumb li.slick-active img{
  50. filter: grayscale(0%);
  51. }
  52. </style>

Carousel走马灯 - 图6

自定义箭头

自定义箭头展示。

  1. <template>
  2. <a-carousel arrows>
  3. <div
  4. slot="prevArrow" slot-scope="props"
  5. class="custom-slick-arrow"
  6. style="left: 10px;zIndex: 1"
  7. >
  8. <a-icon type="left-circle" />
  9. </div>
  10. <div
  11. slot="nextArrow" slot-scope="props"
  12. class="custom-slick-arrow"
  13. style="right: 10px"
  14. >
  15. <a-icon type="right-circle" />
  16. </div>
  17. <div><h3>1</h3></div>
  18. <div><h3>2</h3></div>
  19. <div><h3>3</h3></div>
  20. <div><h3>4</h3></div>
  21. </a-carousel>
  22. </template>
  23. <script>
  24. export default {}
  25. </script>
  26. <style scoped>
  27. /* For demo */
  28. .ant-carousel >>> .slick-slide {
  29. text-align: center;
  30. height: 160px;
  31. line-height: 160px;
  32. background: #364d79;
  33. overflow: hidden;
  34. }
  35. .ant-carousel >>> .custom-slick-arrow {
  36. width: 25px;
  37. height: 25px;
  38. font-size: 25px;
  39. color: #fff;
  40. background-color: rgba(31,45,61,.11);
  41. opacity: 0.3;
  42. }
  43. .ant-carousel >>> .custom-slick-arrow:before {
  44. display: none;
  45. }
  46. .ant-carousel >>> .custom-slick-arrow:hover {
  47. opacity: 0.5;
  48. }
  49. .ant-carousel >>> .slick-slide h3 {
  50. color: #fff;
  51. }
  52. </style>

API

参数说明类型默认值
afterChange切换面板的回调function(current)
autoplay是否自动切换booleanfalse
beforeChange切换面板的回调function(from, to)
dots是否显示面板指示点booleantrue
easing动画效果stringlinear
effect动画效果函数,可取 scrollx, fadestringscrollx
vertical垂直显示booleanfalse

方法

名称描述
goTo(slideNumber, dontAnimate)切换到指定面板, dontAnimate = true 时,不使用动画
next()切换到下一面板
prev()切换到上一面板

更多参数可参考:vc-slick props