第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

基于Vue實(shí)現(xiàn)的圖片懶加載組件

標(biāo)簽:
JavaScript Vue.js

参数

属性集合
options: {
	width: 500,
	height: 500,
	margin: '20 auto 20',
	list: [
		image
	]
}

功能代码(可直接复制代码使用)

<template>
  <div class="lazy-load">
    <img v-for="(img, index) of list"
	     :key="index"	//这里不建议用下标作为标识,最好使用图片的Id号
	     :style="{width: `${width}px`, height: `${height}px`, margin: margin}"
	     alt="image"
	     src
	     :data-class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="img" />
  </div>
</template>

<script>
export default {
  props: {
    options: {
      type: Object,
      default: () => {}
    }
  },
  components: {},
  data() {
    return {};
  },
  computed: {
    width() {
      return this.options.width || 'auto';
    },
    height() {
      return this.options.height || 'auto';
    },
    margin() {
      let margin = this.options.margin || 'auto';
      let regex = /(\b\d+\b)/g;
      let str = margin.replace(regex, `$1px`);
      return str;
    },
    list() {
      return this.options.list || [];
    },
    cliceHeight() {
      let height = document.documentElement.clientHeight; // 可视区域的高度
      return height;
    }
  },
  watch: {},
  methods: {
    lazyload() {
      const domList = document.querySelectorAll('img');
      domList.forEach((item, index) => {
        let rest;
        if (!item.dataset.src) {
          return;
        }
        rest = item.getBoundingClientRect();
        if (rest.bottom >= 0 && rest.top < this.cliceHeight) {
          let img = new Image();
          img.src = item.dataset.src;
          img.onload = () => {
            item.src = img.src;
          };
          item.removeAttribute('data-src');
          item.removeAttribute('lazyload');
        }
      });
    }
  },
  mounted() {
    this.$nextTick(() => {
      this.lazyload();
      window.addEventListener('scroll', this.lazyload);
    });
  },
  created() {}
};
</script>

<style lang='scss' scoped>
.lazy-load {
  display: flex;
  flex-direction: column;
  justify-content: center;
}
</style>

用法示例

<lazy-load :options="options" />

介绍一个关于replace的高阶用法:

'20 auto 50'.replace(/(\b\d+\b)/g, '$1px');	// 20px auto 50px

如果需要用到源文本中的部分内容,我们可以将这部分内容的匹配规则用括号包起来,用$n来表示
不局限于只有1个,$1…$n。

我是底部
一个很基础的功能,发表一些文章是想要逐渐养成写博客的习惯,如果对你有帮助,那真是一件很棒的事,如果内容有什么问题或建议,欢迎在下方留言。😀 😀 😀

點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報(bào)

0/150
提交
取消