better-scroll使用(横向滚动条轮播)

横向滚动条除了要引入这个插件以外, 容器也要设置css属性
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

<template>
  <div class="box">
    <!-- 横向滚动条 -->

    <div class="recommand-wrap" ref="wrapper">
      <!-- /* 这里是父盒子*/ -->
      <ul class="cont" ref="cont">
        <!-- /* 这里是子盒子,即滚动区域*/ -->
        <li class="Cbox"  ref="cont2">
          <img src="../../../public/sp1.png" />
          <div class="txtBox">
            <h6>研发 Research and development</h6>
            <div class="txt">
              倾后CHIIIHO始终选择珍贵自然中提取的天然成分,为每款产品
              研制理想的科学配方,经过数万次的实验验证,最大限度的发挥
              产品效力......
            </div>
          </div>
        </li>

         <li class="Cbox">
          <img src="../../../public/sp1.png" />
          <div class="txtBox">
            <h6>研发 Research and development</h6>
            <div class="txt">
              倾后CHIIIHO始终选择珍贵自然中提取的天然成分,为每款产品
              研制理想的科学配方,经过数万次的实验验证,最大限度的发挥
              产品效力......
            </div>
          </div>
        </li>

        <li class="Cbox">
          <img src="../../../public/sp1.png" />
          <div class="txtBox">
            <h6>研发 Research and development</h6>
            <div class="txt">
              倾后CHIIIHO始终选择珍贵自然中提取的天然成分,为每款产品
              研制理想的科学配方,经过数万次的实验验证,最大限度的发挥
              产品效力......
            </div>
          </div>
        </li>
         <li class="Cbox">
          <img src="../../../public/sp1.png" />
          <div class="txtBox">
            <h6>研发 Research and development</h6>
            <div class="txt">
              倾后CHIIIHO始终选择珍贵自然中提取的天然成分,为每款产品
              研制理想的科学配方,经过数万次的实验验证,最大限度的发挥
              产品效力......
            </div>
          </div>
        </li>
        

      </ul>
    </div>
  </div>
</template>

<script>
const { log } = console
import BScroll from 'better-scroll' //导入better-scroll
export default {
  name: 'swiperAssembly',

  data() {
    return {
      recommendList: [
        {
          url:
            'https://imgs.qunarzz.com/piao/fusion/1711/16/bfbb9874e8f11402.png',
          text: '巴黎',
          price: '50',
        },
        {
          url:
            'https://imgs.qunarzz.com/piao/fusion/1711/16/bfbb9874e8f11402.png',
          text: '巴黎',
          price: '50',
        },
        {
          url:
            'https://imgs.qunarzz.com/piao/fusion/1711/16/bfbb9874e8f11402.png',
          text: '巴黎',
          price: '50',
        },
        {
          url:
            'https://imgs.qunarzz.com/piao/fusion/1711/16/bfbb9874e8f11402.png',
          text: '巴黎',
          price: '50',
        },
      ],
    }
  },
  mounted() {
    this.$nextTick(() => {
      let timer = setTimeout(() => {
        // 其实我也不想写这个定时器的,这相当于又嵌套了一层$nextTick,但是不这么写会失败
        if (timer) {
          clearTimeout(timer)
          this.verScroll()
        }
      }, 0)
    })
    log(this.$refs)
    log(this.$refs.cont2.clientWidth)
  },
  methods: {
    verScroll() {
      let width = this.$refs.cont2.clientWidth * this.recommendList.length+100 // 动态计算出滚动区域的大小,前面已经说过了,产生滚动的原因是滚动区域宽度大于父盒子宽度
      // 200这个是自定义数字
      // log(this.recommendList.length)
      log(width)
      this.$refs.cont.style.width = width + 'px' // 修改滚动区域的宽度
      this.$nextTick(() => {
        if (!this.scroll) {
          this.scroll = new BScroll(this.$refs.wrapper, {
            startX: 0, // 配置的详细信息请参考better-scroll的官方文档,这里不再赘述
            click: true,
            scrollX: true,
            scrollY: false,
            eventPassthrough: 'vertical',
          })
        } else {
          this.scroll.refresh() //如果dom结构发生改变调用该方法
        }
      })
    },
  },
}
</script>

<style lang="scss" scoped>
$sc: 50;
@function pxToRem($px) {
  @return $px/$sc + rem;
}

.recommand-wrap {
  // display: flex;
  // float: left;
  // border: 1px solid #000;
  // height: 300px;
  margin-top:pxToRem(100);
  background: #fff;
  width: pxToRem(744);
  overflow-y: hidden;
  overflow-x: scroll;
  &::-webkit-scrollbar {
    display: none;
  }

    .Cbox {
      display: inline-block!important;
      // width: pxToRem(620);
      height: pxToRem(660);
      margin-right: pxToRem(40);
      img {
        width: pxToRem(620);
        height: pxToRem(490);
      }
      .txtBox {
        padding-left:pxToRem(20);
        margin: pxToRem(26) 0 0 0;
        width: pxToRem(620);
        box-sizing: border-box;
        h6 {
          font-size: pxToRem(18);
          color: #0a0000;
          margin-bottom: pxToRem(16);
        }
        .txt {
          height: pxToRem(114);
          font-size: pxToRem(16);
          line-height: pxToRem(32);
        }
      }
    }
  
}
</style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值