You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue(Quasar)中如何按条件控制轮播(carousel)组件箭头显隐

Quasar 轮播按图片数控制箭头显示实现

不用写自定义箭头,q-carousel原生的arrows属性就支持传布尔值动态控制显示状态,改两个地方就行:

  • 把轮播图数据抽成响应式数组,不用在模板里硬编码q-carousel-slide
  • 把原来写死的arrows属性改成动态绑定,仅当图片数量大于1时开启箭头,单图场景自动隐藏

所有原有功能(滑动、动画、全屏按钮、无限循环)都不需要调整,动态加载图片的场景下这个判断也会自动生效,不用额外加监听。

完整可运行代码

<template>
  <div class="q-pa-md">
    <q-carousel
      swipeable
      animated
      :arrows="slideList.length > 1"
      v-model="slide"
      v-model:fullscreen="fullscreen"
      infinite
    >
      <q-carousel-slide 
        v-for="item in slideList" 
        :key="item.name"
        :name="item.name" 
        :img-src="item.imgSrc" 
      />

      <template v-slot:control>
        <q-carousel-control
          position="bottom-right"
          :offset="[18, 18]"
        >
          <q-btn
            push round dense color="white" text-color="primary"
            :icon="fullscreen ? 'fullscreen_exit' : 'fullscreen'"
            @click="fullscreen = !fullscreen"
          />
        </q-carousel-control>
      </template>
    </q-carousel>
  </div>
</template>

<script>
import { ref } from 'vue'

export default {
  setup () {
    // 轮播图数据,接口拉取的场景直接替换这个数组值即可,箭头显示逻辑会自动同步
    const slideList = ref([
      { name: 1, imgSrc: 'https://cdn.quasar.dev/img/mountains.jpg' },
      { name: 2, imgSrc: 'https://cdn.quasar.dev/img/parallax1.jpg' },
      { name: 3, imgSrc: 'https://cdn.quasar.dev/img/parallax2.jpg' },
      { name: 4, imgSrc: 'https://cdn.quasar.dev/img/quasar.jpg' }
    ])

    return {
      slideList,
      slide: ref(1),
      fullscreen: ref(false)
    }
  }
}
</script>

额外提示:如果需要单图时同时隐藏底部分页指示器,给组件加一行:navigation="slideList.length > 1"就行,逻辑和箭头控制完全一致。

内容的提问来源于stack exchange,提问作者Courtesy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 18:42:37