使用jquery插件waterfall实现自动加载下一页

本文介绍了如何使用jQuery插件Waterfall实现瀑布流布局,并自动加载下一页内容。通过设置options和使用特定的方法,如prepend、append等,实现数据的动态加载。同时,文章提供了不同场景下的演示示例,包括无限下拉、有限下拉后的分页显示、固定宽度瀑布流等。Waterfall默认使用handlebars模板,但也可以配置为其他模板引擎或直接使用HTML格式加载。
摘要由CSDN通过智能技术生成

本文内容主要摘自:<http://wlog.cn/waterfall/index-zh.html>

开发时请参照原文,本文是在做的过程中遇到的一些问题进行补充说明:

Waterfall

下载

下载waterfall插件最新版本。

使用

html:

<div id="container"></div>

这段代码是作为加载内容的容器。

引入jquery,handlebars和waterfall(注:waterfall默认返回json格式数据并使用handlebars模板渲染json数据,你也可以在options中配置使用其它javascript模板如mustache解析json数据或者直接返回html):

原文中加载部分使用的是handlebars插件,不过我不想再多引入插件还是直接使用json或者html

<script src="/path/jquery.min.js"></script>
<!-- <script src="/path/handlebars.js"></script>不引入 -->
<script src="/path/waterfall.min.js"></script>

template:这段也不需要了

<script id="waterfall-tpl" type="text/x-handlebars-template">
    //template content
</script>

我使用的是nodejs的ejs模板,是直接从原有的页面上抠出来一块用来动态加载,使用json的话还要写这么一堆字符串,所以干脆使用html格式的加载,其他语言的大同小异,morenews.html数据:

<%newsList.forEach(function(item,index){%>
<div class="news-list-group-item">
    <img src="<%=download_website+item.picture_mini%>" alt="">
    <div>
        <a href="/portal/news/<%=item.news_id%>" ><strong><%=item.title_zh%></strong></a>
        <p><%=item.summary_zh%></p>
        <p class="news-item-basic"><span class="news-date"><%=item.release_date || item.create_date%></span><span class="news-look">阅读量:<span><%=item.read_count%></span></span></p>
    </div>
</div>
<%})%>

script:

$('#container').waterfall({
	itemCls: 'news-list-group-item', //加载部分的class
	prefix: '',//可以不写
	fitWidth: true, 
	colWidth: 240, 
	gutterWidth: 10,
	gutterHeight: 10,
	align: 'center',//加载部分的对齐样式,可能需要配置
	minCol: 1, 
	maxCol: undefined, 
	maxPage: undefined, 
	bufferPixel: -50, 
	containerStyle: {
		position: 'relative'
	},
	resizable: true, 
	isFadeIn: false,
	isAnimated: false,
	animationOptions: { 
	},
	isAutoPrefill: true,
	checkImagesLoaded: true,
	path: undefined,//加载部分请求地址
	dataType: 'json', //我使用的是html
	params: {}, 
	
	loadingMsg: '<div style="text-align:center;padding:10px 0; color:#999;"><img src="https://img-blog.csdnimg.cn/2022010622421779825.gif" alt="
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vue-waterfall2 是一个 Vue.js 的瀑布流组件,可以实现类似 Pinterest 的布局效果。要实现触底加载功能,需要在组件中监听滚动事件,判断滚动条是否到达底部,然后触发加载更多数据的方法。 以下是一个简单的示例代码: ```vue <template> <waterfall :list="list" :options="options" @scroll="handleScroll"></waterfall> </template> <script> import Waterfall from 'vue-waterfall2' export default { components: { Waterfall }, data() { return { list: [], // 列表数据 options: { // 瀑布流配置项 }, currentPage: 1, // 当前页码 isEnd: false, // 是否已经加载完所有数据 } }, mounted() { this.loadMore() }, methods: { loadMore() { if (this.isEnd) return // 发送请求获取数据,这里假设返回一个 Promise 对象 fetchData(this.currentPage).then((data) => { if (data.length) { this.list = this.list.concat(data) this.currentPage++ } else { this.isEnd = true } }) }, handleScroll(position) { // 监听滚动事件 const { maxY } = position if (maxY <= window.innerHeight) { this.loadMore() } }, }, } </script> ``` 在这个示例中,我们定义了一个 `list` 数组来存放列表数据,`options` 对象用来配置瀑布流效果。在 `mounted` 钩子函数中,我们首次加载数据。`loadMore` 方法用来加载更多数据,其中 `fetchData` 方法用来发送网络请求获取数据。在 `handleScroll` 方法中,我们监听了 `waterfall` 组件的滚动事件,当滚动到底部时触发加载更多数据的方法。`isEnd` 变量用来判断是否已经加载完所有数据,避免重复请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值