From 01670004fd1fee6137e5068dad6bd306603562a0 Mon Sep 17 00:00:00 2001 From: YM <479443481@qq.com> Date: 星期二, 14 五月 2024 19:17:51 +0800 Subject: [PATCH] 分章节渲染 --- src/books/childHealth/view/content/index.vue | 116 +++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 95 insertions(+), 21 deletions(-) diff --git a/src/books/childHealth/view/content/index.vue b/src/books/childHealth/view/content/index.vue index e47625e..9972ef9 100644 --- a/src/books/childHealth/view/content/index.vue +++ b/src/books/childHealth/view/content/index.vue @@ -1,20 +1,24 @@ <template> - <div class="page-content"> - <pageHeader v-if="showCatalogList.indexOf(0) > -1"></pageHeader> - <chapterOne v-if="showCatalogList.indexOf(1) > -1"></chapterOne> - <chapterOne v-if="showCatalogList.indexOf(1) > -1"></chapterOne> - <chapterTwo v-if="showCatalogList.indexOf(2) > -1"></chapterTwo> - <chapterThree v-if="showCatalogList.indexOf(3) > -1"></chapterThree> - <chapterFour v-if="showCatalogList.indexOf(4) > -1"></chapterFour> - <chapterFive v-if="showCatalogList.indexOf(5) > -1"></chapterFive> - <chapterSix v-if="showCatalogList.indexOf(6) > -1"></chapterSix> - <chapterSeven v-if="showCatalogList.indexOf(7) > -1"></chapterSeven> - <chapterEight v-if="showCatalogList.indexOf(8) > -1"></chapterEight> - <chapterNine v-if="showCatalogList.indexOf(9) > -1"></chapterNine> - <chapterTen v-if="showCatalogList.indexOf(10) > -1"></chapterTen> - <chapterEleven v-if="showCatalogList.indexOf(11) > -1"></chapterEleven> - <chapterTwelve v-if="showCatalogList.indexOf(12) > -1"></chapterTwelve> - <chapterThirteen v-if="showCatalogList.indexOf(13) > -1"></chapterThirteen> + <div class="page-main" @scroll="throttledScrollHandler"> + <div class="page-content"> + <pageHeader v-if="showCatalogList.indexOf(0) > -1"></pageHeader> + <chapterOne v-if="showCatalogList.indexOf(1) > -1"></chapterOne> + <chapterOne v-if="showCatalogList.indexOf(1) > -1"></chapterOne> + <chapterTwo v-if="showCatalogList.indexOf(2) > -1"></chapterTwo> + <chapterThree v-if="showCatalogList.indexOf(3) > -1"></chapterThree> + <chapterFour v-if="showCatalogList.indexOf(4) > -1"></chapterFour> + <chapterFive v-if="showCatalogList.indexOf(5) > -1"></chapterFive> + <chapterSix v-if="showCatalogList.indexOf(6) > -1"></chapterSix> + <chapterSeven v-if="showCatalogList.indexOf(7) > -1"></chapterSeven> + <chapterEight v-if="showCatalogList.indexOf(8) > -1"></chapterEight> + <chapterNine v-if="showCatalogList.indexOf(9) > -1"></chapterNine> + <chapterTen v-if="showCatalogList.indexOf(10) > -1"></chapterTen> + <chapterEleven v-if="showCatalogList.indexOf(11) > -1"></chapterEleven> + <chapterTwelve v-if="showCatalogList.indexOf(12) > -1"></chapterTwelve> + <chapterThirteen + v-if="showCatalogList.indexOf(13) > -1" + ></chapterThirteen> + </div> </div> </template> @@ -34,18 +38,76 @@ import chapterTwelve from "./components/chapter012.vue"; import chapterThirteen from "./components/chapter013.vue"; +import _ from "lodash"; + export default { - name: "temp-book", data() { return { - catalogLength: 13, - showCatalogList: [] + catalogLength: 13, // 鎬荤珷鑺傛暟 + showCatalogList: [], // 鏄剧ず鐨勭珷鑺� + loadThreshold: 300, // 瑙﹀彂鍔犺浇闃堝�� + throttleThreshold: 100, // 鑺傛祦闃堝�� + previousScrollTop: 0, + throttledScrollHandler: null }; }, mounted() { + // 榛樿鍔犺浇绔犺妭 this.showCatalogList = [0]; + // 婊氬姩鐩戝惉鑺傛祦 + this.throttledScrollHandler = _.throttle( + this.scrollFun, + this.throttleThreshold, + { leading: true, trailing: false } + ); }, - methods: {}, + methods: { + scrollFun(e) { + + // 鍒ゆ柇鍚戜笂婊氬姩杩樻槸鍚戜笅婊氬姩 + if (event.target.scrollTop > this.previousScrollTop) { + console.log("鍚戜笅婊氬姩"); + const currentScrollTop = + event.target.scrollTop + event.target.offsetHeight; + if ( + currentScrollTop >= + event.target.scrollHeight - this.loadThreshold + ) { + // 鍒拌揪闃堝�� + if ( + this.showCatalogList[this.showCatalogList.length - 1] < + this.catalogLength + ) { + // 鍔犺浇涓嬩竴绔� + this.showCatalogList.push( + this.showCatalogList[this.showCatalogList.length - 1] + 1 + ); + if (this.showCatalogList.length > 3) { + // 瓒呰繃涓夌珷闅愯棌椤堕儴涓�绔� + this.showCatalogList.shift(); + } + } + } + } else if (event.target.scrollTop < this.previousScrollTop) { + console.log("鍚戜笂婊氬姩"); + const currentScrollTop = event.target.scrollTop; + if (currentScrollTop <= this.loadThreshold) { + // 鍒拌揪闃堝�� + if (this.showCatalogList[0] > 0) { + // 鍔犺浇涓婁竴绔� + this.showCatalogList.unshift(this.showCatalogList[0] - 1); + if (this.showCatalogList.length > 3) { + // 瓒呰繃涓夌珷闅愯棌搴曢儴涓�绔� + this.showCatalogList.pop(); + } + } + } + } + console.log(this.showCatalogList); + // 鏇存柊涓婁竴娆℃粴鍔ㄧ殑浣嶇疆 + this.previousScrollTop = event.target.scrollTop; + } + }, components: { pageHeader, chapterOne, @@ -65,4 +127,16 @@ }; </script> -<style lang="less" scoped></style> +<style lang="less" scoped> +.page-main { + width: 100%; + height: 100%; + overflow: auto; + .page-content { + max-width: 816px; + min-width: 375px; + margin: 0 auto; + padding-bottom: 100px; + } +} +</style> -- Gitblit v1.9.1