js realizes the dynamic loading of data by waterfall flow bottoming out

js realizes the dynamic loading of data by waterfall flow bottoming out

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:
  • JS realizes the effect of picture waterfall flow
  • Using js to achieve waterfall effect
  • How to use JS to implement waterfall layout of web pages
  • js to achieve waterfall flow layout (infinite loading)
  • 3 ways to implement waterfall layout with JavaScript
  • Have you learned how to implement JavaScript waterfall flow?

<<:  How to find and delete duplicate records in MySQL

>>:  Problems and solutions for installing Docker on Alibaba Cloud

Recommend

Implementation of textarea adaptive height solution in Vue

Table of contents Hidden Problems Solution to ada...

A brief discussion on browser compatibility issues in JavaScript

Browser compatibility is the most important part ...

Let you understand the deep copy of js

Table of contents js deep copy Data storage metho...

Detailed explanation of three methods of JS interception string

JS provides three methods for intercepting string...

CSS text alignment implementation code

When making forms, we often encounter the situati...

CSS achieves highly adaptive full screen

When writing my own demo, I want to use display:f...

Detailed process of using Vscode combined with docker for development

Preface Using Docker and VS Code can optimize the...

Vue implements tab label (label exceeds automatic scrolling)

When the created tab label exceeds the visible ar...

Beginners learn some HTML tags (3)

Beginners who are exposed to HTML learn some HTML...

IE8 uses multi-compatibility mode to display web pages normally

IE8 will have multiple compatibility modes . IE pl...

Detailed introduction to JS basic concepts

Table of contents 1. Characteristics of JS 1.1 Mu...

How to query the latest transaction ID in MySQL

Written in front: Sometimes you may need to view ...

Detailed tutorial for installing ffmpeg under Linux

1. Install ffmpeg under centos linux 1. Download ...

A brief discussion on the magical slash in nginx reverse proxy

When configuring nginx reverse proxy, the slashes...