五叶神
五叶神
  • 发布:2016-11-15 10:45
  • 更新:2016-11-15 10:45
  • 阅读:8556

【经验分享】滚动浮动导航,iscroll结构滚动固定元素

分类:MUI

看问答里面很多人在求滚动到一定位置固定某个结构的方法,分享个简单的方法。

官方给的iscroll获取滚动条高度的在浏览器是有效的,在安卓手机上就无效了,获取transform transitionY同样的问题获取不到,所以放弃获取高度,直接通过固定目标元素距离顶部的距离去判断位置。

// 滚动固定  
            var headH = document.querySelector('header').offsetHeight,  //头部高度  
                tab = document.getElementById('userTab'),   //目标元素  
                fixed = document.getElementById('fixedNav'); // 浮动元素,默认隐藏,当然也可以直接浮动目标元素  

            window.addEventListener('scroll', function(e) {  
                //原理:滚动时判断固定元素的top距离头部的位置  
                if(himall.hasClass(fixed, 'hidden')) {  
                    if(tab.getBoundingClientRect().top <= headH) {  
                        himall.removeClass(fixed, ' hidden');  
                    }  
                }else if(!himall.hasClass(fixed, 'hidden')){  
                    if(tab.getBoundingClientRect().top >= headH){  
                        fixed.className += ' hidden';  
                    }  
                }  
            });
himall.removeClass = function(el,name) {  
        if(!el)  
            return;  
        if(el.className.indexOf(name)>=0)  
            el.className=el.className.replace(name,'');  
    }  

    himall.hasClass = function(el,name) {  
        return (el.className.indexOf(name)>=0);  
    }
2 关注 分享
BoredApe 1***@qq.com

要回复文章请先登录注册

1***@qq.com

1***@qq.com

回复 ilijiayin :
同问。
请问解决了吗
2018-05-09 15:40
2***@qq.com

2***@qq.com

有BUG,往上滑动,固定的那个不会隐藏。
2017-09-19 23:33
五叶神

五叶神 (作者)

回复 vosome :
你这个是jquery 我就没有引入jquery,纯原生js
2017-07-28 18:07
ilijiayin

ilijiayin

回复 vosome :
能不能在滚动过程中监听,而不是滚动停止时监听
2017-07-05 10:58
vosome

vosome

之前解决的方案跟你一样都存在滚动停止时出现,不过相对写法简单了很多

$(function () {
var $ban = $('#fudo');
var $tri = $('#stardo');

$(window).on('scroll', function () {
if ($(this).scrollTop() >= $tri.position().top) {
$ban.css({'position':'fixed','top':'44px'});
} else {
$ban.css({'position':'relative','top':'0px'});
}
});
});
2016-12-27 10:33
vosome

vosome

还是存在滚动停止时才出现的问题
2016-12-27 10:24
vosome

vosome

回复 五叶神 :
发我一下吧 感谢
2016-12-27 10:14
五叶神

五叶神 (作者)

回复 vosome :
搞了个test 自己copy吧
2016-12-27 10:04
五叶神

五叶神 (作者)

回复 vosome :
全部在上面了 没有更多了
2016-12-27 09:49
vosome

vosome

大神,能否发个完整的代码解决方案 luancao85@163.com
2016-12-27 09:30