为了账号安全,请及时绑定邮箱和手机立即绑定
  • 一、图片预加载的3个步骤

    1、实例化一个Image对象。

    2、监听它的load、error事件。

    3、为src附上正确的图片路径。

    查看全部
    1 采集 收起 来源:课程总结

    2018-04-21

  • (function($) {

      // 面向对象

      function PreLoad(imgs, options) {

        this.imgs = (typeof imgs === 'string') ? [imgs] : imgs;

        this.opts = $.extend({}, PreLoad.DEFAULTS, options); // options和PreLoad.DEFAULTS这2个对象融合,生成新的对象,将新对象返回给opts保存下来。

        if (this.opts.order === 'ordered') {

          this._ordered();

        } else {

          this._unordered(); // _表示只在函数内部使用,而不在外部调用

        }

      }

      PreLoad.DEFAULTS = {

        order: 'unordered', // 无序预加载

        each: null, // 每一张图片加载完毕后执行

        all: null  // 所有图片加载完毕后执行

      };

      PreLoad.prototype._ordered = function() { //方法写在原型链上

        var opts = this.opts, // 保存为局部变量

            imgs = this.imgs,

            len = imgs.length,

            count = 0;

        var imgObj = new Image();

        load();

        function load() {

          $(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._unordered = function () {

        var imgs = this.imgs,

            opts = this.opts,

            count = 0,

            len = imgs.length;

        $.each(imgs, function(i, src) {

          if (typeof src != 'string') return;

          var imgObj = new Image();

          $(imgObj).on('load error', function() {

            opts.each && opts.each(count); // 如果opts.each存在,执行opts.each方法

            if (count >= len - 1) {

              opts.all && opts.all();

            }

            count ++;

          });

          imgObj.src = src;

        });

      };

      // 插件:①附在$.fn上(要选择一个元素);②直接跟在jquery对象,是一个工具函数。(工具方法)

      // $.fn.extend -> $('#img').preload();

      $.extend({

        preload: function(imgs, opts) {

          new PreLoad(imgs, opts);

        }

      });

    })(jQuery);


    查看全部
  • 一、禁止事件冒泡:e.stopPropagation

    1、$btn.on('click',function(){e.stopPropagation});

    btn点击事件冒泡到document,在点击btn的时候会触发document的隐藏事件,所以要阻止btn的事件冒泡,是处理btn,而不是document.


    查看全部
  • 一、li*75>img[src="imags/qq/$.jpg"],按了tab之后,$的地方会从1到75开始计数。

    db:display:block;

    查看全部
  • 一、插件写在局部作用域中,就是为了使它和外部的内容互不干涉,互不影响。但是js是没有局部作用域的,我们一般用闭包模拟局部作用域。

    (function($) {

      // 面向对象

      function PreLoad(imgs, options) {

        this.imgs = (typeof imgs === 'string') ? [imgs] : imgs;

        this.opts = $.extend({}, PreLoad.DEFAULTS,options); // optionsPreLoad.DEFAULTS2个对象融合,生成新的对象,将新对象返回给opts保存下来。

        this._unordered(); // _表示只在函数内部使用,而不在外部调用

      }

      PreLoad.DEFAULTS = {

        each: null, // 每一张图片加载完毕后执行

        all: null  // 所有图片加载完毕后执行

      };

      PreLoad.prototype._unordered = function () {

        var imgs = this.imgs,

            opts = this.opts,

            count = 0,

            len = imgs.length;

        $.each(imgs, function(i, src) {

          if (typeof src != 'string') return;

          var imgObj = new Image();

          $(imgObj).on('load error', function() {

            opts.each && opts.each(count); // 如果opts.each存在,执行opts.each方法

            if (count >= len - 1) {

              opts.all && opts.all();

            }

            count ++;

          });

          imgObj.src = src;

        });

      }

      // 插件:①附在$.fn上(要选择一个元素);②直接跟在jquery对象,是一个工具函数。(工具方法)

      // $.fn.extend -> $('#img').preload();

      $.extend({

        preload: function(imgs, opts) {

          new PreLoad(imgs, opts);

        }

      });

    })(jQuery);

    查看全部
  • Math.max(a, b) //返回最大值
    Math.min(a, b) // 返回最小值


    查看全部
  • 一、Image对象有2个事件:load, error。

    var imgObj = new Image(); // new实例化image对象。

    $(imgObj).on('load error', function() {});

    图片正常被加载之后,会触发load事件,如果没有被正常加载,会触发error事件。

    查看全部
  • 一、Math.max(0, --index),表示先index-1,再与0进行比较,取较大的那个值。

    对应的有Math.min()方法。eg:Math.min(0, 1, 3, 5),得到的是0。

    查看全部
  • 一、css简写

    (1)tac意为   text-align:center;

    (2)dib意为  display:inline-block;

    (3)mt300意为 margin-top:300;

    查看全部
  • 一、图片的预加载效果:预知用户将发生的行为,提前加载用户所需的图片

    二、图片预加载效果展示

    1、网站的loading页

    2、局部图片的加载-表情插件

    3、漫画网站

    三、图片预加载的特点

    1、提前加载所需图片

    2、更好的用户体验

    四、图片预加载:有序加载、无序加载。

    查看全部
  • 有序无序预加载整合

    查看全部
  • 预加载改成插件

    查看全部
  • index = math.max(0,--index);
    查看全部
  • 'prev' === $(this).data('control'),这种写法有效的规避判断条件写错的问题!
    查看全部
  • emmet语法
    查看全部

举报

0/150
提交
取消
课程须知
1、HTML和CSS基础知识 2、JS面向对象的基础知识
老师告诉你能学到什么?
1、利用图片的预加载技术获得更好的用户体验 2、什么是有序预加载和无序预加载,以及在什么情况下使用它们 3、jQuery插件的写法

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!