手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >原生js实现淘宝首页点击按钮缓慢回到顶部效果
原生js实现淘宝首页点击按钮缓慢回到顶部效果
摘要:淘宝首页的回到顶部按钮是这样的:下拉到一定距离后按钮才显示出来,鼠标放到按钮上时,按钮背景会变成灰色,并且图标变成了文字。点击按钮缓慢回到顶...

淘宝首页的回到顶部按钮是这样的:下拉到一定距离后按钮才显示出来,鼠标放到按钮上时,按钮背景会变成灰色,并且图标变成了文字。点击按钮缓慢回到顶部

我们先分析下实现这样的效果需要添加哪些事件。鼠标移进移出按钮,按钮表现发生变化,所以需要给按钮添加mouseover, mouseout事件。要侦听滚动条的变化,所以需要给window添加scroll事件,点击按钮回到顶部,按钮添加click事件。我们将事件处理程序封装成三个函数moveIn, moveOut, goTop;

下面先给出html/css代码

复制代码 代码如下:

<div>

<div>头部</div>

<div>主要内容,高度是2000px</div>

<divbtn">返回顶部</div>

</div>

复制代码 代码如下:

.container { width: 980px; margin: 0 auto; height: auto; background: #aaa;}

.content { height: 2000px; border: 1px solid blue; }

#btn {

position:fixed;

bottom: 50px;

right: 0;

width: 54px;

height: 55px;

background: url(icons.png) no-repeat 0 -110px; } //背景图可随意找一张

font-size: 12px;

line-height: 55px;

text-align: center;

text-indent: -9999em;

cursor: pointer;

display: none;

下面是完整的js代码

复制代码 代码如下:

window.addEventListener("load",function() {

var btn = document.getElementById("btn");

btn.addEventListener("mouseover",moveIn, false);

btn.addEventListener("mouseout", moveOut, false);

function moveIn() {

btn.style.color = "#ffffff"; //修改的是内联样式,具有最高的优先级;

btn.style.textIndent = "0em";

btn.style.backgroundImage = "none";

btn.style.backgroundColor = "#FF4401";

}

function moveOut() {

btn.style.textIndent = "-9999em";

btn.style.backgroundImage = "url(icons.png)";

}

function goTop(acceleration, time) { //修改参数可调整返回顶部的速度

acceleration = acceleration || 0.1;

time = time || 10;

var speed = 1 + acceleration;

function getScrollTop() { //取得滚动条的竖直距离

return document.documentElement.scrollTop || document.body.scrollTop;

}

function setScrollTop(value) { //设置滚动条的竖直距离,实现效果的关键就是在很短的间隔时间内不断地修改滚动条的竖直距离,以实现滚动效果

document.documentElement.scrollTop = value;

document.body.scrollTop = value;

}

window.onscroll = function() {

var scrollTop = getScrollTop();

if (scrollTop > 100) { //判断滚动条距离窗口顶部多远时显示出来,这里是100px

btn.style.display = "block";

} else {

btn.style.display = "none";

}

};

btn.onclick = function () {

var timer = setInterval(function() {

setScrollTop(Math.floor(getScrollTop() / speed)); //这行代码是关键,取得滚动条竖直距离,除以speed后再给滚动条设置竖直距离

if (getScrollTop() == 0)

clearInterval(timer);

}, time);

};

}

goTop(0.2, 8);

}, false);

当然,还有其他的实现方法,下面给出其他方法的关键代码

复制代码 代码如下:

btn.onclick = function() {

clearInterval(timer);

var timer = setInterval(function() {

var now = scrollTop; //滚动条竖直距离

speed = (0 - now) / 10;

speed = Math.floor(speed);

if (now == 0);

clearInterval(timer);

document.documentElement.scrollTop = now + speed; //标准模式下的浏览器

document.body.scrollTop = now + speed; //怪异模式下的浏览器

}, 15);

}

1

这里的代码主要还是参考了网上其他资源,再加了一点自己的理解。当然还有其他实现方法,比如JavaScript最早时间就支持的window.scrollTo()。用jQ来实现的话代码量将会变得很少,可参看w3cplus

个人觉得,先学好原生JavaScript,比如搞清楚数据类型,闭包,继承,作用域,DOM,CSS,事件处理,Ajax等,用熟练后学习其他框架将会容易很多。

【原生js实现淘宝首页点击按钮缓慢回到顶部效果】相关文章:

多种js图片预加载实现方式分享

js实现带按钮的上下滚动效果

jQuery插件Slider Revolution实现响应动画滑动图片切换效果

利用js实现禁止复制文本信息

js实现时间显示几天前、几小时前或者几分钟前的方法集锦

js实现点击链接后延迟3秒再跳转的方法

javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法

jQuery插件pagewalkthrough实现引导页效果

javascript实现点击后变换按钮显示文字的方法

javascript实现点击商品列表checkbox实时统计金额的方法

精品推荐
分类导航