005_Vue音乐播放器(推荐页滚动优化、图片懒加载、以及对第三方ui库的样式穿透修改样式)

这篇讲的内容比较简单,是使用 better-scroll 组件 和 vant的图片懒加载

better-scroll 的使用

首先,在不使用better-scroll 的时候,滑动页面,头部的顶部栏和导航栏会跟着滑动,这不是我们所想要的,我们只需要下面的轮播图和推荐歌曲列表滑动即可,这是使用前后的效果图。

                 

 首先使用 cnpm install better-scroll --save-dev 安装better-scroll

然后创建一个公用的scroll组件,具体写法如下,每个函数的用法请参照其 better-scroll官网

<template>
  <div ref="wrapper" class="wrapper">
    <!-- 需要滚动的节点放置在此插槽中 -->
    <slot></slot>
  </div>
</template>

<script>
import BScroll from "better-scroll";
export default {
  props: {
    probeType: {
      type: Number,
      default: 1
    },
    click: {
      type: Boolean,
      default: true
    },
    data: {
      type: Array,
      default: null
    }
  },
  mounted() {
    //定时器确保页面节点已渲染完成
    setTimeout(() => {
      this._initScroll();
    }, 20);
  },
  methods: {
    _initScroll() {
      if (!this.$refs.wrapper) {
        return;
      }
      this.scroll = new BScroll(this.$refs.wrapper, {
        probeType: this.probeType,
        click: this.click
      });
    },
    enable() {
      this.scroll && this.scroll.enable();
    },
    disable() {
      this.scroll && this.scroll.disable();
    },
    refresh() {
      //刷新,重新计算高度
      this.scroll && this.scroll.refresh();
    }
  },
  watch: {
    data() {
      //观察data变化,refresh函数重新计算scroll
      setTimeout(() => {
        this.refresh();
      }, 20);
    }
  }
};
</script>

<style scoped>
.wrapper {
  overflow: hidden;
  width: 100%;
  height: 100vh;
}
</style>

然后在我们的recommend推荐组件中引入使用即可(已设置插槽,将原来的节点放在scroll组件包裹下即可)

vant图片懒加载

一开始使用的是vueLazyload,但是照着官网上弄了很久,loading的加载图都出不来,果断弃用,选择vant的图片懒加载。

具体用法也非常简单,cnpm install vant --save 下载vant,然后直接引入其Lazyload即可,然后在组件中的图片使用v-lazy来代替:src,就能实现懒加载效果了。

样式穿透

在使用element-ui的loading加载的时候,由于字体太小不够美观,想要修改它的样式,又由于是第三方ui库,在style设定了scoped使得我们自定义的样式无法修改第三方ui库的样式,因此使用样式穿透,即 >>> ,或者  /deep/  操作符( >>> 的别名)。

穿透方法实际上违反了scoped属性的意义。通常能写在index中的样式尽量写在index中,我们可以通过在index样式中通过外层组件添加唯一class来区分组件+第三方样式来实现实现了类似于scoped的效果(即less的样式层级关系),又方便修改各种第三方组件的样式。

对element-ui的loading使用样式穿透后的效果

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值