锚点重置组件的实现

1、  前言

前段时间,需要做一个类似腾讯微博的锚点重置组件功能:当滚动页面时,页面右下角出现一个跳转到页面顶部的按钮,并一直浮动。如下图所示:

 

 

同时,在滚动到页面底端时,要做到如下效果:

 

当滚动条处于页面最顶端时,默认隐藏该组件。

2、  实现

首先是页面实现,主要代码如下:

 

IE7IE8firefoxchrome下很好实现,只需要设置该组件的style样式为position:fixed就可以了,然后用js控制一下当滚动到页面底部的该组件的高度。

但是最让人头疼的是IE6,该浏览器下positionfixed不好使……这万恶的IE6。没办法,只好使用js模拟:当滚动条滚动时,调用js设置该组件的位置。

1、注册滚动条的onscroll事件。window.onscroll=collectScroll;

2、为了防止每次滚动条滚动时都去用js设置该组件的高度从而导致页面交互不好,采用了延迟设置该组件的高度的技术。在滚动条滚动从而触发滚动事件A时,调用response=setTimeout(func,200)函数延迟200ms(人眼的感觉)后再去设置组件高度。如果下次滚动条滚动再次触发滚动事件B时,如果距离上次滚动事件A的时间间隔小于200ms,那么就清除上次设置的时间句柄clearTimeout(response)

3、我们还要小心用户触发resize事件,当浏览器大小改变时,需要重新设置该组件的高度。这需要注册window.onresize=resizeEvent;

4、此外,我们还需要注意,在IE7下面,点击该组件时,并不会跳到该页面的顶端,总是有段距离,如下图所示。这需要我们继续打补丁window.scrollTo(0,0);

主要代码如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值