当前位置:首页 > VUE

vue横向滑动实现

2026-03-10 02:21:03VUE

Vue 横向滑动实现方法

使用 CSS Flexbox 布局

通过 display: flexoverflow-x: auto 实现横向滚动容器,子元素设置 flex-shrink: 0 防止挤压。

<template>
  <div class="horizontal-scroll">
    <div v-for="item in items" :key="item.id" class="scroll-item">
      {{ item.content }}
    </div>
  </div>
</template>

<style scoped>
.horizontal-scroll {
  display: flex;
  overflow-x: auto;
  gap: 16px; /* 可选间距 */
  padding: 8px 0;
}
.scroll-item {
  flex-shrink: 0;
  width: 120px; /* 固定宽度示例 */
}
</style>

使用第三方库(如 Swiper)

安装 Swiper 库后,可直接实现丰富的滑动效果,支持触摸和响应式。

npm install swiper@8
<template>
  <swiper :slides-per-view="3" :space-between="20">
    <swiper-slide v-for="item in items" :key="item.id">
      {{ item.content }}
    </swiper-slide>
  </swiper>
</template>

<script>
import { Swiper, SwiperSlide } from 'swiper/vue';
import 'swiper/css';

export default {
  components: { Swiper, SwiperSlide }
};
</script>

监听滚动事件实现动态效果

结合 @scroll 事件和 ref 实现滚动交互逻辑,如显示/隐藏导航按钮。

<template>
  <div ref="scrollContainer" class="scroll-container" @scroll="handleScroll">
    <!-- 内容 -->
  </div>
  <button v-if="showLeftNav" @click="scrollLeft">←</button>
</template>

<script>
export default {
  methods: {
    scrollLeft() {
      this.$refs.scrollContainer.scrollBy({ left: -200, behavior: 'smooth' });
    },
    handleScroll() {
      this.showLeftNav = this.$refs.scrollContainer.scrollLeft > 0;
    }
  }
};
</script>

响应式宽度调整

通过计算属性动态设置子元素宽度,适应不同屏幕尺寸。

vue横向滑动实现

computed: {
  itemWidth() {
    return window.innerWidth < 768 ? '100px' : '150px';
  }
}

注意事项

  • 移动端需添加 -webkit-overflow-scrolling: touch 提升滚动流畅度。
  • 避免在滚动容器内使用过多复杂元素,可能影响性能。
  • 若需无限滚动,可结合虚拟滚动技术(如 vue-virtual-scroller)。

标签: 横向vue
分享给朋友:

相关文章

vue播放倍速怎么实现

vue播放倍速怎么实现

实现Vue播放倍速的方法 在Vue中实现播放倍速功能通常涉及HTML5的<video>元素或第三方播放器库。以下是几种常见实现方式: 使用原生HTML5 video元素 通过ref获取v…

vue实现贴图

vue实现贴图

Vue 实现贴图功能 在Vue中实现贴图功能通常涉及将图片动态添加到指定位置或元素上。以下是几种常见实现方式: 使用v-bind动态绑定图片 通过数据驱动的方式动态更换图片源: <templ…

vue实现iframe

vue实现iframe

Vue 中实现 iframe 的方法 在 Vue 项目中,可以通过多种方式实现 iframe 的嵌入。以下是几种常见的方法: 使用原生 HTML iframe 标签 直接在 Vue 组件的模板中使用…

vue实现全景

vue实现全景

Vue 实现全景效果的方法 使用 Vue 实现全景效果通常需要结合第三方库或框架,以下是几种常见的方法: 使用 Three.js 和 Vue-Three.js Three.js 是一个强大的 3D…

vue实现socket

vue实现socket

Vue 中实现 WebSocket 通信 在 Vue 项目中实现 WebSocket 通信可以通过原生 WebSocket API 或第三方库(如 socket.io-client)完成。以下是两种常…

vue实现selectable

vue实现selectable

Vue 实现可选择的 Select 组件 在 Vue 中实现一个可选择的 Select 组件,可以通过以下几种方式: 使用原生 HTML select 元素 <template> &…