<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>上拉加载</title>
<style type="text/css">
html,body,header,div,main,p,span,ul,li{
margin: 0; padding: 0;
}
#refreshContainer li{
background-color: #eee;
margin-bottom: 1px;
padding: 20px 10px;
text-align: center;
color: #550000;
}
.loadText{
line-height: 50px;
text-align: center;
}
.refreshText{
line-height: 50px;
text-align: center;
}
.hd{
width:100%;
height: 200px;
background-color: #aaaaff;
position: relative;
text-align: center;
color: #fff;
line-height: 200px;
z-index: 999;
}
.hd1{
width:100%;
height: 100px;
background-color: #f7bed7;
text-align: center;
color: #fff;
line-height: 100px;
}
</style>
</head>
<body>
<main>
<div class="hd1">HEADER</div>
<div class="hd">FIXED TAB</div>
<p class="refreshText"></p>
<ul id="refreshContainer">
<li>111</li>
<li>222</li>
<li>333</li>
<li>444</li>
<li>555</li>
<li>111</li>
<li>222</li>
<li>333</li>
<li>444</li>
<li>555</li>
<li>111</li>
<li>222</li>
<li>333</li>
<li>444</li>
<li>555</li>
</ul>
<p class="loadText"></p>
</main>
<script type="text/javascript">
(function(window) {
// 获取当前滚动条的位置
function getScrollTop() {
var scrollTop = 0;
if (document.documentElement && document.documentElement.scrollTop) {
scrollTop = document.documentElement.scrollTop;
} else if (document.body) {
scrollTop = document.body.scrollTop;
}
let d=document.getElementsByClassName("hd")[0],a=document.getElementById("refreshContainer"),
c=document.getElementsByClassName('hd1')[0];
if (scrollTop >= c.offsetHeight) {
d.style.position="fixed";
d.style.top="0";
a.style.paddingTop="210px"
}else{
d.style.position="relative";
a.style.paddingTop="0"
}
return scrollTop;
}
// 获取当前可视范围的高度
function getClientHeight() {
var clientHeight = 0;
if (document.body.clientHeight && document.documentElement.clientHeight) {
clientHeight = Math.min(document.body.clientHeight, document.documentElement.clientHeight);
}
else {
clientHeight = Math.max(document.body.clientHeight, document.documentElement.clientHeight);
}
return clientHeight;
}
// 获取文档完整的高度
function getScrollHeight() {
return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
}
var _text = document.querySelector('.loadText'),
_container = document.getElementById('refreshContainer');
// 节流函数
var throttle = function(method, context){
clearTimeout(method.tId);
method.tId = setTimeout(function(){
method.call(context);
}, 300);
}
function fetchData() {
setTimeout(function() {
for(let i=0;i<10;i++){
_container.insertAdjacentHTML('beforeend', '<li>新增'+i+i+i+'</li>');
}
}, 1000);
}
window.onscroll = function() {
if (getScrollTop() + getClientHeight() == getScrollHeight()) {
_text.innerText = '加载中...';
throttle(fetchData);
}
};
// 下拉刷新
var element = document.getElementById('refreshContainer'),
refreshText = document.querySelector('.refreshText'),
startPos = 0,
transitionHeight = 0;
element.addEventListener('touchstart', function(e) {
console.log('初始位置:', e.touches[0].pageY);
startPos = e.touches[0].pageY;
// element.style.position = 'relative';
element.style.transition = 'transform 0s';
}, false);
element.addEventListener('touchmove', function(e) {
console.log('当前位置:', e.touches[0].pageY);
transitionHeight = e.touches[0].pageY - startPos;
if (transitionHeight > 0 && transitionHeight < 60) {
refreshText.innerText = '下拉刷新';
element.style.transform = 'translateY('+transitionHeight+'px)';
if (transitionHeight > 55) {
refreshText.innerText = '释放更新';
}
}
}, false);
element.addEventListener('touchend', function(e) {
element.style.transition = 'transform 0.5s ease 1s';
element.style.transform = 'translateY(0px)';
refreshText.innerText = '更新中...';
setTimeout(()=>{
refreshText.innerText = '';
},300)
}, false);
})(window);
</script>
</body>
</html>
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
前端动画素材在网页开发中扮演着重要角色,能够吸引用户注意、提升用户体验。以下是一些常见的前端动画素材的技术实现方式: CSS 动画:使用 CSS 属性(如@keyframes、transition、transform等)来实现动画效果。这种方式简单易用,适合实现简单的动画效果,如过渡、旋转、缩放等。 JavaScript 动画:通过 JavaScript 操作 DOM 元素的样式属性,实现更复杂、交互性更强的动画效果。常见的库包括 jQuery、Anime.js、GreenSock(GSAP)等,它们提供了丰富的动画函数和效果,使动画开发更加高效。 SVG 动画:使用 SVG(可缩放矢量图形)和 SMIL(同步多媒体集成语言)技术创建矢量图形动画,可以实现复杂的矢量图形动画效果,如路径动画、填充动画等。 Canvas 动画:通过 HTML5 Canvas 元素绘制图形,利用 JavaScript 控制绘制过程,实现高度可定制化的动画效果,适用于需要实时渲染的复杂动画场景。 WebGL 动画:基于 WebGL(Web图形库)的 3D 图形渲染技术,可以实现高性能的复杂动画效果,适合开发需要展示 3D 动画的网页。 React 动画库:如果你在使用 React 框架,可以考虑使用像 React Spring、Framer Motion 等专门为 React 设计的动画库,简化动画开发流程。 CSS 预处理器:使用像 Sass、Less 等 CSS 预处理器可以简化 CSS 编写过程,提高样式代码的可维护性,进而对动画效果的实现有所帮助。 综上所述,前端动画素材的技术实现方式多种多样,开发者可以根据项目需求和个人技术偏好选择合适的方式来实现动画效果。
资源推荐
资源详情
资源评论
收起资源包目录
【前端素材】模板-多种实用下拉刷新+上拉加载.zip (2个子文件)
下拉刷新+上拉加载
load.html 4KB
refresh.html 2KB
共 2 条
- 1
资源评论
枫蜜柚子茶
- 粉丝: 5828
- 资源: 2972
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功