图片预加载

作者 : 开心源码 本文共3398个字,预计阅读时间需要9分钟 发布时间: 2022-05-12 共236人阅读

背景

利用图片的预加载技术取得更好的客户体验

什么是有序预加载和无序预加载

jQuery插件的写法

图片预加载,预知客户将要发生的行为,提前加载客户所需的图片

网站loading页

image.png

局部图片的加载

图片相册之结构和样式

无序加载,有序加载

image.png

图片预加载:
分类:
1:无序加载
2:有序加载

清理下滑线:text-decoration:none;

data-control属性
href=”javascript:;”空链接

<!DOCTYPE html><html>  <head>    <meta charset="utf-8" />    <title>图片加载之无序加载</title>    <style>      .box {        text-align: center;        margin-top: 20px;      }      .box .btn {        display: inline-block;        height: 30px;        line-height: 30px;        border: 1px solid #ccc;        background-color: #fff;        padding: 0 10px;        margin-right: 50px;        color: #333;      }      .box .btn:hover {        background-color: #eee;      }      .box a {        text-decoration: none;      }      .box img {        height: 80vh;        width: 90vw;      }      .loading {        position: fixed;        top: 0;        left: 0;        bottom: 0;        right: 0;        background-color: #eee;        text-align: center;        font-size: 30px;        display: flex;        justify-content: center;        align-items: center;      }    </style>  </head>  <body>    <!--内容展现区域-->    <div class="box">      <img id="img" src="" alt="" title="" />      <p>        <a href="javascript:void(0);" class="btn" data-control="prev">上一页</a>        <a href="javascript:void(0);" class="btn" data-control="nex">下一页</a>      </p>    </div>    <!--内容加载页区域-->    <div class="loading">      <p class="progress">0%</p>    </div>    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>    <script type="text/javascript" src="js/index2-4.js"></script>    <script>      // 定义一个图片数组      var imgs = [        ' //blob/master/ProImages/ImgPreloading01.jpg?raw=true',        ' //blob/master/ProImages/ImgPreloading02.jpg?raw=true',        ' //blob/master/ProImages/ImgPreloading03.jpg?raw=true',        ' //blob/master/ProImages/ImgPreloading04.jpg?raw=true',        ' //blob/master/ProImages/ImgPreloading05.jpg?raw=true',        ' //blob/master/ProImages/ImgPreloading06.jpg?raw=true',        ' //blob/master/ProImages/ImgPreloading07.jpg?raw=true',        ' //blob/master/ProImages/ImgPreloading08.jpg?raw=true',        ' //blob/master/ProImages/ImgPreloading09.jpg?raw=true',        ' /blob/master/ProImages/ImgPreloading10.jpg?raw=true'      ];      // 获取图片数组的长度      var index = 0;      var len = imgs.length;      var $progress = $('.progress');      // 调用插件      $.preload(imgs, {        // 实现遍历的功能        each: function(count) {          $progress.html(Math.round((count + 1) / len * 100) + '%');        },        // 实现隐藏遮罩层的功能        all: function() {          $('.loading').hide();        }      })      // 定义点击事件      $('.btn').on('click', function() {        if('prev' === $(this).data('control')) {          index = Math.max(0, --index);        } else {          index = Math.min(len - 1, ++index)        }        document.title = (index + 1) + '/' + len;        $("#img").attr('src', imgs[index]);      })      // 为初始页面赋值      document.title = (index + 1) + '/' + len;      $("#img").attr('src', imgs[index]);    </script>  </body></html>

image.png

load();// 有序预加载function load() { var imgObj = new Image(); $(imgObj).on('load error', function () {  if(count >= len) {  // 所有图片已经加载完毕  }else{  load();  }  count++;});imgObj.src=imgs[count];}

图片加载preload.js

(function ($) { function PreLoad(imgs, options) {  this.imgs = (typeof imgs === 'string') ? [imgs] : imgs;  this.opts = $.extend({}, PreLoad.DEFAULTS, options);    if (this.opts.order === 'ordered') {   this._ordered(); } else {   this._unoredered(); }}PreLoad.DEFAULTS = { order: 'unordered', // 无序预加载 each: null, // 每一张图片加载完毕后执行 all: null // 所有图片加载完毕后执行};PreLoad.prototype._ordered = function () { // 有序加载 var opts = this.opts, imgs = this.imgs, len = imgs.length, count = 0;load();// 有序预加载function load() { var imgObj = new Image(); $(imgObj).on('load error', function () { opts.each && opts.each(count);  if(count >= len) {  // 所有图片已经加载完毕  opts.all && opts.all();  }else{  load();  }  count++;});imgObj.src=imgs[count];}},PreLoad.prototype._unoreddered = function () { // 无序加载 var imgs = this.imgs, opt = this.opts, count = 0, len = img.length; $.each(imgs, function(i, src) {  if(typeof src != 'string') return;  var imgObj = new Image();

图片的预加载:

var  imgObj = new Image();$(imgObj).on('load error', function() {});imgObj.src= src;

请点赞!由于你的鼓励是我写作的最大动力!

官方微信公众号

吹逼交流群:711613774

吹逼交流群 上一篇 目录 已是最后

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 图片预加载

发表回复