el-carousel详解

745 阅读2分钟

el-carouselElement Plus 框架中的一个轮播图组件,用于展示一组图片或内容。它可以自动播放,支持手动切换和自定义导航按钮。

一。 el-carousel 属性详解

  1. value / v-model:

    • 类型: Number
    • 用途: 当前激活项的索引。
    • 默认值: 0
  2. autoplay:

    • 类型: Boolean
    • 用途: 是否自动播放。
    • 默认值: true
  3. interval:

    • 类型: Number
    • 用途: 自动播放间隔时间,单位为毫秒。
    • 默认值: 3000
  4. loop:

    • 类型: Boolean
    • 用途: 是否循环播放。
    • 默认值: true
  5. trigger:

    • 类型: String
    • 用途: 指示器触发方式,可选值为 hoverclick
    • 默认值: hover
  6. indicator-position:

    • 类型: String
    • 用途: 指示器的位置,可选值为 noneinsideoutside
    • 默认值: inside
  7. arrow:

    • 类型: String
    • 用途: 控制箭头的显示时机,可选值为 hoveralwaysnever
    • 默认值: hover
  8. height:

    • 类型: String
    • 用途: 轮播图的高度。
  9. type:

    • 类型: String
    • 用途: 轮播图类型,可选值为 card
  10. initial-index:

    • 类型: Number
    • 用途: 初始化时的索引。
    • 默认值: 0

二。 el-carousel 事件详解

  1. change:

    • 类型: Function
    • 用途: 当轮播图切换时触发的事件。
    • 参数: currentprev(当前索引,前一个索引)

三。 el-carousel 插槽详解

  1. default:

    • 插槽名称: default
    • 用途: 轮播图的内容。
  2. prev:

    • 插槽名称: prev
    • 用途: 自定义前一个按钮的内容。
  3. next:

    • 插槽名称: next
    • 用途: 自定义下一个按钮的内容。

四。示例代码

<template>
  <div>
    <h2>Carousel 示例</h2>

    <!-- 基本用法 -->
    <el-carousel :interval="4000" type="card" height="200px">
      <el-carousel-item v-for="item in items" :key="item.id">
        <img :src="item.src" alt="carousel image" class="carousel-image">
      </el-carousel-item>
    </el-carousel>

    <!-- 自定义指示器位置 -->
    <el-carousel :interval="4000" indicator-position="outside" height="200px">
      <el-carousel-item v-for="item in items" :key="item.id">
        <img :src="item.src" alt="carousel image" class="carousel-image">
      </el-carousel-item>
    </el-carousel>

    <!-- 手动切换 -->
    <el-carousel :autoplay="false" height="200px">
      <el-carousel-item v-for="item in items" :key="item.id">
        <img :src="item.src" alt="carousel image" class="carousel-image">
      </el-carousel-item>
    </el-carousel>

    <!-- 自定义箭头显示时机 -->
    <el-carousel :interval="4000" arrow="always" height="200px">
      <el-carousel-item v-for="item in items" :key="item.id">
        <img :src="item.src" alt="carousel image" class="carousel-image">
      </el-carousel-item>
    </el-carousel>

    <!-- 自定义导航按钮 -->
    <el-carousel :interval="4000" height="200px">
      <el-carousel-item v-for="item in items" :key="item.id">
        <img :src="item.src" alt="carousel image" class="carousel-image">
      </el-carousel-item>
      <template #prev>
        <i class="el-icon-arrow-left custom-prev"></i>
      </template>
      <template #next>
        <i class="el-icon-arrow-right custom-next"></i>
      </template>
    </el-carousel>
  </div>
</template>

五。 代码解释

  1. 基本用法:

    • 使用 el-carousel 组件并设置 intervaltype 和 height 属性。
    • <el-carousel :interval="4000" type="card" height="200px">
        <el-carousel-item v-for="item in items" :key="item.id">
          <img :src="item.src" alt="carousel image" class="carousel-image">
        </el-carousel-item>
      </el-carousel>
      
  2. 自定义指示器位置:

    • 使用 indicator-position 属性自定义指示器的位置。
    • <el-carousel :interval="4000" indicator-position="outside" height="200px">
        <el-carousel-item v-for="item in items" :key="item.id">
          <img :src="item.src" alt="carousel image" class="carousel-image">
        </el-carousel-item>
      </el-carousel>
      
  3. 手动切换:

    • 使用 autoplay 属性设置为 false 禁用自动播放。
    • <el-carousel :autoplay="false" height="200px">
        <el-carousel-item v-for="item in items" :key="item.id">
          <img :src="item.src" alt="carousel image" class="carousel-image">
        </el-carousel-item>
      </el-carousel>
      
  4. 自定义箭头显示时机:

    • 使用 arrow 属性自定义箭头的显示时机。
    • 
      <el-carousel :interval="4000" arrow="always" height="200px">
        <el-carousel-item v-for="item in items" :key="item.id">
          <img :src="item.src" alt="carousel image" class="carousel-image">
        </el-carousel-item>
      </el-carousel>
      
  5. 自定义导航按钮:

    • 使用插槽自定义导航按钮的内容。
    • <el-carousel :interval="4000" height="200px">
        <el-carousel-item v-for="item in items" :key="item.id">
          <img :src="item.src" alt="carousel image" class="carousel-image">
        </el-carousel-item>
        <template #prev>
          <i class="el-icon-arrow-left custom-prev"></i>
        </template>
        <template #next>
          <i class="el-icon-arrow-right custom-next"></i>
        </template>
      </el-carousel>