@@ -15,6 +15,131 @@ Math.random()*(n-m)+m
15
15
// 他会做event.stopPropagation();
16
16
// 停止callback function的执行并且立即return回来
17
17
```
18
+
19
+ - 两种图片lazy加载的方式
20
+ 第一个By JS中级交流群 成都-猎巫 第二个By 上海-zenki
21
+ ``` javascript
22
+ // @description 准备为图片预加载使用的插件
23
+ // 使用的图片容器css类名为lazy-load-wrap
24
+ // 图片真实地址为data-lazy-src
25
+ // 当lazy-load-wrap容器进入视口,则开始替换容器内所有需要延迟加载的图片路径,并更改容器的加载状态
26
+ // 第一种方法
27
+ $ .fn .compassLazyLoad = function (){
28
+ var _HEIGHT = window .innerHeight ,
29
+ _lazyLoadWrap= $ (' .lazy-load-wrap' );
30
+
31
+ var methods= {
32
+ setOffsetTop : function (){
33
+ $ .each (_lazyLoadWrap,function (i ,n ){
34
+ $ (n).attr ({
35
+ ' top' : n .offsetTop - _HEIGHT ,
36
+ ' status' : ' wait'
37
+ });
38
+ })
39
+ },
40
+ isShow : function (){
41
+ var _scrollTop= $ (window ).scrollTop ;
42
+ // 利用image容器判断是否进入视口,而非image本身
43
+ $ .each (_lazyLoadWrap,function (){
44
+ var _that= $ (this );
45
+ if (_that .attr (' status' )=== ' done' ) {
46
+ return ;
47
+ };
48
+ if (_that .attr (' top' )<= _scrollTop) {
49
+ _that .find (' img[data-lazy-src]' ).each (function (i ,n ){
50
+ n .src = $ (n).data (' lazy-src' );
51
+ });
52
+ _that .attr (' status' ,' done' );
53
+ };
54
+ })
55
+ },
56
+ scroll : function (){
57
+ $ (window ).on (' scroll' ,function (){
58
+ methods .isShow ();
59
+ });
60
+ },
61
+ init : function (){
62
+ methods .setOffsetTop ();
63
+ methods .isShow ();
64
+ methods .scroll ();
65
+ }
66
+ };
67
+ methods .init ();
68
+
69
+ }
70
+
71
+
72
+ // 第二种方法
73
+
74
+ var exist= (function ($ ){
75
+ var timer= null ,
76
+ temp= [].slice .call ($ (' .container' ));
77
+ ret= {};
78
+
79
+ for (var i= 0 ,len= temp .length - 1 ;i<= len;i++ ){
80
+ ret[i]= temp[i];
81
+ }
82
+ var isExist = function (winTop ,winEnd ){
83
+ for (var i in ret){
84
+ console .log (ret);
85
+ var item= ret[i],
86
+ eleTop= item .offsetTop ,
87
+ eleEnd= eleTop+ item .offsetHeight ;
88
+
89
+ if ((eleTop> winTop&& eleTop<= winEnd)|| (eleEnd> winTop&& eleEnd<= winEnd)){
90
+ $ (item).css (' background' ,' none' );
91
+ new Tab ($ (item).attr (' id' ),data).init ;
92
+ delete ret[i];
93
+ }
94
+ }
95
+ }
96
+ return {
97
+ timer: timer;
98
+ isExist: isExist;
99
+ };
100
+ })($);
101
+
102
+
103
+
104
+ // 第三种方法
105
+ Zepto (function ($ ) {
106
+ var swiper = new Swiper (' .swiper-container' , {
107
+ pagination: ' .swiper-pagination' ,
108
+ paginationClickable: true ,
109
+ autoplay: 3000 ,
110
+ loop: true ,
111
+ autoplayDisableOnInteraction: false
112
+ });
113
+ (function lazyLoad () {
114
+ var imgs = $ (" .lazyLoad" );
115
+ var src = ' ' ;
116
+ $ .each (imgs, function (index , item ) {
117
+ src = $ (item).attr (' data-src' );
118
+ $ (item).attr (' src' , src);
119
+ });
120
+ })();
121
+ });
122
+ $ (function () {
123
+ var lazyLoadTimerId = null ;
124
+ // / 智能加载事件
125
+ $ (window ).bind (" scroll" , function () {
126
+ clearTimeout (lazyLoadTimerId);
127
+ lazyLoadTimerId = setTimeout (function () {
128
+ // 延迟加载所有图片
129
+ var isHttp = (location .protocol === " http:" );
130
+ $ (" #ym_images img" ).each (function () {
131
+ var self = $ (this );
132
+ if (self .filter (" :above-the-fold" ).length > 0 ) {
133
+ var originUrl = self .attr (" data-original" );
134
+ self .attr (" src" , originUrl);
135
+ }
136
+ });
137
+ }, 500 );
138
+ });
139
+ });
140
+
141
+ ```
142
+
18
143
#### 2. Mobile - js
19
144
20
145
0 commit comments