JS 滚动屏幕至顶端

JS 滚动屏幕至顶端

JS滚动屏幕到顶端的几种方法

  • <a href="#"></a>与带id的元素绑定使用
  • document.documentElement.scrollTop = 0 / document.body.scrollTop = 0
  • scrollTo(0,0) 一般用于相对于整个页面来说
  • scrollBy(x,y) 一般用于相当于当前元素的滚动 ,可以传入当前元素相对于顶端的值,即document.documentElement.scrollTop
  • scrollIntoView()和要跳转的元素绑定,使元素进入视口
<body style="height:2000px;">
    <div id="target"></div>
<div id="box" class="box">
<div class="box-in"></div>
</div> 
<script>
var box = document.getElementById("box");
box.addEventListener("click",function(){
    console.log(1)
    target.scrollIntoView(true);
})
</script>

我的实现

$('.toTop').on({
    click: function () {
        $("html").animate({
            scrollTop: 0
        },400)
    }
})

兼容性问题(此处应用了大佬的文章,链接在下面)

  • document.body.scrollTop在当前文档处于“怪异模式(Quirks mode)”,当HTML文档没有声明DOCTYPE的时候,浏览器可以识别。
  • document.documentElement.scrollTop在当前文档处于“标准模式(Standards mode)”或者“准标准模式(almost standards mode)”(即上段代码中mode = “CSS1Compat”)使用,当HTML文档正确声明DOCTYPE的时候,就可能会启用标准模式,是否启用取决于浏览器本身。
  • window.pageYOffset最为特殊,并不取决于文档的渲染模式,而是取决于浏览器本身是否存在此属性。

浏览器兼容性问题

  • IE6/7/8:没有doctype声明的html文档使用 document.body.scrollTop,否则使用document.documentElement.scrollTop。这些版本的浏览器中window.pageYOffset属性是undefined,因此无效。
  • Google Chrome,Firefox,IE9+: document.body.scrollTop 和 document.documentElement.scrollTop 使用方式同上,但window.pageYOffset 无论doctype是否声明,浏览器都可以识别。(早前的chrome只能识别document.body,也就是documentElement对应body标签,自用chrome更新63以上版本以后正确doctype文档声明document.body.scrollTop恒为0,document.documentElement.scrollTop正常,chrome也没有早前那样特立独行了)。
  • Safari: 浏览器特殊,目前只有window.pageYOffset有效。

完整代码

var supportPageOffset = window.pageXOffset !== undefined;
var isCSS1Compat = ((document.compatMode || "") === "CSS1Compat");
 
var x = supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;
var y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;

终极代码

var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;

https://blog.csdn.net/a592024343/article/details/101142582

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值