渐进式图片加载

2 篇文章 1 订阅
2 篇文章 0 订阅

渐进式图片加载是一种优化图片加载的策略,主要用于提升网页加载速度和用户体验。这种策略的核心思想是,先加载图片的模糊版本或低分辨率版本,然后再逐渐加载高清版本。这样,用户可以在图片完全加载之前看到图片的大致内容,从而提高页面的响应速度。

在这里插入图片描述

完整组件代码:

<template>
  <view
    :class="{ 'gradual-image': true, 'success-image': isSuccess }"
    :style="{ width: width + 'rpx', height: height + 'rpx', ...classStyle }"
  >
    <!-- 缩略图 -->
    <image
      v-if="placeholderImage"
      class="image placeholder-image"
      :style="`transition: ${duration / 1000}s`"
      :mode="mode"
      :src="placeholderImage"
    />
    <view v-else class="none-image">正在加载...</view>
    <!-- 原图 -->
    <image
      class="image original-image"
      :style="`transition: ${duration / 1000}s`"
      :mode="mode"
      :src="originalImage"
      @load="handleLoad"
    />
  </view>
</template>

<script>
export default {
  props: {
    // 原图
    originalImage: {
      type: String,
      default: '',
      required: true
    },

    // 占位图
    placeholderImage: {
      type: String,
      default: ''
    },

    // 图片模式
    mode: {
      type: String,
      default: 'scaleToFill'
    },

    // 宽度,单位:rpx
    width: {
      type: [String, Number],
      default: 200
    },

    // 高度,单位:rpx
    height: {
      type: [String, Number],
      default: 200
    },

    // 过渡时间,单位:ms
    duration: {
      type: [String, Number],
      default: 500
    },

    // 样式
    classStyle: {
      type: Object,
      default: () => ({})
    }
  },

  data() {
    return {
      isSuccess: false // 是否加载完原图
    }
  },

  methods: {
    // 原图加载完成
    handleLoad(e) {
      this.isSuccess = true
    }
  }
}
</script>

<style lang="scss" scoped>
.gradual-image {
  position: relative;
  .image {
    width: 100%;
    height: 100%;
    display: block;
  }

  .none-image {
    width: 100%;
    height: 100%;
    background-color: #f6f6f6;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #999999;
    font-size: 24rpx;
  }

  .original-image {
    position: absolute;
    top: 0;
    left: 0;
    opacity: 0;
    filter: blur(10rpx);
  }
}

.success-image {
  .original-image {
    opacity: 1;
    filter: blur(0);
  }
}
</style>

组件使用如下:

<template>
  <bcode-gradualimage
    originalImage="https://cdn.zxmcode.top/siege_cat/DSCF2854.jpg"
    placeholderImage="https://cdn.zxmcode.top/siege_cat/DSCF2854.jpg/thumbnail"
    mode="aspectFill"
    :classStyle="classStyle"
  ></bcode-gradualimage>
</template>

<script setup lang="ts">
const classStyle = {
  width: '750rpx',
  height: '100vh'
}
</script>

<style lang="scss" scoped></style>

蓝码前端小程序
蓝码前端小程序
蓝码前端公众号

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3渐进式加载图片是指使用v-progressive-image插件来实现的一种图片加载效果。该插件可以通过两个指令来实现图片的渐进加载,从高斯模糊的缩略图逐步加载到清晰的原图。这种方式可以提供更好的用户体验,同时减少了图片加载对网络带宽的需求。 要在Vue3中使用v-progressive-image插件,首先需要在main.js中引入相关文件并配置插件参数。具体步骤如下: 1. 在main.js文件中,使用import语句引入Vue和v-progressive-image插件: ``` import Vue from 'vue' import progressive from 'progressive-image/dist/vue' import 'progressive-image/dist/index.css' ``` 2. 使用Vue.use()方法安装v-progressive-image插件,并配置插件参数: ``` Vue.use(progressive, { removePreview: true, scale: true }) ``` 这样就完成了v-progressive-image插件的配置。接下来,在需要加载渐进式图片的地方,可以使用v-progressive-image的指令来实现渐进式加载效果。 总结起来,Vue3渐进式加载图片可以通过v-progressive-image插件来实现,通过配置插件参数和使用指令来实现图片的渐进加载效果。这种方式可以提供更好的用户体验和减少网络带宽的需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue-emage:适用于vue3的渐进式图片加载插件](https://download.csdn.net/download/weixin_42168745/16545426)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [适用于 vue.js渐进式图片加载](https://blog.csdn.net/qq_39146122/article/details/111480212)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值