跳转对应楼层

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<link rel="stylesheet" href="animate.min.css">
<style type="text/css">
*{margin: 0;padding: 0;}
html,body{width: 100%;height: 100%;}
.body{width: 100%;height: 100%;overflow: auto;}
.part{width: 100%;font-size: 40px; text-align: center;line-height: 300px; color: #fff;}
.part1{height: 1000px;background-color: #51C577;}
.part2{height: 650px;background-color: #A7C551;}
.part3{height: 780px;background-color: #51C5A9;}
.part4{height: 1200px;background-color: #51A5C5;}

.nav_box{width: 60px; height: auto;position: fixed;right: 10%;bottom: 30%;}
.nav_box li{
width: 60px;height: 60px;
margin: 10px 0;
border-radius: 100%;
background-color: #3F3F3F;
text-align: center;
line-height: 60px;
font-size: 26px;
font-weight: bold;
color: #fff;
list-style: none;
cursor: pointer;
}
.nav_box .active{background-color: #F7FC4F;color: #000;}
#dowebok {
animate-duration: 2s;
animate-delay: 1s;
animate-iteration-count: 2; opacity: 0;
}
#dowebok1{
animate-duration: 2s;
animate-delay: 1s;
animate-iteration-count: 2; opacity: 0;
}
#dowebok2 {
animate-duration: 2s;
animate-delay: 1s;
animate-iteration-count: 2; opacity: 0;
}
#dowebok3 {
animate-duration: 2s;
animate-delay: 1s;
animate-iteration-count: 2; opacity: 0;
}


@-webkit-keyframes fadeIndown{
from{-webkit-transform: translateY(100%);transform: translateY(100%);opacity: 0;}
to{-webkit-transform: translateY(0);transform: translateY(0);opacity: 1;}
}
@keyframes fadeIndown{
from{-webkit-transform: translateY(100%);transform: translateY(100%);opacity: 0;}
to{-webkit-transform: translateY(0);transform: translateY(0);opacity: 1;}
}
.tfadeIndown{
-webkit-animation: 1s .6s linear both;
}

.tfadeIndown{
-webkit-animation:fadeIndown 1s .6s linear both;
}
</style>
<body>
<div class="body">
<div class="part part1"><div class="" id="dowebok">这是右边边出来的</div></div>
<div class="part part2">
<div class="" id="dowebok1">这是左边出来的</div>
</div>
<div class="part part3">
<div class="" id="dowebok2">这事下面出来的内容</div>
</div>
<div class="part part4">
<div class="" id="dowebok3">这事上面出来的内容</div>
</div>
</div>
<ul class="nav_box">
<li class="active">一</li>
<li>二</li>
<li>三</li>
<li>四</li>

<li>TOP</li>
</ul>
</body>
<script src="jquery.min.js"></script>
<script type="text/javascript">
/*
*==========================================================
*======================图片懒加载方法扩充=======================
*==========================================================
*/
jQuery.fn.extend({
lazyImg:function (lazeImgUrl){
this.img = $(this).find('img');
this.imgLength = this.img.length;
var i=0;
var temporary;
for (;i < this.imgLength;i++) {
temporary = this.img.eq(i);
temporary.addClass('lazyload');
temporary.attr('data-src',temporary.attr('src'));
temporary.attr('src',lazeImgUrl);
}
},
loadImg:function (){
this.img = $(this).find('img');
this.imgLength = this.img.length;
var i=0;
var temporary;
for (;i < this.imgLength;i++) {
temporary = this.img.eq(i);
if(temporary.hasClass('lazyload')){
temporary.removeClass('lazyload');
temporary.attr('src',temporary.attr('data-src'));
temporary.attr('data-src','');
}
}
}
})
//添加jq方法,打字用的
jQuery.fn.extend({
printer:function (speed,delay,text){
var _this = this;
var data = text || _this.text(),
delay = delay || 0,
speed = speed || 50;
text == null ? _this.text(""): null;
var len = data.length,arr = [],str = "",n = 0;
for (var i= 0; i < len ; i++){arr.push(data.substring(i,i+1));}
var t1 = setTimeout(function (){
var t2 = setInterval(function (){
str += arr[n] ;
_this.text(str) ;
n ++;
if(n>=len)
clearInterval(t2);
},speed)
clearTimeout(t1);
},delay)
}
})

$(function(){
var arr=[];
var len=$('.part').length;
var body=$('.body');
var nav= $('.nav_box').find('li');
var isScrolling = false;
var part = $('.part');
//存放上一个活动页面的索引值
var prevIndex = 0;
arr[0]=-($(window).height())/3
//alert(arr[0])
for(var i=0; i<len; i++){
arr[i+1]=arr[i]+$('.part').eq(i).height();
//alert(arr[1])
}
alert(arr)
body.on('scroll',function(){
for (var i = 0; i < len; i++ ) {
if(body.scrollTop()> arr[i]&& body.scrollTop()<arr[i+1]){
nav.eq(i).addClass('active').siblings().removeClass('active');
if(i != prevIndex){
prevIndex = i;
animate1 (i)
}
}
}
})

nav.on('click',function(){
if(!isScrolling){
isScrolling = true;
var _this=$(this).index();
if(_this==len){
_this=0;
}
body.animate({'scrollTop':arr[_this]-arr[0]},400,function(){isScrolling = false;})

}
})

function animate1(prevIndex){

switch(prevIndex)
{
case 0:
if(!part.eq(0).hasClass('animated')){
$('#dowebok').addClass('tfadeIndown');
//part.eq(0).addClass('bounceInRight');
//执行动作
// part.eq(0).printer(200,0,'这是第一11111111页');
}
break;
case 1:
if(!part.eq(1).hasClass('animated')){
$('#dowebok1').addClass('tfadeIndown');
// part.eq(1).addClass('bounceInLeft');
//执行动作
// part.eq(1).printer(200,0,'这是第一22222页');
}
break;
case 2:
if(!part.eq(2).hasClass('animated')){
// $('#dowebok2').addClass('animated bounceInDown');
$('#dowebok2').addClass('tfadeIndown');
//part.eq(2).addClass('bounceInDown');
//执行动作
// part.eq(2).printer(200,0,'这是第一3333333333333页');
}
break;
case 3:
if(!part.eq(3).hasClass('animated')){
$('#dowebok3').addClass('tfadeIndown');
// part.eq(3).addClass('bounceInUp');
//执行动作
//part.eq(3).printer(200,0,'这是第一4444444444444444页');
}
break;
}
}





})
</script>
</html>

转载于:https://www.cnblogs.com/xuyanjiayou/p/8522746.html

好的,我可以给你一些思路。 首先,你需要获取到每个楼层的相对位置(offsetTop)。可以使用JavaScript的offsetTop属性来获取每个楼层元素距离文档顶部的位置。 接下来,你可以创建一个楼层导航条,用于点击跳转对应楼层。可以使用HTML和CSS创建一个fixed定位的导航条,并使用JavaScript编写代码来为导航条中的每个链接添加点击事件。 在每个链接的点击事件中,你需要获取目标楼层元素的offsetTop值,并使用JavaScript的scrollTop属性将页面滚动到该位置。 下面是一个简单的示例代码: HTML代码: ``` <!-- 楼层导航条 --> <div class="floor-nav"> <ul> <li><a href="#f1">1楼</a></li> <li><a href="#f2">2楼</a></li> <li><a href="#f3">3楼</a></li> </ul> </div> <!-- 楼层内容 --> <div id="f1" class="floor">1楼</div> <div id="f2" class="floor">2楼</div> <div id="f3" class="floor">3楼</div> ``` CSS代码: ``` /* 楼层导航条样式 */ .floor-nav { position: fixed; top: 50%; left: 20px; transform: translateY(-50%); } .floor-nav ul { list-style: none; padding: 0; margin: 0; } .floor-nav li { margin-bottom: 10px; } .floor-nav a { color: #333; text-decoration: none; } ``` JavaScript代码: ``` // 获取所有楼层元素 var floors = document.querySelectorAll('.floor'); // 获取楼层导航条 var nav = document.querySelector('.floor-nav'); // 为每个链接添加点击事件 nav.addEventListener('click', function(e) { e.preventDefault(); if (e.target.tagName === 'A') { // 获取目标楼层元素的offsetTop值 var floorId = e.target.getAttribute('href'); var targetFloor = document.querySelector(floorId); var offsetTop = targetFloor.offsetTop; // 滚动到目标位置 window.scrollTo({ top: offsetTop, behavior: 'smooth' }); } }); ``` 这段代码会为楼层导航条中的每个链接添加点击事件,当点击链接时,会获取对应楼层元素的offsetTop值,并使用平滑滚动将页面滚动到该位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值