永发信息网

锚点平滑滚动的问题

答案:3  悬赏:30  手机版
解决时间 2021-05-22 18:36

请看下面地址这种效果:

http://zjc.name/demo/index.html

我想的是下面有颜色的a,b,c,d,e都在一个div里面,一共只有一个a的高度,其他的不显示,而点击上面的按钮之后,在下面a的高度区域内平滑滚动到锚点,而不是现在这样全屏滚动,请问该怎么实现?

最佳答案

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=" http://www.w3.org/1999/xhtml">
<head>
<title>.</title>
<style type="text/css">
div.test {
width:400px;
margin:5px auto;
border:1px solid #ccc;
}
div.test strong {
font-size:16px;
background:#fff;
border-bottom:1px solid #aaa;
margin:0;
display:block;
padding:5px 0;
text-decoration:underline;
color:#059B9A;
cursor:pointer;
}
div.test p {
height:400px;
background:#f1f1f1;
margin:0;
}
</style>
</head>
<body>
<div class="ad" align="center">
<a name="header_0" id="header_0"></a>
<a href="#" onclick="javascript:scroller('header_1', 800);">A</a>
<a href="#" onclick="javascript:scroller('header_2', 800);">B</a>
<a href="#" onclick="javascript:scroller('header_3', 800);">C</a>
<a href="#" onclick="javascript:scroller('header_4', 800);">D</a>
<a href="#" onclick="javascript:scroller('header_5', 800);">E</a>
<a href="#" onclick="javascript:scroller('header_6', 800);">F</a>


</div>
<br />
<div id="example">
<div id="example_main">


<script type="text/javascript">
function intval(v)
{
v = parseInt(v);
return isNaN(v) ? 0 : v;
}
function getPos(e)
{
var l = 0;
var t = 0;
var w = intval(e.style.width);
var h = intval(e.style.height);
var wb = e.offsetWidth;
var hb = e.offsetHeight;
while (e.offsetParent){
l += e.offsetLeft + (e.currentStyle?intval(e.currentStyle.borderLeftWidth):0);
t += e.offsetTop + (e.currentStyle?intval(e.currentStyle.borderTopWidth):0);
e = e.offsetParent;
}
l += e.offsetLeft + (e.currentStyle?intval(e.currentStyle.borderLeftWidth):0);
t += e.offsetTop + (e.currentStyle?intval(e.currentStyle.borderTopWidth):0);
return {x:l, y:t, w:w, h:h, wb:wb, hb:hb};
}
function getScroll()
{
var t, l, w, h;
if (document.documentElement && document.documentElement.scrollTop) {
t = document.documentElement.scrollTop;
l = document.documentElement.scrollLeft;
w = document.documentElement.scrollWidth;
h = document.documentElement.scrollHeight;
} else if (document.body) {
t = document.body.scrollTop;
l = document.body.scrollLeft;
w = document.body.scrollWidth;
h = document.body.scrollHeight;
}
return { t: t, l: l, w: w, h: h };
}
function scroller(el, duration)
{
if(typeof el != 'object') { el = document.getElementById(el); }
if(!el) return;
var z = this;
z.el = el;
z.p = getPos(el);
z.s = getScroll();
z.clear = function(){window.clearInterval(z.timer);z.timer=null};
z.t=(new Date).getTime();
z.step = function(){
var t = (new Date).getTime();
var p = (t - z.t) / duration;
if (t >= duration + z.t) {
z.clear();
window.setTimeout(function(){z.scroll(z.p.y, z.p.x)},13);
} else {
st = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.p.y-z.s.t) + z.s.t;
sl = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.p.x-z.s.l) + z.s.l;
z.scroll(st, sl);
}
};
z.scroll = function (t, l){window.scrollTo(l, t)};
z.timer = window.setInterval(function(){z.step();},13);
}
</script>
<div class="test">
<a name="header_1" id="header_1"></a>
<strong onclick="javascript:scroller('header_0', 800);">A</strong>
<p></p>
</div>
<div class="test">
<a name="header_2" id="header_2"></a>
<strong onclick="javascript:scroller('header_0', 800);">B</strong>
<p></p>
</div>
<div class="test">
<a name="header_3" id="header_3"></a>
<strong onclick="javascript:scroller('header_0', 800);">C</strong>
<p></p>
</div>
<div class="test">
<a name="header_4" id="header_4"></a>
<strong onclick="javascript:scroller('header_0', 800);">D</strong>
<p></p>
</div>
<div class="test">
<a name="header_5" id="header_5"></a>
<strong onclick="javascript:scroller('header_0', 800);">E</strong>
<p></p>
</div>
<div class="test">
<a name="header_6" id="header_6"></a>
<strong onclick="javascript:scroller('header_0', 800);">F</strong>
<p></p>
</div>


</div>
</div>
<br />
<div class="ad">
</div>
</body>
</html>

全部回答
你可以用Dreamweaver上的图层功能来实现这种效果的,这个方法是最简单的,不需要自己写代码

看了下你页面的效果,你这个应该要用到JS 跟 者用CSS样式。你可以到找些原码。

给你个JS 提示下

document.getElementById("A").style.display='none';

这个是 隐藏ID名称为A 标签。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
卫生整改通知书,如何填写违章建筑整改通知书
现在下载个游戏都那么多不能玩的,谁给个好玩
已知a平方+b=2009,b-c平方=2求下列多项式的值
济南拍婚纱照最好的地方是哪里?
关于水瓶座的句子,关于水瓶座的唯美句子,十
求购健身器械
爱情的祝福词语,祝福老人生日的语有什么
薰衣草在哪个季节开的?
校长给小学生毕业寄语,实验小学校长2016新春
金泉浴池地址在哪,我要去那里办事
1.如图,三个圆的面积之和是56,圆A和圆C的面积
毫不示弱中的弱的意思,亳不示弱是不是贬义词
中秋放假?
谁知道怎么下载OPPOA203的正式手机QQ?
请问今年会下雪吗?
推荐资讯
我跟我老婆第一次没见红她说她是但我送她回家
求李霄云寂寞的季節MP3下載
12星座的男生那个最受欢迎?
像百度之类的网站上的新闻是转载人家的还是怎
如何装XP系统程序
梦幻西游LG单挑为什么用龙卷雨击而不用二龙戏
kktxouor进程
可以写在自己纸上,
世界上最高的是什么山?最臭的是什么石?
tnpel奔腾双核E5300 华硕P5KPL-AMSE 西数500G
安全期真的安全么
言成教育地址在什么地方,想过去办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?