前端 CSS 经典:在 Vue3 中使用渐进式图片

简介: 前端 CSS 经典:在 Vue3 中使用渐进式图片

1. 什么是渐进式图片

当我们网站会加载很多图片的时候,有些图片尺寸很大,加载就会很慢,会导致页面长时间陷入白屏状态,用户体验很不好。所以可以使用渐进式图片,先给用户展示模糊图,这些图尺寸小,加载快,可以快速显现出来。然后再逐步传输大图,大图传输完成之后替换模糊图。这就是渐进式图片。

2. 实现方式

有两种方案,一种靠设计师,一种靠自己

2.1 靠设计师

直接让设计师给你渐进式图片,因为 jpg 图片支持多帧,设计师可以在第一帧放一个模糊图,在第二帧放高清图。在传输的时候,浏览器首先会收到模糊图并展示,然后再慢慢传输高清图,一步一步去替换模糊图。但是这有两个缺陷,一个是浏览器兼容,还有一个是设计师不干或者不会。

2.2 靠自己

我们构建一个 ProgressiveImg.vue 组件,实现渐进式图片。实现思路是传入两个图片,一张模糊,一张高清,高清图片加载完成后触发替换。

ProgressiveImg.vue 组件构建

<script setup>
  defineProps({
    placeholder: String,
    origin: String,
  });
 
  const handleLoaded = (e) => {
    e.target.parentElement.classList.add("loaded");
  };
</script>
 
<template>
  <div class="progressive">
    <img class="img placeholder" :src="placeholder" />
    <img @load="handleLoaded" class="img origin" :src="origin" />
  </div>
</template>
 
<style scoped>
  .progressive {
    width: 100%;
    height: 100%;
    position: relative;
  }
  .img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
    transition: all 0.6s;
  }
  .origin {
    opacity: 0;
    position: absolute;
    left: 0;
    top: 0;
    filter: blur(10px);
  }
  .loaded .origin {
    opacity: 1;
    filter: blur(0);
  }
</style>

使用 ProgressiveImg.vue 组件

<script setup>
  import ProgressiveImg from "./components/ProgressiveImg.vue";
  import small from "./assets/_bg.jpg";
  import big from "./assets/bg.jpg";
</script>
 
<template>
  <div class="contain">
    <ProgressiveImg :placeholder="small" :origin="big" />
  </div>
</template>
 
<style>
  body {
    margin: 0;
    padding: 0;
  }
  .contain {
    width: 100vw;
    height: 100vh;
  }
</style>
目录
相关文章
|
9天前
|
前端开发
后端返回图片二进制流,前端转base64
本文介绍了如何将后端返回的图片二进制流转换为Base64格式,以便在前端使用。通过在axios请求中设置`responseType`为`arraybuffer`,然后使用`btoa`和`Uint8Array`进行转换。
38 5
|
22天前
|
前端开发
【前端web入门第四天】02 CSS三大特性+背景图
本文详细介绍了CSS的三大特性:继承性、层叠性和优先级,并深入讲解了背景图的相关属性,包括背景属性、背景图的平铺方式、位置设定、缩放、固定以及复合属性。其中,继承性指子元素自动继承父元素的文字控制属性;层叠性指相同属性后定义覆盖前定义,不同属性可叠加;优先级涉及选择器权重,包括行内样式、ID选择器等。背景图部分则通过具体示例展示了如何设置背景图像的位置、大小及固定方式等。
239 91
|
7天前
|
前端开发
前端基础(五)_CSS文本文字属性、背景颜色属性
本文详细介绍了CSS中关于文本和背景颜色的样式属性。包括字体大小、字体族、字体加粗、字体样式、文本行高、`font`属性、文本颜色、文本对齐方式、文本装饰线、首行缩进等文本属性,以及背景颜色、背景图片、背景重复、背景位置等背景属性。文章通过示例代码展示了这些属性的具体应用和效果。
12 3
前端基础(五)_CSS文本文字属性、背景颜色属性
|
7天前
|
前端开发
前端基础(九)_CSS的三大特征
本文详细解释了CSS的三大特性:层叠性、继承性和优先级,并通过实例演示了样式冲突、叠加和选择器优先级的应用。
11 2
前端基础(九)_CSS的三大特征
|
22天前
|
前端开发
【前端web入门第三天】02 CSS字体和文本
本文详细介绍了CSS中字体和文本的相关属性。字体部分涵盖字体大小、粗细、样式、行高、字体族及`font`复合属性,通过具体示例展示了如何设置和使用这些属性。文本部分则讲解了文本缩进、对齐方式、修饰线及文字颜色等属性,并提供了实用的代码示例。此外,还简要介绍了调试工具中的一些细节,如错误属性标识和属性生效状态的控制。
50 28
|
7天前
|
前端开发
前端之图片操作
前端之图片操作
|
7天前
|
编解码 前端开发
前端基础(六)_CSS单位
本文介绍了CSS中常用的单位,包括像素(px)、相对长度单位(em、rem)、百分比(%)、视窗宽度(vw)和视窗高度(vh)。文章通过示例代码展示了这些单位在实际布局中的应用,解释了它们各自的特点和使用场景。例如,em和rem单位与字体大小相关,百分比单位与父元素的尺寸相关,而vw和vh单位则与浏览器视窗的宽度和高度相关。
10 1
|
7天前
|
前端开发
前端基础(四)_CSS层叠样式表_什么是css_css样式的引入方式_样式表的优先级_样式选择器
本文详细介绍了CSS(层叠样式表)的基本概念、语法规则、引入方式、样式表的优先级和样式选择器。文章解释了CSS的作用,展示了如何在HTML中通过行内样式、内部样式和外部样式引入CSS,讨论了不同CSS选择器的优先级和如何确定最终的样式应用。此外,还强调了使用`!important`规则时的优先级高于行内样式。
31 1
|
22天前
|
前端开发 JavaScript
【前端web入门第三天】01 css定义和引入方式 四种标签选择器
本文档详细介绍了CSS的基础知识及其应用。内容涵盖了CSS的定义、CSS在HTML中的引入方式,包括内部样式表、外部样式表及行内样式表的使用场景与方法。此外,还深入解析了不同种类的选择器:标签选择器、类选择器、ID选择器以及通配符选择器的功能与应用场景,并提供了实例帮助理解。最后,通过具体的新属性示例,指导如何使用这些选择器来实现基本的盒子绘制。适合初学者系统学习CSS。
35 15
|
24天前
|
前端开发 Windows
【前端web入门第一天】02 HTML图片标签 超链接标签 音频标签 视频标签
本文档详细介绍了HTML中的图片、超链接、音频和视频标签的使用方法。首先讲解了`&lt;img&gt;`标签的基本用法及其属性,包括如何使用相对路径和绝对路径。接着介绍了`&lt;a&gt;`标签,用于创建超链接,并展示了如何设置目标页面打开方式。最后,文档还涵盖了如何在网页中嵌入音频和视频文件,包括简化写法及常用属性。
33 13
下一篇
无影云桌面