【vue】图片加载动画效果

2023-11-18

加载后,一种是图片由浅到深。一种是闪光加载效果消失。

<template>
  <img
      crossorigin="anonymous"
      :src="imgSrc"
      :class="[loading?'loading':'','kl-image-load']"
      @error="imgError"
      @load="imgLoad"
      :alt="imgAlt"/>
</template>
<script>
import {ref, watch} from "vue";

export default {
  name: "ImageLoad",
  props: {
    imgSrc: {
      default: "https://img1.baidu.com/it/u=2863108920,4275403644&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=281"
    },
    imgAlt: {
      default: "图片加载失败"
    },
    width:{
      default:'auto'
    },
    height:{
      default:'auto'
    }
  },
  setup(props, ctx) {
    const loading = ref(true)
    watch(props.imgSrc, (c, v) => {
      loading.value = true;
    })
    const imgError = () => {
      // loading.value=false;
    }
    const imgLoad = () => {
      loading.value = false;
    }
    return {
      imgLoad,
      imgError,
      loading
    }
  }

}
</script>

<style scoped>
.kl-image-load {
  max-width: 100%;
  height: auto;
  position: relative;
  overflow: hidden;
}
.kl-image-load {
  opacity: 1;
  transition: opacity 1s ease-in;
}
.kl-image-load.loading{
  opacity: 0;
  transition: opacity 1s ease-in;
}
.kl-image-load.loading{
  height: 100px;
  width: 100%;
}

</style>
<template>
<div class="kl-image-load-light-box">
  <img
      crossorigin="anonymous"
      :src="imgSrc"
      :class="[loading?'loading':'','kl-image-load-light']"
      @error="imgError"
      @load="imgLoad"
      :alt="imgAlt"/>
  <div
      :class="[loading?'show':'','kl-image-load-light-mask']"
  ></div>
</div>
</template>
<script>
import {ref, watch} from "vue";

export default {
  name: "ImageLoadLight",
  props: {
    imgSrc: {
      default: "https://img1.baidu.com/it/u=2863108920,4275403644&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=281"
    },
    imgAlt: {
      default: "图片加载失败"
    },
    width:{
      default:'100%'
    },
    height:{
      default:'auto'
    }
  },
  setup(props, ctx) {
    const loading = ref(true)
    watch(props.imgSrc, (c, v) => {
      loading.value = true;
    })
    const imgError = () => {
      // loading.value=false;
    }
    const imgLoad = () => {
      loading.value = false;
    }
    return {
      imgLoad,
      imgError,
      loading
    }
  }

}
</script>

<style scoped>
.kl-image-load-light-box{
  position: relative;
  display: inline-table;
  height: auto;
  width: auto;
}
.kl-image-load-light {
  max-width: 100%;
  height: auto;
  position: relative;
  overflow: hidden;
}
.kl-image-load-light-mask{
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  background-color: black;
  opacity: 0;
  transition: opacity 1s ease-in;
}
.kl-image-load-light-mask.show{
  opacity: 1;
  transition: opacity 1s ease-in;
}
.kl-image-load-light-mask::after {
  content: '';
  user-select: none;
  pointer-events: none;
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background-image: linear-gradient(135deg, transparent 40%, #FFFFFF 50%, transparent 60%);
  background-size: 100% 100%;
  background-repeat: no-repeat;
  animation: au 1s linear infinite;
}
@keyframes au {
  0% {
    left: -100%;
  }
  100% {
    left: 200%;
  }
}

</style>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【vue】图片加载动画效果 的相关文章

  • 了解设置 JQuery 变量

    了解设置 JQuery 变量 最近 我通过在 StackOverflow 上遇到的另一个问题寻找帮助 了解到如何设置 JQuery 变量 如下所示 您可以通过简单地调用变量来创建输入字段 并且锚变量似乎也定义了样式 var clicked
  • 每 3 秒重复一次动画

    我正在使用 WOW js 和 animate css 现在我正在将 CSS 运行到 Infinite 我想知道如何让我的课程运行 3 秒停止并再次开始到无限 My html img src images fork png class for
  • 解析“流”JSON

    我在浏览器中有一个网格 我想通过 JSON 将数据行发送到网格 但浏览器应该在接收到 JSON 时不断解析它 并在解析时将行添加到网格中 换句话说 在接收到整个 JSON 对象后 不应将行全部添加到网格中 应该在接收到行时将其添加到网格中
  • 使用模数按字母顺序对列表进行排序

    我在获取元素列表并按字母顺序对它们进行排序方面没有任何问题 但我很难理解如何使用模数来做到这一点 更新 这是按我的方式工作的代码 但是 我更喜欢下面提供的答案的可重用性 因此接受了该答案
  • 使用 JavaScript 使链接保持活动状态并在单击时显示悬停效果

    I am struggling to make this work I d like to make it where if O F is clicked the hover state stays active if another li
  • 检查 JavaScript 字符串是否为 URL

    JavaScript 有没有办法检查字符串是否是 URL 正则表达式被排除在外 因为 URL 很可能是这样写的stackoverflow 也就是说它可能没有 com www or http 如果你想检查一个字符串是否是有效的 HTTP UR
  • 如何抑制窗口鼠标滚轮滚动...?

    我正在开发嵌入页面中的画布应用程序 我有它 因此您可以使用鼠标滚轮放大绘图 但不幸的是 这会滚动页面 因为它是文章的一部分 当我在 dom 元素上滚动鼠标滚轮时 是否可以阻止鼠标滚轮在窗口上滚动 附加鼠标滚轮 不是 Gecko DOMMou
  • 如何监听 jQuery AJAX 请求?

    以下两种实现 ajaxRequest 1 2 的方法应该是等效的 话说回来 为什么验证回调已执行的单元测试 3 在 1 中成功而在 2 中失败 我应该如何重写测试 3 来监视 2 中的成功回调 如果我尝试stub jQuery ajax使用
  • 除了更改标题之外,如何在 Firefox 中强制另存为对话框?

    有没有办法在 ff 中强制打开 www example com example pdf 的另存为对话框 我无法更改标题 如果您可以将文件以 Base64 格式输出到客户端 则可以使用 data uri 进行下载 location href
  • 在javascript中解析json - 长数字被四舍五入

    我需要解析一个包含长数字的 json 在 java servlet 中生成 问题是长数字被四舍五入 当执行这段代码时 var s x 6855337641038665531 var obj JSON parse s alert obj x
  • 如何在react-native中获取Text组件的onPress值

    我是一名新的 React Native 开发人员 我想使用 onPress 获取 Text 组件的值并将其传递给函数
  • 提交表单并重定向页面

    我在 SO 上看到了很多与此相关的其他问题 但没有一个对我有用 我正在尝试提交POST表单 然后将用户重定向到另一个页面 但我无法同时实现这两种情况 我可以获取重定向或帖子 但不能同时获取两者 这是我现在所拥有的
  • 如何使用tampermonkey模拟react应用程序中的点击?

    我正在尝试使用 Tampermonkey 脚本模拟对 React 元素的点击 不幸的是 由于 React 有自己的影子 DOM 所以天真的方法使用document querySelector 不工作 我遇到了一些需要修改 React 组件本
  • HTML 离线应用程序缓存,列出下载的文件

    作为我正在构建的离线 Web 应用程序的加载屏幕的一部分 使用缓存清单 http developer apple com library safari documentation iPhone Conceptual SafariJSData
  • 模块构建失败(来自 ./node_modules/babel-loader/lib/index.js)Vue Js

    我从 GitHub 下载了一个我和我的朋友正在开发的项目 但是当我尝试运行时 npm run serve 我收到这个错误 src main js 中的错误 Module build failed from node modules babe
  • 为什么我不能在 AngularJS 中使用 data-* 作为指令的属性名称?

    On the t他的笨蛋 http plnkr co edit l3KoY3 p preview您可以注意到属性名称模式的奇怪行为data 在指令中 电话 Test of data named attribute br
  • Javascript转换时区问题

    我在转换当前时区的日期时间时遇到问题 我从服务器收到此日期字符串 格式为 2015 10 09T08 00 00 这是中部时间 但是当我使用 GMT 5 中的 new Date strDate 转换此日期时间时 它返回给我的信息如下 这是不
  • 条件在反应本机生产中失败,但在开发中有效

    我创建了一个反应本机应用程序 我需要通过它进行比较 如果属实 就会执行死刑 问题是 该条件适用于 React Native 开发模式 而不适用于 React Native 生产版本 我使用 firebase 作为数据库 也使用 redux
  • 为什么 jquery 没有检测到单选按钮未被选中的情况? [复制]

    这个问题在这里已经有答案了 可能的重复 JQuery radioButton change 在取消选择期间不会触发 https stackoverflow com questions 5176803 jquery radiobutton c
  • 如何获取浏览器视口中当前显示的内容

    如何获取当前正在显示长文档的哪一部分的指示 例如 如果我的 html 包含 1 000 行 1 2 3 9991000 并且用户位于显示第 500 行的中间附近 那么我想得到 500 n501 n502 或类似的内容 显然 大多数场景都会比

随机推荐

  • Netty学习17-Netty的可视化

    学习第41节 Netty 可视化方案 Console 日志定时输出 JMX 实时展示 ELKK TIG etc ChannelHandler Sharable public class MetricsHandler extends Chan
  • 08-----查找某个文件的路径

    1 使用find命令查找 关于find这个命令 非常强大 它可以根据文件大小 属性 用户 文件名等去查找匹配的文件 这里不再解释 这里只是列出常用的方法 查找某个文件并不输出错误 find name GetInfo 2 gt dev nul
  • 【Arthas】Arthas retransform动态重新加载类

    1 概述 转载 Arthas retransform动态重新加载类 2 开篇 Arthas提供retransform命令来重新加载已加载的类 通过该命令可以在有限制的反编译已加载的类重新修改后生成class文件重新加载 在测试环境中可以尝试
  • springboot参数配置

    全局配置文件 application properties 配置文件 先准备两个pojo实体类Pet和Person Component 用于将Person类作为Bean注入到spring容器中 ConfigurationProperties
  • 【js小游戏&案例】纯前端实现飞机大战,附带源码

    技能 使用html js css实现飞机大战小游戏 需求 我军飞机左右移动 并且按空格 可以发射炮弹 敌方飞机从上往下飞 接触到我方炮弹 飞机被歼灭 我军接触到敌军飞机也将会被歼灭 我方飞机吃到道具可以增加弹道 思路 初始化 初始创建我方飞
  • enum一个最不像class的class

    enum一个最不像class的classjava枚举类型是jdk5出现的 它的出现主要为了解决一些有特殊意义 已经确定的 长度不会改变的集合 月份描述 public class Month 月份名称 private final String
  • SpringMVC之JSR303使用及拦截器使用(带你探索SpringMVC的新领域)

    目录 前言 一 探索JSR303的世界 1 JSR303简介 1 1 什么是JSR303 1 2 JSR303的重要性及使用原因 重要性 原因 1 3 JSR303的常用注解 扩展 2 JSR303快速入门 基本使用 2 1 导入依赖 2
  • 【算法】直接插入排序C语言实现

    不知道大家喜不喜欢打扑克 哈哈 我就挺喜欢的 尤其是三人斗地主 很喜欢 现在我来描述一幅画面看看大家熟不熟悉 我抓牌的习惯是 在抓牌的时候 我要看着我的牌 看看牌的状况 有没有大小鬼 有几个2 有没有长的连 顺便做好基本的排序工作 比如我第
  • http 请求报文响应报文的格式以及Token cookie session 区别

    面试必备 http 请求报文响应报文的格式 Token cookie session 区别 http 请求报文响应报文的格式 HTTP 请求报文和响应报文的格式如下 HTTP 请求报文格式 lt 方法 gt lt 路径 gt lt 协议版本
  • RabbitMQ --- SpringAMQP

    一 简介 SpringAMQP是基于RabbitMQ封装的一套模板 并且还利用SpringBoot对其实现了自动装配 使用起来非常方便 SpringAmqp的官方地址 Spring AMQP SpringAMQP提供了三个功能 自动声明队列
  • gitlab down: redis: 0s, normally up, want up; run:log

    突然发现gitlab不能访问了 报错505 1 查看gitlab的状态 发现redis的状态是down gitlab ctl status down redis 0s normally up want up run log 解决 启动red
  • matlab中global的用法

    Matlab 中子函数不传参直接调用主函数global变量方法 在一个m文件里要调用一个函数 自定义的 但是我希望这个函数能利用并修改workspace中的变量 m文件中的 可是函数的变量全是局部的 无法修改工作区的变量 该怎么办 同时在
  • KMP算法最浅显理解——一看就明白

    说明 KMP算法看懂了觉得特别简单 思路很简单 看不懂之前 查各种资料 看的稀里糊涂 即使网上最简单的解释 依然看的稀里糊涂 我花了半天时间 争取用最短的篇幅大致搞明白这玩意到底是啥 这里不扯概念 只讲算法过程和代码理解 KMP算法求解什么
  • Artec独立三维(3D)扫描软件

    最新版本 Artec Studio 9 1 中文界面 您是否想将自己的Kinect作为 3D 三维扫描仪来使用呢 ArtecStudio9 1为您提供解决方案 它可以和微软的Kinect 华硕的 Xtion XtionProLive以及其他
  • Uncaught SyntaxError: Unexpected end of input

    Uncaught SyntaxError Unexpected end of input 最近做项目遇到这样一个问题Uncaught SyntaxError Unexpected end of input Unexpected end of
  • mysql有没有flashback_Flashback for MySQL 5.7

    实现原理 flashback的概念最早出现于Oracle数据库 用于快速恢复用户的误操作 flashback for MySQL用于恢复由DML语句引起的误操作 目前不支持DDL语句 例如下面的语句 DELETE FROM XXX UPDA
  • xsync 集群同步工具

    前言 在配置集群时 往往需要将文件拷贝到各个机器 一来二去就很麻烦 我们可以使用 xsync 工具同时进行多台机器同步数据 环境准备 我们准备三台虚拟机 他们的 IP 分别为 192 168 56 2 192 168 56 3 192 16
  • python 日期和时间处理(time,datetime模块讲解)

    在现实生活中 我们常常遇到时间序列任务 所以今天讲解下日期和时间处理 Python 日期时间 datetime 1 获取当前时间 import datetime datetime object datetime datetime now p
  • 颜色的 HSL 表示

  • 【vue】图片加载动画效果

    加载后 一种是图片由浅到深 一种是闪光加载效果消失