由于工作的需要并鉴于网上的vue.js滚动加载方案不合适,自己写了一个简单实用的。就短短的150行代码。

组件代码
// scrollLoader.vue
// 滚动加载组件
<style scoped>
.container-main {margin: 0 auto; overflow: auto; overflow-x: hidden; padding: 0;}
.loading{ width: 100%; height: 40px; position: relative; overflow: hidden; text-align: center; margin: 5px 0 ; color: #999; font-size: 13px;}
.loading-icon{color: #707070;};
.loader {
font-size: 10px;
margin: 8px auto;
text-indent: -9999em;
width: 24px;
height: 24px;
border-radius: 50%;
background: #999;
background: -moz-linear-gradient(left, #999 10%, rgba(255, 255, 255, 0) 42%);
background: -webkit-linear-gradient(left, #999 10%, rgba(255, 255, 255, 0) 42%);
background: -o-linear-gradient(left, #999 10%, rgba(255, 255, 255, 0) 42%);
background: -ms-linear-gradient(left, #999 10%, rgba(255, 255, 255, 0) 42%);
background: linear-gradient(to right, #999 10%, rgba(255, 255, 255, 0) 42%);
position: relative;
-webkit-animation: load3 1s infinite linear;
animation: load3 1s infinite linear;
}
.loader:before {
width: 50%;
height: 50%;
background: #999;
border-radius: 100% 0 0 0;
position: absolute;
top: 0;
left: 0;
content: '';
}
.loader:after {
background: #f5f5f5;
width: 72%;
height: 75%;
border-radius: 68%;
content: '';
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
}
@-webkit-keyframes load3 {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes load3 {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
</style>
<template>
<div id="scrollLoader-container" class="container-main">
<div class="loading" v-if="topLoading">
<div class="loader">加载中...</div>
</div>
<div :style="'min-height:' + realMinHeight + 'px; overflow-x:hidden'">
<slot></slot>
</div>
<div class="loading" v-if="bottonLoading">
<div class="loader">加载中...</div>
</div>
</div>
</template>
<script>
export default {
name: "scroll-loader",
props: {
//给slot传一个最小值,保证一开始能出现滚动条
'minHeight': {
type: Number,
default: 800
},
},
created(){
},
computed: {
realMinHeight(){
return this.minHeight + 30
}
},
data() {
return {
topLoading: false,
bottonLoading: false,
stopTopLoading: false, //是否停止传播滚动到顶部事件
stopBottonLoading: false, //是否停止传播滚动到底部事件
}
},
mounted(){
this.listenScroll();
},
methods: {
listenScroll(){
var me = this;
var topDone = (stopTopLoading) => {
me.topLoading = false;
if(stopTopLoading) me.stopTopLoading = true;
};
var bottonDone = (stopBottonLoading) => {
me.bottonLoading = false;
if(stopBottonLoading) me.stopBottonLoading = true;
};
setTimeout(function(){
var scrollContainer = document.getElementById('scrollLoader-container');
scrollContainer.onscroll = function(){
if(scrollContainer.scrollTop<=0 && !me.stopTopLoading){
if(me.topLoading) return;
me.topLoading = true;
me.$emit('scroll-to-top', topDone);
}
if((scrollContainer.offsetHeight + scrollContainer.scrollTop+1 >= scrollContainer.scrollHeight) && !me.stopBottonLoading){
if(me.bottonLoading) return;
me.bottonLoading = true;
scrollContainer.scrollTop += 40;
me.$emit('scroll-to-botton', bottonDone);
}
}
}, 50)
},
}
}
</script>
源码:https://github.com/doterlin/vue-wxChat
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# vue
# js加载组件
# Vue.js上下滚动加载
# Vue.js滚动加载
# vue实现分页加载效果
# vue实现的上拉加载更多数据/分页功能示例
# Vue.js实现无限加载与分页功能开发
# Javascript vue.js表格分页
# ajax异步加载数据
# vue.js 表格分页ajax 异步加载数据
# vue element-ui table表格滚动加载方法
# Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
# vue中实现滚动加载更多的示例
# Vue 无限滚动加载指令实现方法
# vue实现纯前端表格滚动分页加载
# 加载
# 加载中
# 写了
# 不合适
# 大家多多
# 滚动条
# 最小值
# 网上
# icon
# loader
# indent
# size
# position
# px
# relative
# font
# color
# rgba
# left
# gradient
相关文章:
山东云建站价格为何差异显著?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
如何用虚拟主机快速搭建网站?详细步骤解析
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
如何通过老薛主机一键快速建站?
如何快速生成高效建站系统源代码?
如何在阿里云虚拟主机上快速搭建个人网站?
如何用搬瓦工VPS快速搭建个人网站?
网站制作需要会哪些技术,建立一个网站要花费多少?
非常酷的网站设计制作软件,酷培ai教育官方网站?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
常州企业网站制作公司,全国继续教育网怎么登录?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
如何通过智能用户系统一键生成高效建站方案?
建站ABC备案流程中有哪些关键注意事项?
建站主机选购指南与交易推荐:核心配置解析
建站主机选择指南:服务器配置与SEO优化实战技巧
建站VPS选购需注意哪些关键参数?
学校为何禁止电信移动建设网站?
建站之星安装后如何配置SEO及设计样式?
如何快速搭建二级域名独立网站?
高端企业智能建站程序:SEO优化与响应式模板定制开发
如何通过虚拟机搭建网站?详细步骤解析
香港服务器网站推广:SEO优化与外贸独立站搭建策略
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
高防服务器租用首荐平台,企业级优惠套餐快速部署
如何访问已购建站主机并解决登录问题?
如何选择适配移动端的WAP自助建站平台?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
如何在橙子建站中快速调整背景颜色?
寿县云建站:智能SEO优化与多行业模板快速上线指南
如何在橙子建站上传落地页?操作指南详解
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
建站之星展会模板:智能建站与自助搭建高效解决方案
如何彻底删除建站之星生成的Banner?
Thinkphp 中 distinct 的用法解析
如何高效配置IIS服务器搭建网站?
建站之星安装失败:服务器环境不兼容?
如何通过云梦建站系统实现SEO快速优化?
网站图片在线制作软件,怎么在图片上做链接?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
建站VPS推荐:2025年高性能服务器配置指南
建站之星如何实现PC+手机+微信网站五合一建站?
一键网站制作软件,义乌购一件代发流程?
如何将凡科建站内容保存为本地文件?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
*服务器网站为何频现安全漏洞?
*请认真填写需求信息,我们会在24小时内与您取得联系。