1. <img class="js-lazy-image centered" src="./img/dog-running.svg" width="400" height="400" data-src="./img/dog-running.jpg">
  2. <img class="js-lazy-image centered" src="./img/dog-running.svg" width="400" height="400" data-src="./img/dog-running.jpg">
  3. <img class="js-lazy-image centered" src="./img/dog-running.svg" width="400" height="400" data-src="./img/dog-running.jpg">
  1. .fade-in {
  2. animation-name: fadeIn;
  3. animation-duration: 1.3s;
  4. animation-timing-function: cubic-bezier(0, 0, 0.4, 1);
  5. animation-fill-mode: forwards;
  6. }
  7.  
  8. @keyframes fadeIn {
  9. from {
  10. opacity:;
  11. }
  12.  
  13. to {
  14. opacity:;
  15. }
  16. }
  17.  
  18. .centered {
  19. display:block;
  20. margin:0 auto;
  21. }
  1. 'use strict';
  2. var images = document.querySelectorAll('.js-lazy-image'), config = {
  3. rootMargin: '50px 0px',
  4. threshold: 0.01
  5. }, imageCount = images.length, observer;
  6. if (!('IntersectionObserver'in window))
  7. loadImagesImmediately(images);
  8. else {
  9. observer = new IntersectionObserver(onIntersection,config);
  10. for (var image, i = 0; i < images.length; i++)
  11. (image = images[i],
  12. !image.classList.contains('js-lazy-image--handled')) && observer.observe(image)
  13. }
  14. function fetchImage(a) {
  15. return new Promise(function(b, c) {
  16. var d = new Image;
  17. d.src = a,
  18. d.onload = b,
  19. d.onerror = c
  20. }
  21. )
  22. }
  23. function preloadImage(a) {
  24. var b = a.dataset.src;
  25. return b ? fetchImage(b).then(function() {
  26. applyImage(a, b)
  27. }) : void 0
  28. }
  29. function loadImagesImmediately(a) {
  30. for (var d, b = Array.from(a), c = 0; c < a.length; c++)
  31. d = a[c],
  32. preloadImage(d)
  33. }
  34. function disconnect() {
  35. observer && observer.disconnect()
  36. }
  37. function onIntersection(a) {
  38. 0 === imageCount && observer.disconnect();
  39. for (var c, b = 0; b < a.length; b++)
  40. c = a[b],
  41. 0 < c.intersectionRatio && (imageCount--,
  42. observer.unobserve(c.target),
  43. preloadImage(c.target))
  44. }
  45. function applyImage(a, b) {
  46. a.classList.add('js-lazy-image--handled'),
  47. a.src = b,
  48. a.classList.add('fade-in')
  49. }

js——图片懒加载的更多相关文章

  1. JS图片懒加载

    简介 当页面图片太多时,加载速度就会很慢.尤其是用2G/3G/4G访问页面,不仅页面慢,而且还会用掉很多流量.图片懒加载的原理就是将页面内所有需要加载的图片全部换成一张默认的图片(一般尺寸很小),只有 ...

  2. js 图片懒加载

    图片懒加载(图片出现在可视区域再加载) 兼容性:兼容目前流行的全部浏览器,包括:兼容到IE6) 使用方法: 引入相应的js文件<script src="js/lazy.js" ...

  3. 【前端优化】js图片懒加载及优化

    一.前言 为啥要对图片使用懒加载?我们首先来聊聊这个问题,对于页面来说架子啊速度影响着最大的就是图片,一张普通的图片可以达到4-5M的大小,而代码压缩也就只有几十KB.当页面图片过多的时候,页面加载速 ...

  4. js图片懒加载(滚动加载)是否生效

    一.什么是懒加载? 对未出现在视野范围内的图片先不进行加载,等到出现在视野范围才去加载. 二.为什么使用懒加载? 懒加载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数. 理论性知识大家都有自 ...

  5. js图片懒加载(滚动加载)判断是否生效

    一.什么是懒加载? 对未出现在视野范围内的图片先不进行加载,等到出现在视野范围才去加载. 二.为什么使用懒加载? 懒加载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数. 理论性知识大家都有自 ...

  6. web性能优化之js图片懒加载

    html <div class="container"> <ul> <li> <div id="first" clas ...

  7. 原生js图片懒加载特效

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. js原生图片懒加载 或 js原生图片预加载,html标签自定义属性

    使用原声js来实现图片预加载,或图片懒加载,小伙伴们可以根据项目需要来结合vue或者是react来进行修改. 一.什么是图片懒加载或什么是图片预加载 当访问一个页面的时候,先把img元素或是其他元素的 ...

  9. jquery 图片懒加载

      jquery 图片懒加载 CreationTime--2018年7月1日14点45分 Author:Marydon 1.源码展示 (function(a){a.fn.lazyload=functi ...

随机推荐

  1. Python Revisited Day 05(模块)

    目录 5.1 模块与包 5.1.1 包 5.2 Python 标准库概览 5.2.1 字符串处理 io.StringIO 类 5.2.3 命令行设计 5.2.4 数学与数字 5.2.5 时间与日期 5 ...

  2. mysql常用权限命令、乱码及其他问题记录

    用户管理 use mysql; 查看   select host,user,password from user ; 创建 create user  xuhong IDENTIFIED by 'xuh ...

  3. emwin 之 GUI_MessageBox 阻塞特性

    2019-03-01 [小记] GUI_MessageBox 函数执行后必须手动点击关闭窗口,未关闭窗口前线程将阻塞在此处等待关闭窗口事件 [使用场景] 由于该函数不会产生任何消息, 所以可利用阻塞特 ...

  4. centos7启动网卡报错(Failed to start LSB: Bring up/down networking )

    systemctl status network.service systemctl stop NetworkManager systemctl disable NetworkManager syst ...

  5. Tensorflow基本语法

    一.tf.Variables() import tensorflow as tf Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0)) se ...

  6. Python 文件读取

    1. 最基本的读文件方法: # File: readline-example-1.py file = open("sample.txt") while 1: line = file ...

  7. Java IO流操作汇总: inputStream 和 outputStream【转】

    我们在进行Android java 开发的时候,经常会遇到各种IO流操作.IO流操作一般分为两类:字符流和字节流.以“Reader”结尾都是字符流,操作的都是字符型的数据:以“Stream”结尾的都是 ...

  8. java poi 操作ppt

    java poi 操作ppt 可以参考: https://www.w3cschool.cn/apache_poi_ppt/apache_poi_ppt_installation.html http:/ ...

  9. Vim使用技巧:特定文件类型关联缩进

    Vim如何打开特定文件类型关联自动缩进呢?答案:将filetype indent on写入你的.vimrc文件中

  10. JavaScript 日期和时间基础知识

    前言 学习Date对象之前,首先要先了解关于日期和时间的一些知识.比如,闰年.UTC等等.深入了解这些,有助于更好地理解javascript中的Date对象. 标准时间 一般而言的标准时间是指GMT和 ...