对scrollTop的研究
本文主要从原生 JS以及jquery来说明scrollTop是如何实现的,以及一些技巧,以及在PC端和移动端使用的差异。
首先用代码表示下如何回到顶部的简单原理
<!doctype html>
<html lang="zh_EN">
<head>
<meta charset="UTF-8">
<title>滚动条距离</title>
<script>
window.onload=function(){
document.onclick=function(){
//滚动条滚动距离
//document.documentElement 适用于除谷歌 滚动条属于文档
//document.body.scrollTop 适用于谷歌 滚动条属于body
//alert(document.documentElement.scrollTop);
//alert(document.body.scrollTop);
//处理兼容
//因都存存在这两种属性 要回到顶部需分别设置(暂时想不出好方法)
document.documentElement.scrollTop=;
document.body.scrollTop=;
}
}
</script>
</head>
<body style="height:2000px;"> </body>
</html>
用原生如此实现在jquery中如何实现呢
<!doctype html>
<html lang="zh_EN">
<head>
<meta charset="UTF-8">
<title>滚动条距离</title> <script src="jquery.min.js"></script>
</head>
<body style="height:2000px;"> <script>
$(function(){
$(document).click(function(){
//$('body').scrollTop(0)//谷歌可以实现,其他不支持
$(window).scrollTop();//可以实现都回到顶部
}) }) </script>
</body>
</html>
这样都会支持,但效果显得格外生硬。如何产生运动效果来达到更好的体验呢,请看下面的代码片段
<!doctype html>
<html lang="zh_EN">
<head>
<meta charset="UTF-8">
<title>滚动条距离</title> <script src="jquery.min.js"></script>
</head>
<body style="height:2000px;"> <script>
$(function(){
$(document).click(function(){
//用window普通可以实现但产生运动效果在浏览器上都会报错
//$(window).animate({'scrollTop':0},1000);
//从网上查到这个方法
//$(document.body).animate({'scrollTop':0},1000);//经过测试只有在谷歌上有作用
//难道jquery没兼容好这个方法???
//经过反复查找终于找到答案如下
$('body,html').animate({'scrollTop':},);//完美实现 么么滴 也考虑到谷歌和其他的应用场景不同
}) }) </script>
</body>
</html>
考虑到移动端问题在 zepto中的scrolltop似乎也应用的不是很理想,那我们就用原生实现吧。谁让移动端内核都是webkit呢,代码如下
<!doctype html>
<html lang="zh_EN">
<head>
<meta charset="UTF-8">
<title>滚动条距离</title> </head>
<body style="height:2000px;"> <script> function scroll(scrollTo, time) {
var scrollFrom = parseInt(document.body.scrollTop),
i = ,
runEvery = ; // run every 5ms scrollTo = parseInt(scrollTo);
time /= runEvery; var interval = setInterval(function () {
i++; document.body.scrollTop = (scrollTo - scrollFrom) / time * i + scrollFrom; if (i >= time) {
clearInterval(interval);
}
}, runEvery);
} document.body.onclick=function () {
scroll('', );
}; </script>
</body>
</html>
不知道是不是解决了回到底部的问题,当然还有插件可以使用,但基本都基于此类原理,关于在什么时候出现回到顶部的箭头我就不再说明了(相当简单),当然也有用#top实现,不过个人感觉体验不是很好。如果还有疑惑欢迎交流讨论,能力有限只能做初步探讨
对scrollTop的研究的更多相关文章
- 关于offsetTop offsetHeight clientHeight scrollHeight scrollTop的区别研究
我是以chrome浏览器做的研究. 先看一段代码: <script> window.addEventListener('DOMContentLoaded',function(){ var ...
- 搞懂offsetY、offsetTop、scrollTop、offsetHeight、scrollHeight
先搞offsetTop,最难懂的就是它了 官方解释:返回当前元素的上边界到它的包含元素的上边界的偏移量,以像素为单位.这真TM坑爹啊!有木有!经过仔细研究查找得出结论:offsetTop是相对于离它最 ...
- Javascript scrollTop 20大洋
花了20大洋,买了一个视频,这是读书笔记 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"&g ...
- js获取浏览器基本信息:document.body.clientWidth/clientHeight/scrollWidth/scrollTop。(转)
js获取浏览器基本信息:document.body.clientWidth/clientHeight/scrollWidth/scrollTop. 分类: js.jquery.ext.js技术2011 ...
- 像VUE一样写微信小程序-深入研究wepy框架
像VUE一样写微信小程序-深入研究wepy框架 微信小程序自发布到如今已经有半年多的时间了,凭借微信平台的强大影响力,越来越多企业加入小程序开发. 小程序于M页比相比,有以下优势: 1.小程序拥有更多 ...
- 深入研究-webkit-overflow-scrolling:touch及ios滚动
1. -webkit-overflow-scrolling:touch是什么? MDN上是这样定义的: -webkit-overflow-scrolling 属性控制元素在移动设备上是否使用滚动回弹效 ...
- 关于document.body.scrollTop与documentElement.scrollTop
遇到document.body.scrollTop值为0的问题 今天在写一个小demo的时候,使用滚动条,我用document.body.scrollTop获取滚动条的位置,但是很奇怪的发现在谷歌上获 ...
- 图片滚动(UP)的JS代码详解(offsetTop、scrollTop、offsetHeigh)【转】
源地址 信息技术教材配套的光盘里有一段设置图片滚动的JS代码,与网络上差不多,实现思路:一个设定高度并且隐藏超出它高度的内容的容器demo,里面放demo1和 demo2,demo1是滚动内容,dem ...
- myslide 插件开发知识点总结和 css3 动画性能问题的研究
myslide 插件开发知识点总结和 css3 动画性能问题的研究 这篇文章主要是总结最近开发过程中遇到的问题.有几个问题又是不容易发现原因的问题,但是最后的结果又是很简单的. 1.手机端的 slid ...
随机推荐
- CComboBox自动匹配
void CLoadPhotoDlg::OnCbnEditchangeCombo1() { // TODO: 在此添加控件通知处理程序代码 UpdateData(TRUE); CComboBox ...
- 【69.77%】【codeforces 723A】The New Year: Meeting Friends
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- [D3] Convert Input Data to Output Values with Linear Scales in D3
Mapping abstract values to visual representations is what data visualization is all about, and that’ ...
- [Elm] Installing and setting up Elm
Before writing any Elm we need to first install the runtime locally. In this lesson we install the E ...
- 【solr专题之二】配置文件:solr.xml solrConfig.xml schema.xml 分类: H4_SOLR/LUCENCE 2014-07-23 21:30 1959人阅读 评论(0) 收藏
1.关于默认搜索域 If you are using the Lucene query parser, queries that don't specify a field name will use ...
- dmalloc arm-linux平台使用
话说“工欲善其事,必先得其器”,用C语言写程序,最怕遇到个什么内存泄漏,内存越界访问了,心里那个急啊... 如果在i368-linlux上,valgrind工具是首选,但在arm-linux平台上,如 ...
- 【38.24%】【POJ 1201】Intervals
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 25902 Accepted: 9905 Description You are ...
- Android 如何Android中自定义Navigationbar
在如何控制Android系统中NavigationBar 的显示与隐藏文章里简要地介绍了Navigationbar的背景知识, NavigationBar的代码是放在... rameworksasep ...
- js如何实现动态克隆一个表格?
js如何实现动态克隆一个表格? 一.总结 1.通过innerHTML实现表格内容复制, 2.通过表格dom的属性(比如border)实现属性赋值, 3.通过表格dom的样式style实现样式的复制. ...
- [Ramda] Eliminate Function Arguments (Point-Free Style) with Ramda's Converge
When doing comparisons inside of functions, you end of relying heavily on the argument passed into t ...