Browse Source

优化首页视频播放逻辑

pull/19/head
zyronon 4 years ago
parent
commit
f07411eee6
  1. 4
      src/components/slide/SlideItem.vue
  2. 39
      src/pages/home/Index2.vue
  3. 54
      src/pages/home/SlideListVirtual.vue

4
src/components/slide/SlideItem.vue

@ -1,5 +1,5 @@
<template> <template>
<div id="base-slide-item" ref="slideItem"> <div class="base-slide-item">
<slot></slot> <slot></slot>
</div> </div>
</template> </template>
@ -11,7 +11,7 @@ export default {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
#base-slide-item { .base-slide-item {
min-width: 100vw; min-width: 100vw;
min-height: 100vh; min-height: 100vh;
position: relative; position: relative;

39
src/pages/home/Index2.vue

@ -1,13 +1,20 @@
<template> <template>
<div id="home-index"> <div id="home-index">
<SlideListVirtual direction="column" <SlideListVirtual direction="column"
ref="ssss" :virtual="false"
:virtual="true"
:list="videos" :list="videos"
:renderSlide="render" :renderSlide="render"
v-model:active-index="videoActiveIndex" v-model:active-index="videoActiveIndex"
@end="end" @end="end"
> >
<SlideItem v-for="(item,index) of videos">
<Video1
v-model:video="videos[index]"
@showComments="isCommenting = !isCommenting"
@showShare="isSharing = !isSharing"
@goUserInfo="baseActiveIndex = 1"
></Video1>
</SlideItem>
</SlideListVirtual> </SlideListVirtual>
<Comment v-model:is-commenting="isCommenting"/> <Comment v-model:is-commenting="isCommenting"/>
<Share v-model:is-sharing="isSharing" ref="share"/> <Share v-model:is-sharing="isSharing" ref="share"/>
@ -360,19 +367,20 @@ export default {
t(e) { t(e) {
console.log(e) console.log(e)
}, },
end(){ end() {
console.log('end') console.log('end')
setTimeout(()=>{ setTimeout(() => {
[{ [
videoUrl: mp40, {
// videoUrl: 'http://babylife.qiniudn.com/FtRVyPQHHocjVYjeJSrcwDkApTLQ', videoUrl: mp40,
videoPoster: src1Bg, // videoUrl: 'http://babylife.qiniudn.com/FtRVyPQHHocjVYjeJSrcwDkApTLQ',
isLoved: true, videoPoster: src1Bg,
loves: 1234, isLoved: true,
comments: 666, loves: 1234,
shared: 999, comments: 666,
duration: 99 shared: 999,
}, duration: 99
},
{ {
videoUrl: mp41, videoUrl: mp41,
// videoUrl: 'http://babylife.qiniudn.com/FtRVyPQHHocjVYjeJSrcwDkApTLQ', // videoUrl: 'http://babylife.qiniudn.com/FtRVyPQHHocjVYjeJSrcwDkApTLQ',
@ -416,7 +424,8 @@ export default {
].map(v => { ].map(v => {
this.videos.push(v) this.videos.push(v)
}) })
},5000) console.log('ok')
}, 1000)
} }
} }

54
src/pages/home/SlideListVirtual.vue

@ -70,15 +70,27 @@ export default {
// console.log('activeIndex') // console.log('activeIndex')
// this.changeIndex() // this.changeIndex()
}, },
// list(){ watchList: {
// handler(newVal, oldVal) {
// } console.log(newVal)
console.log(oldVal)
},
deep: true
}
},
computed: {
//watch
watchList() {
return [...this.list]
}
}, },
mounted: async function () { mounted: async function () {
this.slideList = this.$refs.slideList if (this.virtual) {
this.list.slice(0, (this.defaultVirtualItemTotal + 1) / 2).map((item, index) => { this.slideList = this.$refs.slideList
this.slideList.appendChild(this.getInsEl(item, index)) this.list.slice(0, (this.defaultVirtualItemTotal + 1) / 2).map((item, index) => {
}) this.slideList.appendChild(this.getInsEl(item, index))
})
}
await this.checkChildren() await this.checkChildren()
this.changeIndex(true) this.changeIndex(true)
}, },
@ -192,19 +204,12 @@ export default {
if (this.slideItems.length < this.defaultVirtualItemTotal) { if (this.slideItems.length < this.defaultVirtualItemTotal) {
this.slideList.appendChild(this.getInsEl(this.list[addItemIndex], addItemIndex)) this.slideList.appendChild(this.getInsEl(this.list[addItemIndex], addItemIndex))
} }
// console.log('this.currentSlideItemIndex', this.currentSlideItemIndex)
// console.log('this.slideItems.length >= this.defaultVirtualItemTotal',this.slideItems.length >= this.defaultVirtualItemTotal)
// console.log('this.currentSlideItemIndex >= (this.defaultVirtualItemTotal + 1) / 2', this.currentSlideItemIndex >= (this.defaultVirtualItemTotal + 1) / 2)
// console.log('this.currentSlideItemIndex <= this.list.length - 3', this.currentSlideItemIndex <= this.list.length - 3)
// console.log(this.slideItems.length >= this.defaultVirtualItemTotal
// && this.currentSlideItemIndex >= (this.defaultVirtualItemTotal + 1) / 2
// && this.currentSlideItemIndex <= this.list.length - 3)
if (this.slideItems.length >= this.defaultVirtualItemTotal if (this.slideItems.length >= this.defaultVirtualItemTotal
&& this.currentSlideItemIndex >= (this.defaultVirtualItemTotal + 1) / 2 && this.currentSlideItemIndex >= (this.defaultVirtualItemTotal + 1) / 2
&& this.currentSlideItemIndex <= this.list.length - 3 && this.currentSlideItemIndex <= this.list.length - 3
) { ) {
let res = $(`#base-slide-list .base-slide-item[data-index=${addItemIndex}]`) let res = $(`#base-slide-list .base-slide-item[data-index=${addItemIndex}]`)
console.log(res) // console.log(res)
if (res.length === 0) { if (res.length === 0) {
this.slideList.appendChild(this.getInsEl(this.list[addItemIndex], addItemIndex)) this.slideList.appendChild(this.getInsEl(this.list[addItemIndex], addItemIndex))
this.appInsMap.get($("#base-slide-list .base-slide-item:first").data('index')).unmount() this.appInsMap.get($("#base-slide-list .base-slide-item:first").data('index')).unmount()
@ -215,17 +220,16 @@ export default {
} }
} }
} else { } else {
// if (this.currentSlideItemIndex > 1) { if (this.currentSlideItemIndex > 1 && this.currentSlideItemIndex <= this.list.length - 4) {
// let item = this.list[this.currentSlideItemIndex - 2] let addItemIndex = this.currentSlideItemIndex - 2
// this.slideList.prepend(this.getInsEl(item, this.currentSlideItemIndex - 2)) this.slideList.prepend(this.getInsEl(this.list[addItemIndex], addItemIndex))
// this.appInsMap.get($("#base-slide-list .base-slide-item:last").data('index')).unmount() this.appInsMap.get($("#base-slide-list .base-slide-item:last").data('index')).unmount()
// // $("#base-slide-list .base-slide-item:last").remove() // $("#base-slide-list .base-slide-item:last").remove()
// $(".base-slide-item").each(function () { $(".base-slide-item").each(function () {
// $(this).css('top', (that.currentSlideItemIndex - 2) * that.wrapperHeight) $(this).css('top', (that.currentSlideItemIndex - 2) * that.wrapperHeight)
// }) })
// } }
} }
this.checkChildren() this.checkChildren()
} }
} }

Loading…
Cancel
Save