Carousel 轮播

示例

Index

Interval (in ms)

Size

Compactness

Indicator types

Others

<template>
<article>
  <section>
    <h4>Index</h4>
    <veui-number-input
      v-model="index"
      ui="tiny"
      :min="0"
      :max="items.length - 1"
    />
    <h4>Interval (in <code>ms</code>)</h4>
    <veui-number-input
      v-model="interval"
      ui="tiny"
      :min="1000"
      :step="1000"
    />
  </section>
  <section>
    <h4>Size</h4>
    <veui-radio-group
      v-model="size"
      :items="sizes"
    />
  </section>
  <section>
    <h4>Compactness</h4>
    <veui-radio-group
      v-model="style"
      :items="styles"
    />
  </section>
  <section>
    <h4>Indicator types</h4>
    <veui-radio-group
      v-model="indicator"
      :items="indicators"
    />
  </section>
  <section>
    <h4>Others</h4>
    <veui-checkbox v-model="wrap">
      Repated
    </veui-checkbox>
    <veui-checkbox v-model="autoplay">
      Autoplay
    </veui-checkbox>
    <veui-checkbox v-model="pauseOnHover">
      Pause on hover
    </veui-checkbox>
  </section>
  <section>
    <veui-carousel
      :datasource="items"
      :index.sync="index"
      :interval="interval"
      :wrap="wrap"
      :autoplay="autoplay"
      :pause-on-hover="pauseOnHover"
      :indicator="indicator"
      :ui="ui"
    />
  </section>
</article>
</template>

<script>
import { Carousel, NumberInput, Checkbox, RadioGroup } from 'veui'

export default {
  components: {
    'veui-carousel': Carousel,
    'veui-number-input': NumberInput,
    'veui-checkbox': Checkbox,
    'veui-radio-group': RadioGroup
  },
  data () {
    return {
      items: [
        {
          src:
            'https://ecmb.bdimg.com/public01/one-design/2b77cc4a4c5c906993c0e512f3ddaf03.jpg',
          alt: 'A cute kitty looking at you with its greenish eyes.',
          label: 'Cat'
        },
        {
          src:
            'https://ecmb.bdimg.com/public01/one-design/6fedc62b9221846ce5114c7447622e47.jpeg',
          alt: 'A common kingfisher flying above river.',
          label: 'Kingfisher'
        },
        {
          src:
            'https://ecmb.bdimg.com/public01/one-design/e1b6473c898d9e456452ee79d7533a86.jpeg',
          alt: 'A white and gray dolphin in blue water.',
          label: 'Dolphin'
        }
      ],
      index: 0,
      interval: 3000,
      wrap: true,
      autoplay: true,
      pauseOnHover: true,
      sizes: [
        { label: 'Small', value: 'small' },
        { label: 'Normal', value: 'normal' },
        { label: 'Large', value: 'large' }
      ],
      size: 'normal',
      styles: [
        { label: 'Normal', value: 'normal' },
        { label: 'Loose', value: 'loose' }
      ],
      style: 'normal',
      indicators: [
        { label: 'Radio', value: 'radio' },
        { label: 'Number', value: 'number' },
        { label: 'Tab', value: 'tab' },
        { label: 'None', value: 'none' }
      ],
      indicator: 'radio'
    }
  },
  computed: {
    ui () {
      return [this.size, this.style].filter(s => s !== 'normal').join(' ')
    }
  }
}
</script>

API

属性

名称类型默认值描述
uistring-

预设样式。

描述
loose松散样式,切换按钮及指示器显示在外部。
large大尺寸样式。
small小尺寸样式。
datasourceArray<Object>[]

轮播图数据源,项目类型为:{src, alt, label}

名称类型描述
srcstring图片源地址。
altstring图片的降级描述文本。
labelstring进度指示器显示为标签页时的标题文本。
indexnumber0

.sync

当前轮播图序号。

indicatorstring'radio'

播放进度指示器的显示模式。

描述
radio单选按钮型。
number显示「当前页数/全部页数」的数值。
tab标签样式。在 veui-theme-one 中仅在 ui="large loose" 状态下会显示。
none不显示指示器。
switch-triggerstring'click'

当显示单选型指示器时,触发切换的操作。

描述
click点击时切换。
hover鼠标悬浮时切换。
autoplaybooleanfalse是否自动轮播。
pause-on-hoverbooleanfalse在自动轮播时,鼠标悬浮后是否暂停。
intervalnumber3000在自动轮播时,切换间隔的毫秒数。
wrapbooleanfalse是否可以循环播放。

插槽

名称描述
item

可用来定制每个轮播项的区域。

默认内容:轮播项图片。

作用域参数为 datasource 属性每个列表项的内容(可以有自定义字段)加上 index: number 表示轮播项的序号。即整个 slot-scope 绑定的值为 {src, alt, label, index, ...}

事件

名称描述
change

切换后触发,回调参数为 (to: number, from: number)。分别表示切换后的序号和切换前的序号。

图标

名称描述
prev上一页。
next下一页。