精华内容
下载资源
问答
  • 加载更多 瀑布流
    2022-02-14 09:03:30
    // pages/list/list.js
    
    Page({
    
        /**
    
         * 页面的初始数据
    
         */
    
        data: {
    
            page:1,  //页码
    
            data:[],  //数据
    
            last_page:"" //最后一页(总页数) 
    
        },
    
    
    
        /**
    
         * 生命周期函数--监听页面加载
    
         */
    
        onLoad: function (options) {
    
            let that = this
    
    // 发送请求
    
            wx.request({
    
              url: 'http://www.www.com/index.php/list',
    
              data:{
    
                  pagesize:10
    
              },
    
              success(e){
    
    // 渲染页面
    
                that.setData({
    
                    data:e.data.data.data,
    
                    last_page:e.data.data.last_page
    
                })
    
              }
    
            })
    
        },
    
        // 点击跳转详情
    
        click(e){
    
            let id = e.currentTarget.dataset.id;
    
            wx.redirectTo({
    
              url: '/pages/msg/msg?id='+id,
    
            })
    
        },
    
        /**
    
         * 页面上拉触底事件的处理函数
    
         */
    
        onReachBottom: function () {
    
            let that = this;
    
            // 获取下一页
    
            let page = that.data.page+1
    
    //判断下一页是否大于总页数
    
            if(page>this.data.last_page){
    
                wx.showToast({
    
                    title: '到底了',
    
                    icon: 'error',
    
                })
    
            }
    
    // 发送请求
    
            wx.request({
    
                url: 'http://www.www.com/index.php/list',
    
                data:{
    
                    pagesize:10,
    
                    page:page
    
                },
    
                success(e){
    
    //渲染页面
    
                  that.setData({
    
                      page:that.data.page+1,
    
                      data:that.data.data.concat(e.data.data.data)
    
                  })
    
                }
    
            })
    
        },
    
    })

    更多相关内容
  • 主要为大家详细介绍了vue实现瀑布流组件滑动加载更多,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要为大家详细介绍了vue瀑布流组件实现上拉加载更多,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  •  用vue来实现一个瀑布流效果,加载网络图片,同时有下拉刷新和上拉加载更多功能效果。然后针对这几个效果的实现,捋下思路: 根据加载数据的顺序,依次追加标签展示效果; 选择哪种方式实现瀑布流,这里选择绝对...
  • 利用 jQuery瀑布流布局,点击加载更多效果 同时还用layui实现了一些别的样式
  • 瀑布流(加载更多)

    2016-01-03 12:27:37
    瀑布流(加载更多):http://blog.csdn.net/libin_1/article/details/50449837
  • 本篇文章介绍了如何实现下拉加载更多数据瀑布流的效果,这种效果最近很流行,文章内容很详细,有需要的小伙伴参考下吧。
  • android瀑布流,完美解决滑动过程中item位置错乱,下拉刷新顶部空白,加载更多顶部错乱等问题,还可以实现动画效果 效果图 集成 allprojects { repositories { ... maven { url 'https://jitpack.io' } }...
  • 瀑布流加载更多

    千次阅读 2016-06-27 16:19:59
    我们做瀑布流,一般使用UICollectionView这种...对于加载更多,我们遇到了问题。 1、当下页的数据接在上一页调用reloadData时,如果你正在滚动collectionView,它就会小小的卡顿。 2、如何做到边滑动边加载下边页面,


    我们做瀑布流,一般使用UICollectionView这种集合视图,当然了,它不仅仅能做瀑布流,根据不同的layout,将各视图collect到一起各种的布局,并能做到视图复用,可谓是非常强大了。


    对于加载更多,我们遇到了问题。

    1、当下页的数据接在上一页调用reloadData时,如果你正在滚动collectionView,它就会小小的卡顿。

    2、如何做到边滑动边加载下边页面,让人感觉一直在滑一直的有数据呢?


    对于第一个问题,我们试了各种做法,甚至我们想到了异步渲染,小小卡顿难以避免

    既然难于解决问题,怎么办呢?那就使用鸵鸟策略吧,虽然在滑动,下一页的数据照样加载,只不过不更新UI,当你不滑了,不滚动了,那就把下面的数据更新出来,这样,就没有顿一下的感觉了。由于滚动的时候Runloop的Mode切换为UIEventTrackingRunLoopMode, 所以我们就在NSDefaultRunLoopMode的时候reloadData好了。


    对于第二个问题,如果你使用tableView正常的下拉加载更多的话,就一般在当前页拉到底时,触发获取下一页数据,不过呢,做瀑布流可以把加载数据的触发点提前,甚至可以在第一页的第一个cell处加载下一页,然后每一页都如此迭代。

    实际上可以不只加载一页,可以选择加载两页,甚至更多,那么,我们就需要一个缓存容器,每到一个加载更多的时机就向这个容器里放一或两个标记数据,当加载完成一页数据就移除一个标记数据,容器中如果有数据,那就不断地加载下一页,直至容器无数据。

    至于向容器里放一个还是两个,或者更多个标记,可以计算当前页的Cell距Content尾部的距离,如果足够长,那就放一个,如果太短了,也就意味着马上要滚到底部了,那就多放一些。




    展开全文
  • PHP瀑布流简介: 1、为了简单操作,数据库使用了access 2、采用PHP+Ajax开发 3、带有社交网站分享功能 4、导航菜单固定
  • masonry瀑布流布局滑动到底部加载更多demo
  • android可以刷新和加载更多的图片瀑布流
  • 项目中要实现上拉加载更多的功能,先看效果图: 图很渣… 咋实现的呢? 1.先给RecyclerView增加一个FooterView,Footerview就是加载中显示的内容,例如:加载中…等 2.判断是否滑动到最后一个Item,控制FooterView的...

    项目中要实现上拉加载更多的功能,先看效果图:

    在这里插入图片描述

    图很渣…

    咋实现的呢?

    1.先给RecyclerView增加一个FooterView,Footerview就是加载中显示的内容,例如:加载中…等

    2.判断是否滑动到最后一个Item,控制FooterView的显示和隐藏

    1.Adapter中添加Footerview:
    private static final int TYPE_ITEM_NORMAL = 0;
    private static final int TYPE_ITEM_FOOTER = 1;
    
    @Override
    public int getItemViewType(int position) {
        if(position + 1 < getItemCount()) return TYPE_ITEM_NORMAL;
        else return TYPE_ITEM_FOOTER;
    }
    
    @Override
    public int getItemCount() {
        if(mData == null) return 0;
        else return mData.size() + 1;//加一个footer view
    }
    
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view;
        if(viewType == TYPE_ITEM_NORMAL){
            view = LayoutInflater.from(context).inflate(R.layout.item,parent,false);
            return new ImageViewHolder(view);
        }else{
            view = LayoutInflater.from(context).inflate(R.layout.item_footer,parent,false);
            return new FooterViewHolder(view);
        }
    }
    
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    
        if(holder instanceof FooterViewHolder){
            FooterViewHolder footerViewHolder = (FooterViewHolder) holder;
            if(mData.size() == MainActivity.allDataSize){
                footerViewHolder.mLoadingImg.setVisibility(View.GONE);
                footerViewHolder.mLoadingTips.setText("没有更多了");
            }
        }else{
            ImageViewHolder imgViewHolder = (ImageViewHolder) holder;
    
            final ImageData data = mData.get(position);
    
            //获取item宽度,计算图片等比例缩放后的高度,为imageView设置参数
            ViewGroup.LayoutParams layoutParams = imgViewHolder.imageView.getLayoutParams();
            float itemWidth = (ScreenUtils.getScreenWidth(context) - 16*3) / 2;
            layoutParams.width = (int) itemWidth;
            float scale = (itemWidth+0f)/data.getWidth();
            layoutParams.height= (int) (data.getHeight()*scale);
            imgViewHolder.imageView.setLayoutParams(layoutParams);
    
            Glide.with(context).
                    load(data.getResourceId()).
                    override(layoutParams.width, layoutParams.height).
                    into(imgViewHolder.imageView);
        }
    }
    因为是瀑布流,要设置footerView占据一行
    //用于StaggeredGridLayoutManager header footer 占据整行
    @Override
    public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) {
        super.onViewAttachedToWindow(holder);
        ViewGroup.LayoutParams layoutParams = holder.itemView.getLayoutParams();
        if (layoutParams != null && layoutParams instanceof StaggeredGridLayoutManager.LayoutParams) {
            StaggeredGridLayoutManager.LayoutParams params = (StaggeredGridLayoutManager.LayoutParams) layoutParams;
            int position = holder.getLayoutPosition();
            if (getItemViewType(position) == TYPE_ITEM_FOOTER) {
                params.setFullSpan(true);
            }
        }
    }
    2.MainActivity中给RecyclerView设置滑动监听
    private void initRecyclerViewListener(){
        mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            int lastVisiblePosition = 0;
            int loadingState = 0;//0:没有加载
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
    
                //防止第一行到顶部有空白区域
                layoutManager.invalidateSpanAssignments();
    
    	        //加载更多
                if(newState == RecyclerView.SCROLL_STATE_IDLE){//滑动停止
                    if(lastVisiblePosition + 1 == imageAdapter.getItemCount()){//滑动到最后一个item
                        if(mData.size() < allDataSize && loadingState == 0){
                            loadingState = 1;//加载中 避免多次滑动加载多次
                            new Handler().postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    int fromIndex,toIndex,addCount;
                                    fromIndex = mData.size();
                                    if(fromIndex + 10 < allDataSize) toIndex = fromIndex + 10;
                                    else toIndex = allDataSize;
                                    addCount = toIndex - fromIndex;
                                    mData.addAll(mAllData.subList(fromIndex,toIndex));//每次加载10个数据
                                    imageAdapter.notifyItemRangeInserted(fromIndex,addCount);
                                    loadingState = 0;
                                }
                            },1000);// 模拟获取网络数据,延时1s
                        }
                    }
                }
            }
    
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                int positions[] = layoutManager.findLastVisibleItemPositions(null);
                for(int pos : positions){
                    if(pos > lastVisiblePosition){
                        lastVisiblePosition = pos;//得到最后一个可见的item的position
                    }
                }
            }
        });
    }
    展开全文
  • 这是一个完整的瀑布流的demo,代码简洁明了。对你一定有帮助
  • 计算单列累计高度,对比高度值的大小,实现瀑布流的布局, 由于获取图片高度需要一定的时间,所以使用async await 阻塞for 循环的进程, 每获取到一个图片的高度就赋值渲染到页面上,实现加载出一个图片就先渲染...

    效果图:

    说明:

                    函数说明:传入一个数组,循环获取图片高度,会根据把原数组拆分成两个数组,放在两列,
                    计算单列累计高度,对比高度值的大小,实现瀑布流的布局,
                    由于获取图片高度需要一定的时间,所以使用async await 阻塞for 循环的进程,
                    每获取到一个图片的高度就赋值渲染到页面上,实现加载出一个图片就先渲染上去,达成图片懒加载的效果
                    
                    参数说明:
                    必填:
                        arr:数组,里面有对象,对比对象里面的图片高度,返回两个数组
                        attributeName:要根据数组里对象指定属性名称(图片的 Key)
                    非必填:
                        otherHeight:瀑布流的盒子其它组成部分的高度,例如点赞那行,因为瀑布流不单单是图片组成
                        minHeight: 图片最小高度,如果没有图片,也会使用最小高度,相当于默认高度
                        maxHeight:图片最大高度,超出高度就按照 maxHeight 进入当前列累计高度

    代码:

    <template>
    	<div class="page">
    		<scroll-view style="height: 800px;" scroll-y="true" class="scroll-Y" @scrolltolower="loadMoreImages">
    			<view class="main">
    				<div class="view Left">
    					<div class="content" v-for="(item, index) in firstList" :key="index">
    						<div class="img-content">
    							<div class="modle_mask" v-if="item.audit_status == 8">
    								{{ item.audit_status == 8 ? "审核中":'' }}
    							</div>
    							<div class="modle_mask" @click="openfail(item)" v-if="item.audit_status == 2">
    								{{ item.audit_status==2 ? "审核未通过" : "" }}
    							</div>
    							<image v-if="item.faceimg" :src="item.faceimg" class="image" mode="widthFix" :data-index="index" data-type="1"
    							 @click="goDetails(item)" />
    							<img v-if="item.identity_type=='identity_type_admin'" class="approveImg" mode="heightFix" :src="approve" />
    						</div>
    						<div class="text" v-if="type" @click="goDetails(item)">{{ item.title }}</div>
    						<div class="price" v-if="type">
    							<div class="users">
    								<img class="avatarUrl" :src="item.head_img" />
    								<div class="nickName">{{ item.nick_name }}</div>
    							</div>
    							<div class="give" @click="giveLike(item,index,'firstList')">
    								<img class="giveXin" :src="item.use_fabulous?aixin2:aixin1" />
    								<div class="giveNum">{{ item.fabulous_num }}</div>
    							</div>
    						</div>
    					</div>
    				</div>
    				<div class="view Right">
    					<div class="content" v-for="(item, index) in secondList" :key="index">
    						<div class="img-content">
    							<div class="modle_mask" v-if="item.audit_status == 8">
    								{{ item.audit_status == 8 ? "审核中":'' }}
    							</div>
    							<div class="modle_mask" @click="openfail(item)" v-if="item.audit_status == 2">
    								{{ item.audit_status == 2 ? "审核未通过" : "" }}
    							</div>
    							<image v-if="item.faceimg" :src="item.faceimg" class="image" mode="widthFix" :data-index="index" data-type="2"
    							 @click="goDetails(item)" />
    							<img v-if="item.identity_type=='identity_type_admin'" class="approveImg" :src="approve" />
    						</div>
    						<div v-if="type" class="text" @click="goDetails(item)">{{ item.title }}</div>
    						<div v-if="type" class="price">
    							<div class="users">
    								<img class="avatarUrl" :src="item.head_img" />
    								<div class="nickName">{{ item.nick_name }}</div>
    							</div>
    							<div class="give" @click="giveLike(item,index,'secondList')">
    								<img class="giveXin" :src="item.use_fabulous?aixin2:aixin1" />
    								<div class="giveNum">{{ item.fabulous_num }}</div>
    							</div>
    						</div>
    					</div>
    				</div>
    			</view>
    
    		</scroll-view>
    		<view class="modal_mask" v-if="isTips">
    			<view class="modaltips">
    				<view class="modalPages">
    					<image :src="failImage" class="coverImage"></image>
    					<view class="modelText1">很遗憾</view>
    					<view class="modelText1" style="margin-bottom: 70rpx">您的审核未通过</view>
    					<view class="modelText2">审核未通过原因:</view>
    					<view class="modelText2">{{ failText }}</view>
    					<view class="back" @click="close">返回</view>
    				</view>
    			</view>
    		</view>
    	</div>
    </template>
    
    <script>
    	export default {
    		props: {
    			params: Object, //forumLists 接口的其它参数
    			type: String, //好物种草我的嗮图传 type 嗮图 userForumLists,赞过 userFabulousLists
    			url: String // 判断是哪个社区模块调用的,imgCommunity 好物种草
    		},
    
    		data() {
    			return {
    				aixin1: this.$config.nhsImagesUrl + "community/aixin1xxxx.png",
    				aixin2: this.$config.nhsImagesUrl + "community/aixin2ssss.png",
    				failImage: this.$config.nhsImagesUrl + "community/fail.png",
    				approve: this.$config.nhsImagesUrl + "community/approve.png",
    				request_url: "",
    				showImg: false,
    				failText: "",
    				dataList: [], // 数据源
    				firstList: [], // 第一列数组
    				secondList: [], // 第二列数组
    				windowWidth: 0, // 页面视图宽度
    				windowHeight: 0, // 视图高度
    				imgMargin: 0, // 图片边距: 单位px
    				imgWidth: 0, // 图片宽度: 单位px
    				topArr: [0, 0], // 存储每列的累积top
    				pageSize: 8,
    				last: false,
    				page: 1,
    				like: true,
    				isTips: false,
    				i: 0
    			};
    		},
    		created() {
    			this.init();
    			this.getGoodthingList();
    			console.log('created-type', this.type)
    		},
    		watch: {
    			type: function() {
    				console.log('watch-type', this.type)
    
    			},
    		},
    		onReachBottom() {
    			console.log('onReachBottom', onReachBottom)
    			this.loadMoreImages()
    		},
    		methods: {
    			init() {
    				this.dataList = [];
    				this.firstList = [];
    				this.secondList = [];
    				this.last = false;
    				this.imgMargin = 0; // 图片边距: 单位px
    				this.topArr = [0, 0]; // 存储每列的累积top
    				this.pageSize = 8;
    				this.page = 1;
    				this.i = 0
    				// debugger
    			},
    
    
    			// 显示未通过弹框
    			openfail(item) {
    				console.log(item);
    				this.failText = item.auditRemark;
    				this.isTips = true;
    			},
    			close() {
    				this.isTips = false;
    			},
    			// 获取数据
    			getGoodthingList() {
    				// type userFabulousLists 赞过  userForumLists 嗮图
    				if (this.type == 'userFabulousLists') {
    					this.request_url = this.$api.community.userFabulousLists
    				} else if (this.type == 'userForumLists') {
    					this.request_url = this.$api.community.userForumLists
    				} else {
    					this.request_url = this.$api.community.forumLists
    				}
    				console.log('获取数据', this.type, this.request_url)
    				this.$request(this.request_url, {
    					page: this.page,
    					pageSize: this.pageSize,
    					...this.params,
    				}).then((res) => {
    					console.log('de', res)
    					if (res.code == 0) {
    						if (res.data.lists == null) {
    							return wx.showToast({
    								title: '非常抱歉没有找到相关信息',
    								icon: 'none'
    							})
    						}
    						this.page++;
    						wx.hideLoading();
    						this.last = res.data.last || false;
    						this.dataList = res.data.lists;
    						this.dataList.forEach((item, index) => {
    							if (item.fabulous_num > 9999) {
    								item.fabulous_num = parseFloat(item.fabulous_num / 10000).toFixed(1) + "万";
    							} else {
    								item.fabulous_num = item.fabulous_num;
    							}
    							item.use_fabulous = item.use_fabulous == 1 ? true : false
    						});
    						this.setDataList(this.dataList, 'faceimg');
    					}
    				});
    			},
    			/*
    				函数说明:瀑布流获取图片高度计算方法,会把原数组拆分成两个数组返回
    				参数说明:
    				必填:
    					arr:数组,里面有对象,对比对象里面的图片高度,返回两个数组
    					attributeName:要根据数组里对象指定属性名称(图片的 Key)
    				非必填:
    					otherHeight:瀑布流的盒子其它组成部分的高度,例如点赞那列,因为瀑布流不单单是图片组成
    					minHeight: 图片最小高度,如果没有图片,也会使用最小高度,相当于默认高度
    					maxHeight:图片最大高度,高于就按照 maxHeight 算
    			*/
    			async setDataList(arr = [], attributeName, otherHeight = 100, minHeight = 10, maxHeight = 1000) {
    				var arr1 = [],
    					arr2 = [],
    					imgMargin = 0, //图片边距
    					height1 = 0, //第一组图片累计高度
    					height2 = 0; //第二组图片累计高度
    
    				// var getSystemInfo = await wx.getSystemInfo()
    				for (let i = 0; i < arr.length; i++) {
    					try {
    						let heightData = await uni.getImageInfo({
    							src: arr[i][attributeName]
    						});
    						let ImgHeight = heightData.length == 1 ? minHeight : heightData[1].height //如果长度等于1,就是图片有问题,这时候设置一个默认高度,如果长度等于2,下标1就有图片高度
    						let imgWidth = heightData.length == 1 ? minHeight : heightData[1].width //如果长度等于1,就是图片有问题,
    
    						let height = ImgHeight;
    						if (height < minHeight) height = minHeight;
    						if (height > maxHeight) height = maxHeight;
    
    						if (height1 <= height2) {
    							height1 += height
    							this.firstList.push(arr[i])
    						} else {
    							height2 += height
    							this.secondList.push(arr[i])
    						}
    						// console.log('arr2',height1,height2,arr1,arr2);
    					} catch (err) {
    						console.log('getImageInfo-err', err)
    					}
    				}
    			},
    			// 加载更多图片
    			loadMoreImages: function() {
    				console.log('加载更多图片', this.type)
    				if (!this.last) {
    					wx.showLoading({
    						title: "加载中...",
    					});
    					this.getGoodthingList();
    				}
    				wx.hideLoading();
    			},
    
    			/** 预览图片 */
    			// previewImg: function (e) {
    			//   let index = e.currentTarget.dataset.index;
    			//   let currentSrc = "";
    			//   switch (e.currentTarget.dataset.type) {
    			//     case "1":
    			//       currentSrc = this.firstList[index].faceimg;
    			//       break;
    			//     case "2":
    			//       currentSrc = this.secondList[index].faceimg;
    			//   }
    			//   wx.previewImage({
    			//     urls: [currentSrc],
    			//   });
    			// },
    			// 点赞
    			giveLike(item, index, type) {
    				if (this.like) {
    					console.log(item);
    					this.like = false;
    					this.$request(this.$api.community.userToFabulous, {
    						forum_id: item.id
    					}).then(
    						(res) => {
    							if (res.code === 0) {
    								item.use_fabulous = !item.use_fabulous;
    								item.fabulous_num = item.use_fabulous ? item.fabulous_num + 1 : item.fabulous_num - 1;
    								item.fabulous_num = item.fabulous_num > 9999 ? parseFloat(item.fabulous_num / 10000).toFixed(1) + "万" : item.fabulous_num;
    								
    								if (type == 'firstList') {
    									this.firstList[index] = item
    								} else {
    									this.secondList[index] = item
    								}
    								this.like = true;
    							}
    						}
    					);
    				}
    			},
    			goDetails(item) {
    				let navUrl = ''
    				if (this.url == 'imgCommunity') {
    					navUrl = "/pages/community/imgCommunity/SlideShowDetails?id=" + item.id;
    				}
    				this.$navTo.navigateTo({
    					url: navUrl,
    				})
    			},
    		},
    	};
    </script>
    
    <style scoped lang="less">
    	.page {
    		width: 100%;
    	}
    
    	.main {
    		width: 100%;
    		background: #dce8fb;
    
    		.view {
    			width: 50%;
    			display: inline-block !important;
    			position: relative;
    			vertical-align: top;
    			padding: 6rpx;
    			box-sizing: border-box;
    
    			.content {
    				border-radius: 4px;
    				margin-bottom: 20rpx;
    				box-sizing: border-box;
    				background: white;
    
    				.img-content {
    					position: relative;
    
    					.modle_mask {
    						position: absolute;
    						z-index: 9;
    						color: #fff;
    						left: 0;
    						right: 0;
    						top: 0;
    						bottom: 0;
    						background: rgba(0, 0, 0, 0.7);
    						display: flex;
    						justify-content: center;
    						align-items: center;
    					}
    
    					.image {
    						width: 100%;
    						// height: 100%;
    						border-top-right-radius: 4px;
    						border-top-left-radius: 4px;
    						box-sizing: border-box;
    					}
    				}
    
    				.text {
    					font-size: 26rpx;
    					font-family: PingFangSC-Medium, PingFang SC;
    					font-weight: 500;
    					color: #333333;
    					padding: 5px 8px 0 8px;
    				}
    
    				.price {
    					font-size: 14px;
    					color: #999999;
    					padding: 5px 8px 5px 8px;
    					box-sizing: border-box;
    					display: flex;
    					justify-content: space-between;
    					align-items: center;
    
    					.users {
    						display: flex;
    						align-items: center;
    
    						.avatarUrl {
    							width: 40rpx;
    							height: 40rpx;
    							border-radius: 20rpx;
    							margin-right: 10rpx;
    						}
    
    						.nickName {
    							min-width: 140rpx;
    							max-width: 140rpx;
    							overflow: hidden;
    							white-space: nowrap;
    							text-overflow: ellipsis;
    						}
    					}
    
    					.give {
    						display: flex;
    						align-items: center;
    
    						.giveXin {
    							width: 20rpx;
    							height: 20rpx;
    							margin-right: 10rpx;
    						}
    
    						.giveNum {
    							flex: 1;
    						}
    					}
    				}
    			}
    		}
    	}
    
    	.modal_mask {
    		box-sizing: border-box;
    		position: fixed;
    		left: 0;
    		top: 0;
    		width: 100vw;
    		height: 100vh;
    		z-index: 1002;
    		background: rgba(0, 0, 0, 0.6);
    
    		.modaltips {
    			position: absolute;
    			left: 50%;
    			top: 50%;
    			width: 575rpx;
    			padding: 20rpx;
    			transform: translate(-50%, -50%);
    			background: linear-gradient(180deg, #92ddf6 0%, #59b8ea 100%);
    			border-radius: 20px;
    			box-sizing: border-box;
    			display: flex;
    			justify-content: center;
    			align-items: center;
    			overflow: initial;
    
    			.modalPages {
    				width: 530rpx;
    				background: #ffffff;
    				border-radius: 10px;
    				padding: 128rpx 24rpx 30rpx;
    				box-sizing: border-box;
    
    				.coverImage {
    					position: absolute;
    					left: 50%;
    					top: -200rpx;
    					transform: translate(-50%, 0);
    					width: 276rpx;
    					height: 292rpx;
    				}
    
    				.modelText1 {
    					text-align: center;
    					font-size: 36rpx;
    					font-family: PingFangSC-Medium, PingFang SC;
    					font-weight: 500;
    					color: #59b8ea;
    					margin-bottom: 20rpx;
    				}
    
    				.modelText2 {
    					font-size: 28rpx;
    					font-family: PingFangSC-Regular, PingFang SC;
    					font-weight: 400;
    					color: #666666;
    					line-height: 40rpx;
    					white-space: normal;
    					margin-bottom: 10rpx;
    				}
    
    				.back {
    					position: absolute;
    					left: 50%;
    					bottom: -30%;
    					transform: translate(-50%, 0);
    					width: 280rpx;
    					height: 66rpx;
    					background: #59b8ea;
    					box-shadow: 0px 2rpx 10rpx 2rpx #6b6e6f;
    					border-radius: 20rpx;
    					font-size: 28rpx;
    					font-family: PingFangSC-Medium, PingFang SC;
    					font-weight: 500;
    					color: #ffffff;
    					text-align: center;
    					line-height: 66rpx;
    				}
    			}
    		}
    	}
    
    	.approveImg {
    		position: absolute;
    		right: 6rpx;
    		bottom: -60rpx;
    		width: 60rpx;
    		height: 60rpx;
    	}
    </style>
    

     

    展开全文
  • 瀑布流效果兼容移动端下拉刷新、上拉加载更多 ZeptojQuery插件。内有5中风格可供选择,代码简单易懂
  • 模仿新浪微博下拉加载更多数据瀑布流效果
  • JS,JQ瀑布流效果 滚动到底部加载更多 非常实用的代码 前端必备
  • 8款Jquery+html5实现无限加载瀑布流特效源码,亲测可用,拿来即用。
  • 简单的模仿了新浪微博下拉页面到底部加载更多数据的瀑布流效果,用List做模拟数据源,做的非常简单,仅供学习参考。
  • 这是一款非常轻量级的纯原生JS的瀑布流插件——Macy.js,如今图片和视频网站非常,非常适应瀑布流这样的布局方式来呈现给用户。 这款流布局JS插件仅有4KB的大小,可以说是非常轻量级的哦。配置也比较方便,用户...
  • 利用JavaScript实现了瀑布流,并可以加载更多
  • {dede:pagelist listitem="next" listsize="1" runphp=yes}@me = preg_replace('/{/dede:pagelist}var ias = $.ias({container: ".listbox", //包含所有文章的元素item: ".item", //文章元素pagination: ".more", //...
  • 瀑布流加载更多

    2014-11-21 14:04:59
    瀑布流显示一部分,点击加载更多,简单方便,瀑布流为三列

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,749
精华内容 3,899
关键字:

加载更多 瀑布流