前言: 项目中让实现一个简单的上下视差滚动,就是当页面滑动到某一固定位置时,让上下两页面出现叠加效果,恢复时,展开恢复。

功能技术实现方式:元素定位,鼠标事件
思路1:
一开始想着设置滚动条监听事件,当到固定位置时下方元素设置relative属性(这样可保证不改变其原有样式而且可以实现元素位置的调整),于是就诞生出一下代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<style>
body{
margin: 0;
padding: 0;
}
.div1{
width: 100%;
height: 500px;
background: #FF0000;
position: fixed;
top: 0;
left: 0;
}
.div2{
width: 100%;
margin-top: 500px;
height: 1000px;
background: #22B0FC;
position: relative;
z-index: 2;;
}
</style>
<body>
<div class="div1">1111111</div>
<div class="div2">22222222222222</div>
</body>
<script src="jquery-1.8.3.min.js"></script>
<script>
$(document).ready(function () {
$(window).scroll(function () {
var scrollTop=$(window).scrollTop();
//$(window).scrollTop()这个方法是当前滚动条滚动的距离
//$(window).height()获取当前窗体的高度
//$(document).height()获取当前文档的高度
$('.div2').css('top',-scrollTop);
});
});
</script>
</html>
问题:运行以上代码就会发现有一个很明显的bug,虽然大体功能已经实现了,但是因为relative的元素不管如何移动,还是会占有原本的位置。然而我们的期望是,滚动条到达让下方元素底部时就不应该滑动了,如何解决呢?
思路2:
我思考了良久,但是仍然没发现可以让元素既不占位置,又不改变自身样式,所以我大胆放弃relative,选择absolute定位,这个就需要我们自己做样式的调整,具体代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<style>
body{
margin: 0;
padding: 0;
}
.clearfix:after {
content: '';
display: block;
clear: both;
}
.div1{
width: 100%;
margin: 0 auto;
height: 500px;
background: bisque;
position: fixed;
top: 0;
left: 0;
}
.div1 div{
width: 1200px;
margin: 0 auto;
height: 500px;
background: #FF0000;
}
.div2{
width: 1200px;
margin: 0 auto;
height: 1500px;
background: #22B0FC;
z-index: 20000;;
margin-top: 500px;
}
</style>
<body>
<div class="div1 clearfix">
<div>111111111111111111111111111111111111111</div>
</div>
<div class="div2">22222222222222</div>
</body>
<script src="jquery-1.8.3.min.js"></script>
<script>
var div2Height=Number($('.div2').offsetTop);
var clientHeight=Number($(document).clientHeight);
var totalHeight=div2Height-clientHeight;
var objOffset=$('.div2').offset().top;
var objOffsetLf=$('.div2').offset().left;
$(document).ready(function () { //本人习惯这样写了
$(window).scroll(function () {
var scrollTop=$(window).scrollTop();
var objHeight=objOffset-scrollTop;
console.log(scrollTop);
if(scrollTop>=0){
$('.div2').css({'left':objOffsetLf,'top':objHeight,'position':'absolute','margin-top':'0px'});
}else{
$('.div2').css({'position':'static','margin-top':'500px'});
}
});
});
</script>
</html>
注意:①上半部分元素的位置需要保持不动②下半部分确保层级要高于上半部分③本代码针对的是上半部分固定,如果想让其跟着动,需要确保下半部分滚动速度要大于上半部分
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js上下视差滚动
# js上下滚动
# js滚动
# js手机号批量滚动抽奖实现代码
# 原生js实现水平方向无缝滚动
# javascript实现文字无缝滚动
# scroll事件实现监控滚动条并分页显示(zepto.js)
# jQuery插件fullPage.js实现全屏滚动效果
# 全屏滚动插件fullPage.js使用实例解析
# javascript滚轮控制模拟滚动条
# 标准的js无缝滚动效果
# js实现按钮控制带有停顿效果的图片滚动
# js实现无缝循环滚动
# 滚动条
# 的是
# 半部
# 就会
# 鼠标
# 不动
# 写了
# 又不
# 时就
# 可以实现
# 想让
# 很明显
# 良久
# 既不
# 如何解决
# 时下
# 大家多多
# 不改变
# 实现了
# 发现有
相关文章:
贸易公司网站制作流程,出口贸易网站设计怎么做?
建站主机如何选?高性价比方案全解析
如何通过PHP快速构建高效问答网站功能?
如何使用Golang table-driven基准测试_多组数据测量函数效率
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
详解jQuery停止动画——stop()方法的使用
如何将凡科建站内容保存为本地文件?
如何高效搭建专业期货交易平台网站?
建站三合一如何选?哪家性价比更高?
建站之星如何快速生成多端适配网站?
如何在腾讯云免费申请建站?
常州企业建站如何选择最佳模板?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
网页设计与网站制作内容,怎样注册网站?
大连 网站制作,大连天途有线官网?
如何用西部建站助手快速创建专业网站?
宁波免费建站如何选择可靠模板与平台?
模具网站制作流程,如何找模具客户?
如何在新浪SAE免费搭建个人博客?
如何在万网ECS上快速搭建专属网站?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
建站之星安全性能如何?防护体系能否抵御黑客入侵?
济南网站制作的价格,历城一职专官方网站?
高防服务器租用首荐平台,企业级优惠套餐快速部署
如何快速搭建自助建站会员专属系统?
如何通过cPanel快速搭建网站?
如何通过商城免费建站系统源码自定义网站主题?
如何快速生成专业多端适配建站电话?
javascript中对象的定义、使用以及对象和原型链操作小结
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
香港网站服务器数量如何影响SEO优化效果?
如何配置IIS站点权限与局域网访问?
小型网站制作HTML,*游戏网站怎么搭建?
建站DNS解析失败?如何正确配置域名服务器?
如何在阿里云ECS服务器部署织梦CMS网站?
PHP 500报错的快速解决方法
免费视频制作网站,更新又快又好的免费电影网站?
C++中引用和指针有什么区别?(代码说明)
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
如何用免费手机建站系统零基础打造专业网站?
北京网站制作的公司有哪些,北京白云观官方网站?
实例解析angularjs的filter过滤器
建站之星如何防范黑客攻击与数据泄露?
网站制作说明怎么写,简述网页设计的流程并说明原因?
如何在阿里云域名上完成建站全流程?
北京建设网站制作公司,北京古代建筑博物馆预约官网?
*请认真填写需求信息,我们会在24小时内与您取得联系。