This article shares with you the specific code of js to realize the dynamic loading of data when the waterfall flow touches the bottom. For your reference, the specific content is as follows // onScrollEvent scroll bar event <div class="box" ref="box" @mousewheel="onScrollEvent"> //The content of each block start <div class="boxItemStyle" v-for="(userTag, i) in dataSource" :key="i" ref="boxItemStyle"> <a-tag class="moreStyle" @click="more(userTag.primaryParam)"> More></a-tag> <div v-for="item in userTag.userTag" :key="item.code"> <p> {{ item.name }}: {{ item.value }} </p> </div> </div> //Contents in each block end </div> Waterfall layout waterFall() { // Subtract the width of the margin var pageWidth = this.$refs.box.offsetWidth - 200 var columns = 4; //Define a row with 4 columns var itemWidth = parseInt(pageWidth / columns); var arr = []; var nodes = document.getElementsByClassName("boxItemStyle") setTimeout(() => { //var node1 = Array.from(nodes) // var node2 = Array.prototype.slice.call(nodes) for (var i = 0; i < nodes.length; i++) { nodes[i].style.width = itemWidth + "px" if (i < columns) { nodes[i].style.width = itemWidth + "px" nodes[i].style.left = itemWidth * i + i * 50 + "px" nodes[i].style.top = 0 arr.push(nodes[i].offsetHeight); } else { // Find the minimum height in the array and its index var minHeight = arr[0]; var index = 0; for (var j = 0; j < arr.length; j++) { if (minHeight > arr[j]) { minHeight = arr[j]; index = j; } } nodes[i].style.top = arr[index] + 30 + "px", nodes[i].style.left = nodes[index].offsetLeft + 'px'; // Modify the height of the minimum column // The height of the minimum column = the current height + the height of the spliced column arr[index] = arr[index] + nodes[i].offsetHeight + 30; // Set a distance of 30 } } }, 1000) }, Dynamically loading data onScrollEvent () { if ( this.isScroll && this.$refs.box.scrollHeight - this.$refs.box.scrollTop - this.$refs.box.clientHeight <= 0 ) { this.loading = true if (this.ipagination.current == 1) { this.ipagination.current += 1 } let param = {} param['pageNo'] = this.ipagination.current param['pageSize'] = this.ipagination.pageSize param['portraitId'] = this.portraitId postAction(this.url.list, { ...param }).then((res) => { this.loading = false if (res.success) { this.isScroll = res.records this.dataSource = this.dataSource.concat(res.result.records || res.result) this.waterFall(); } }) this.ipagination.current++ } }, The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM. You may also be interested in:
|
<<: How to find and delete duplicate records in MySQL
>>: Problems and solutions for installing Docker on Alibaba Cloud
Table of contents Hidden Problems Solution to ada...
Browser compatibility is the most important part ...
Table of contents js deep copy Data storage metho...
JS provides three methods for intercepting string...
When making forms, we often encounter the situati...
When writing my own demo, I want to use display:f...
Preface Using Docker and VS Code can optimize the...
When the created tab label exceeds the visible ar...
Beginners who are exposed to HTML learn some HTML...
IE8 will have multiple compatibility modes . IE pl...
Table of contents 1. Characteristics of JS 1.1 Mu...
Written in front: Sometimes you may need to view ...
1. Install ffmpeg under centos linux 1. Download ...
When configuring nginx reverse proxy, the slashes...
<br />Question: Why is it not recommended to...