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. </script>
  12. <style scoped>
  13. /* For demo */
  14. .ant-carousel >>> .slick-slide {
  15. text-align: center;
  16. height: 160px;
  17. line-height: 160px;
  18. background: #364d79;
  19. overflow: hidden;
  20. }
  21. .ant-carousel >>> .slick-slide h3 {
  22. color: #fff;
  23. }
  24. </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. </script>
  12. <style scoped>
  13. /* For demo */
  14. .ant-carousel >>> .slick-slide {
  15. text-align: center;
  16. height: 160px;
  17. line-height: 160px;
  18. background: #364d79;
  19. overflow: hidden;
  20. }
  21. .ant-carousel >>> .slick-slide h3 {
  22. color: #fff;
  23. }
  24. </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. </script>
  12. <style scoped>
  13. /* For demo */
  14. .ant-carousel >>> .slick-slide {
  15. text-align: center;
  16. height: 160px;
  17. line-height: 160px;
  18. background: #364d79;
  19. overflow: hidden;
  20. }
  21. .ant-carousel >>> .slick-slide h3 {
  22. color: #fff;
  23. }
  24. </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 =
  13. 'https://raw.githubusercontent.com/vueComponent/ant-design-vue/master/components/vc-slick/assets/img/react-slick/';
  14. export default {
  15. data() {
  16. return {
  17. baseUrl,
  18. };
  19. },
  20. methods: {
  21. getImgUrl(i) {
  22. return `${baseUrl}abstract0${i + 1}.jpg`;
  23. },
  24. },
  25. };
  26. </script>
  27. <style scoped>
  28. /* For demo */
  29. .ant-carousel >>> .slick-dots {
  30. height: auto;
  31. }
  32. .ant-carousel >>> .slick-slide img {
  33. border: 5px solid #fff;
  34. display: block;
  35. margin: auto;
  36. max-width: 80%;
  37. }
  38. .ant-carousel >>> .slick-thumb {
  39. bottom: -45px;
  40. }
  41. .ant-carousel >>> .slick-thumb li {
  42. width: 60px;
  43. height: 45px;
  44. }
  45. .ant-carousel >>> .slick-thumb li img {
  46. width: 100%;
  47. height: 100%;
  48. filter: grayscale(100%);
  49. }
  50. .ant-carousel >>> .slick-thumb li.slick-active img {
  51. filter: grayscale(0%);
  52. }
  53. </style>

Carousel 走马灯 - 图6

自定义箭头

自定义箭头展示。

<template>
  <a-carousel arrows>
    <div
      slot="prevArrow"
      slot-scope="props"
      class="custom-slick-arrow"
      style="left: 10px;zIndex: 1"
    >
      <a-icon type="left-circle" />
    </div>
    <div slot="nextArrow" slot-scope="props" class="custom-slick-arrow" style="right: 10px">
      <a-icon type="right-circle" />
    </div>
    <div><h3>1</h3></div>
    <div><h3>2</h3></div>
    <div><h3>3</h3></div>
    <div><h3>4</h3></div>
  </a-carousel>
</template>
<script>
  export default {};
</script>
<style scoped>
  /* For demo */
  .ant-carousel >>> .slick-slide {
    text-align: center;
    height: 160px;
    line-height: 160px;
    background: #364d79;
    overflow: hidden;
  }

  .ant-carousel >>> .custom-slick-arrow {
    width: 25px;
    height: 25px;
    font-size: 25px;
    color: #fff;
    background-color: rgba(31, 45, 61, 0.11);
    opacity: 0.3;
  }
  .ant-carousel >>> .custom-slick-arrow:before {
    display: none;
  }
  .ant-carousel >>> .custom-slick-arrow:hover {
    opacity: 0.5;
  }

  .ant-carousel >>> .slick-slide h3 {
    color: #fff;
  }
</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