2021/03/28 vue横向滚动栏

  • 想要的效果 做成这种可以滚动选择的效果
    滚动导航栏
    滚动导航栏

  • html代码

<!-- 标题 -->
      <div class="choose-title">选择路线</div>
      <!-- 集货道名称 -->
      <div class="track-group">
        <div
          class="track-item"
          v-for="(item, index) in tracksList"
          :key="index"
          :class="item.isTrackSeleted ? 'choosed' : ''"
          @click="tracksItemClick(item, index)"
        >
          {
  
  { item.name }}
        </div>
      </div>
  • css代码
.track-group {
      // outline: 1px solid gray;
      display: flex;

      // 设置横向滚动
      white-space: nowrap; //段落中文本不换行
      overflow-x: scroll; //设置横向滚动
      overflow-y: hidden; //禁止纵向滚动
      tex
Vue中实现横向滚动文字有多种方法,下面介绍两种常见的方式: ### 使用纯CSS实现 通过CSS的`@keyframes`动画和`transform`属性来实现文字的横向滚动效果,并且可以控制鼠标悬停时暂停滚动。以下是示例代码: ```vue <template> <!-- 跑马灯组件 marquee --> <div class="marquee"> <p class="marquee-text"> <span class="tips-ma">系统通知:</span> <span class="txt alert-msg ">积极的聚集地哦是的那是多久哦阿斯顿哈哈哈哈哈哈</span> </p> </div> </template> <script setup> </script> <style lang="scss" scoped> .marquee { overflow: hidden; color: red; /* border: 1px solid #333; */ .tips-ma { display: flex; align-items: center; } .marquee-text { /* width: max-content; */ white-space: nowrap; animation: scroll 15s linear infinite; /* font-size: 24px; */ /* padding-right: 200px; */ display: flex; align-items: center; &:hover { //鼠标悬停 停止横向滚动 animation-play-state: paused; } } .emphasize-days { font-weight: bold; } } @keyframes scroll { from { transform: translateX(100%); } to { transform: translateX(-100%); } } </style> ``` 在上述代码中,定义了一个名为`scroll`的动画,让文字从右侧进入,向左滚动,并且循环播放。当鼠标悬停在文字上时,动画暂停[^3]。 ### 监听滚动事件实现 可以监听鼠标滚轮事件,根据滚动的方向和距离来设置元素的横向滚动。示例代码如下: ```vue <template> <div class="generalScroll" v-mousewheel> <div class="model_img_item"> <div v-for="(item,index) in modelList" :key="item.id"> <img :src="item?.presignedUrl" alt="" > </div> </div> </div> </template> <script> export default { data() { return { modelList: [ { id: 1, presignedUrl: 'image1.jpg' }, { id: 2, presignedUrl: 'image2.jpg' }, // 更多图片数据... ] }; }, directives: { mousewheel: { mounted (el) { el.addEventListener('wheel', (e) => { let num = 0; if (e.deltaY > 0) { num = 25; } else { num = -25; } el.scrollBy(num, 0); }, { passive: true }); } } } }; </script> <style scoped> .generalScroll { overflow-x: auto; white-space: nowrap; } .model_img_item { display: inline-flex; } </style> ``` 此代码通过自定义指令`v-mousewheel`监听鼠标滚轮事件,根据滚轮的滚动方向设置元素的横向滚动距离[^1]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值