Skip to content

Commit 1213632

Browse files
committed
fix: 1.9.1scrollHeight 导致加载存在问题
1 parent d6911a1 commit 1213632

File tree

4 files changed

+10
-83
lines changed

4 files changed

+10
-83
lines changed

index.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
if(t.setAttribute('style','width:1vw'), !t.style.width) r(),window.addEventListener('resize', r)
1919
})(document.documentElement, document.createElement('div'), 750);
2020
</script>
21-
21+
<!--
2222
<script>
2323
setTimeout(_ => console.log(4))
2424
@@ -36,7 +36,7 @@
3636
})
3737
})
3838
39-
console.log(2)
39+
console.log(2) -->
4040
</script>
4141
</body>
4242
</html>

main/waterfall.vue

+5-78
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
position: absolute;
99
top: 100%;
1010
left: 100%;
11+
width: 0;
12+
height: 0;
13+
overflow: hidden;
1114
}
1215
.vue-waterfall .vue-waterfall-column{
1316
float: left;
@@ -107,7 +110,6 @@ import bus from './bus'
107110
})
108111
},
109112
data(newVal,oldVal){
110-
111113
this.$nextTick(()=>{
112114
clearTimeout(this.timer)
113115
this.timer = setTimeout(()=>{
@@ -119,13 +121,10 @@ import bus from './bus'
119121
{
120122
this.loadedIndex = 0
121123
}
122-
// console.log(newVal.length,oldVal.length,newVal.length,this.loadedIndex)
123124
if(newVal.length>oldVal.length || newVal.length>this.loadedIndex)
124125
{
125-
126126
if(newVal.length === oldVal.length)
127127
{
128-
// console.log(this.loadedIndex)
129128
this.resize(this.loadedIndex>0?this.loadedIndex:null)
130129
return
131130
}
@@ -171,7 +170,6 @@ import bus from './bus'
171170
for(var i=0;i<imgs.length;i++)
172171
{
173172
var lazySrc = imgs[i].getAttribute('lazy-src')
174-
// console.log(lazySrc)
175173
if(!imgs[i].getAttribute('src')&&lazySrc)
176174
{
177175
var newImg = new Image()
@@ -212,9 +210,7 @@ import bus from './bus'
212210
if(this.columns.length>0)
213211
{
214212
let min = this.columns[0]
215-
// await new Promise(async (resolve,reject)=>{
216213
for(var i=1;i<this.columns.length;i++){
217-
// console.log('---')
218214
if(await self.getHeight(min)>await self.getHeight(self.columns[i])){
219215
min = self.columns[i]
220216
}
@@ -254,30 +250,22 @@ import bus from './bus'
254250
elements = this.$slots.default.splice(index)
255251
}
256252
257-
// console.log('resize',elements.length)
258253
for(var j=0;j<elements.length;j++){
259-
// (async function(j){
260-
// console.log(j)
261254
if(elements[j].elm&&self.checkImg(elements[j].elm))
262255
{
263-
// console.log(elements[j].elm)
264256
var imgs = elements[j].elm.getElementsByTagName('img')
265257
var newImg = new Image()
266258
newImg.src = imgs[0].src
267-
// self.lazyLoad(imgs)
268-
269259
if(newImg.complete)
270260
{
271-
// self.computedPx(imgs[0],newImg)
272261
await self.append(elements[j].elm)
273-
self.lazyLoad(imgs)
262+
self.lazyLoad(imgs)
274263
}
275264
else{
276265
await new Promise( (resolve,reject)=>{
277266
newImg.onload = async function(){
278267
await self.append(elements[j].elm)
279268
self.lazyLoad(imgs)
280-
// console.log('loaded')
281269
resolve()
282270
}
283271
newImg.onerror= async function(){
@@ -286,16 +274,13 @@ import bus from './bus'
286274
resolve()
287275
}
288276
})
289-
// console.log(j)
290277
}
291278
292279
}
293280
else{
294281
await self.append(elements[j].elm)
295-
// console.log('append')
296282
}
297283
self.loadedIndex++
298-
// })(i)
299284
}
300285
this.isresizing = false
301286
self.$emit('finish')
@@ -305,9 +290,7 @@ import bus from './bus'
305290
306291
img.style.width = imgApi.width/this.columnWidth
307292
},
308-
lazyLoad(imgs){ //
309-
// console.log(123)
310-
// console.log('lazy-load')
293+
lazyLoad(imgs){
311294
if(!imgs)
312295
{
313296
if(!this.root)
@@ -325,20 +308,6 @@ import bus from './bus'
325308
}
326309
for(var index=0;index<imgs.length; index++)
327310
{
328-
// if(imgs[index].className.match('animation')&&imgs[index].getAttribute('src'))
329-
// {
330-
// continue
331-
// }
332-
// if(!imgs[index].getAttribute('src')&&imgs[index].getBoundingClientRect().top<this.clientHeight+this.trueLazyDistance)
333-
// {
334-
// imgs[index].src = imgs[index].getAttribute('lazy-src')
335-
// imgs[index].className = imgs[index].className + ' animation'
336-
// // imgs[index].removeAttribute('lazy-src')
337-
// }
338-
// else if(imgs[index].getAttribute('src')&&!imgs[index].className.match('animation')){
339-
// imgs[index].className = imgs[index].className + ' animation'
340-
// }
341-
342311
if(imgs[index].className.match('animation')&&imgs[index].getAttribute('src'))
343312
{
344313
continue
@@ -379,47 +348,6 @@ import bus from './bus'
379348
this.resize(0,elements)
380349
},
381350
async getHeight(dom){
382-
// var flag = false
383-
// var imgs = dom.querySelectorAll('img')
384-
// var imgHeight = 0
385-
// for(var i=0;i<imgs.length;i++)
386-
// {
387-
// var lazySrc = imgs[i].getAttribute('lazy-src')
388-
// if(!imgs[i].getAttribute('src')&&lazySrc)
389-
// {
390-
// flag = true
391-
// var newImg = new Image()
392-
// newImg.src = lazySrc
393-
// if(newImg.complete)
394-
// {
395-
// var trueWidth = imgs[i].offsetWidth || this.columnWidth
396-
// var imgColumnHeight = newImg.height*trueWidth/newImg.width
397-
// imgHeight += newImg.height
398-
// if(imgs[i].offsetWidth)
399-
// {
400-
// imgs[i].style.height = imgColumnHeight+'px'
401-
// }
402-
// }
403-
// else{
404-
// await new Promise((resolve,reject)=>{
405-
// newImg.onload = function(){
406-
// var trueWidth = imgs[i].offsetWidth || this.columnWidth
407-
// var imgColumnHeight = newImg.height*trueWidth/newImg.width
408-
// imgHeight += newImg.height
409-
// if(imgs[i].offsetWidth)
410-
// {
411-
// imgs[i].style.height = imgColumnHeight+'px'
412-
// }
413-
// resolve()
414-
// }
415-
// newImg.onerror= function(){
416-
// imgHeight += 100
417-
// resolve()
418-
// }
419-
// })
420-
// }
421-
// }
422-
// }
423351
return dom.offsetHeight
424352
},
425353
emitLoadMore(){
@@ -432,7 +360,6 @@ import bus from './bus'
432360
const scrollHeight = this.root.scrollHeight
433361
var diff = scrollHeight - scrollTop - self.clientHeight
434362
self.$emit('scroll',{scrollHeight:scrollHeight,scrollTop:scrollTop,clientHeight:self.clientHeight,diff:diff,time:Date.now()})
435-
console.log(diff,scrollHeight,scrollTop,self.clientHeight)
436363
if(diff <self.max&&self.loadmore&&scrollHeight>self.clientHeight){
437364
self.lastScrollTop = scrollTop
438365
self.loadmore = false

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
"vue-loader": "^13.3.0",
5151
"vue-style-loader": "^3.1.2",
5252
"vue-template-compiler": "^2.6.10",
53-
"vue-waterfall2": "^1.8.22",
53+
"vue-waterfall2": "^1.9.2",
5454
"webpack": "^3.6.0",
5555
"webpack-bundle-analyzer": "^2.9.0",
5656
"webpack-dev-server": "^2.9.1",

src/components/evaluateList.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,10 @@
119119
<div class="btn-group"><button style="width:250px;" class="blue-light"><router-link to="/">To Common Demo (前往普通Demo)</router-link></button> <button @click="switchCol(5)">5column(列)</button> <button @click="switchCol(8)">8column(列)</button> <button @click="switchCol(10)">10column(列)</button> <button @click="reset">reset(重置)</button> <a style="color:red;" href="https://github.com/Rise-Devin/vue-waterfall2/blob/master/README.md" target="_blank" >GITHUB</a> <b style="color:blue">滚动至底部可触发loadmore</b>
120120

121121
<div class="githubdata" @click="toGitHub"><button class="blue-light"><img src="../assets/star.png" /> Star <span>{{gitHubData.stargazers_count}}</span></button><button class="blue-light"><img src="../assets/fork.png" /> Fork <span>{{gitHubData.forks_count}}</span></button></div> </div>
122-
<waterfall :col='col' :data="data" @loadmore="loadmore" >
122+
<waterfall :col='col' :data="data" @loadmore="loadmore" :lazyDistance="50" >
123123
<template >
124124
<div class="cell-item" v-for="(item,index) in data" :key="index" >
125-
<img v-if="item.img" :lazyDistance="10" :lazy-src="item.img" alt="加载错误" />
125+
<img v-if="item.img" :lazy-src="item.img" alt="加载错误" />
126126
<div class="item-body">
127127
<div class="item-desc">{{item.title}}</div>
128128
<div class="item-footer">

0 commit comments

Comments
 (0)