问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

js的window.scroll怎么用

发布网友 发布时间:2022-04-23 02:09

我来回答

2个回答

懂视网 时间:2022-05-14 22:29

这篇文章主要介绍了关于原生JS基于window.scrollTo()封装垂直滚动动画工具函数 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

概要:

原生JS基于window.scrollTo()封装垂直滚动动画工具函数,可应用与锚点定位、回到顶部等操作。

封装原因:
在vue项目中,遇到需要实现垂直滚动效果的需求,初步想到的方法有两个:
1:使用window.scrollTo()方法,但是这个方法是没有动画效果的,需要手动封装一下。
2:使用JQuery的动画函数,缺点比较明显:需要引入JQuery。
显然,选择第一种好很多。

以下为封装window.scrollTo()的方法scroll(),文件名为scroll.js

// Created by xiaoqiang on 30/05/2018.
/**
 * @param {numeber} currentY 需要移动的dom当前位置离网页顶端的距离
 * @param {number} targetY 需要移动的dom当前位置离要移到的位置的距离
 */
function scroll (currentY, targetY) {
 // 计算需要移动的距离
 let needScrollTop = targetY - currentY
 let _currentY = currentY
 setTimeout(() => {
 // 一次调用滑动帧数,每次调用会不一样
 const dist = Math.ceil(needScrollTop / 10)
 _currentY += dist
 window.scrollTo(_currentY, currentY)
 // 如果移动幅度小于十个像素,直接移动,否则递归调用,实现动画效果
 if (needScrollTop > 10 || needScrollTop < -10) {
 scroll(_currentY, targetY)
 } else {
 window.scrollTo(_currentY, targetY)
 }
 }, 1)
}
// 暴露此方法
export default scroll
使用方法

比如在vue中,可以这样用:
import scroll form '@/common/util/scroll.js'
随后在响应触发事件的函数中调用scroll(),需要传入两个参数,比如:

 methods: {
 test () {
  const scrollHeight = document.getElementsByClassName('scroll-element')[0].offsetTop
  const currentY = document.documentElement.scrollTop || document.body.scrollTop
  scroll(currentY, scrollHeight)
 }
 }

有错误或不清晰或可以改进的地方欢迎指出,O(∩_∩)O~~

热心网友 时间:2022-05-14 19:37

1、onscroll

解释:当元素的滚动条滚动时触发的事件。

onscroll事件貌似任何实体元素都可以绑定,这里的实体元素包括DOM元素、window元素、document元素。

用法即:element.onscroll=function(){};

需要注意的是,滚动条一定要出现,而且滚动条是属于这元素的,例如:

1 <div id="wrap" style="height:100px;overflow:auto;">
2 <div id="inner" style="height:200px;">content</div>
3 </div>

因为外层wrap的高度小于内层inner的高度,所以当设置overflow:auto时会出现滚动条,当拖动滚动条时就会触发wrap的onscroll事件,而不是inner的onscroll事件,即这滚动条属于wrap而不是属于inner,明白这点十分重要,对下面理解的scrollTop、scrollHeight一样道理。

2、scrollTop

解释:元素滚动条内的顶部隐藏部分的高度。

scrollTop属性只有DOM元素才有,window/document没有。

用法1:获取值 var top = element.scrollTop;//返回数字,单位像素

用法2:设置值 element.scrollTop = 200;

对上面的例子来说,控制滚动条的位置是wrap.scrollTop=xx;而不是inner.scrollTop,道理同上。

兼容性问题:获得整个文档scrollTop,IE是document.documentElement.scrollTop,FF/CH则是document.body.scrollTop.

3、scrollHeight

解释:元素滚动条内的内容高度。

scrollHeight同scrollTop属性一样,只有DOM元素才有,window/document没有。

不同的是scrollHeight是只读,不可设置。

兼容性问题:获取整个文档scrollHeight,IE/FF/CH都可以通过document.documentElement.scrollHeight或document.body.scrollHeight获得。

此外还有scrollLeft,scrollWidth,道理是一样的。

4、关于window.scroll(),window.scrollBy(),window.scrollTo()

这3个是全局函数,最新的IE/FF/CH都支持。

window.scroll(x,y)是让window滚动条滚动到那个x,y坐标。//x是水平坐标,y是垂直坐标。

window.scrollBy(-x,-y)是让window滚动条相对滚动到某个坐标,- 10即相对向左/向上滚动10像素。

window.scrollTo(x,y)和window.scroll(x,y)一样。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
现在家里用空调买什么比较好,变频空调好吗! 公司不承认劳动关系,我找了两个证人 ,证明材料也有,还盖了手印的,但是... ...一直到现在也没签劳动合同,现公司要辞退我们,请问我们可以得到什么赔... 2002年9月10号早上6.7点钟出生的女子命运如何 我是86年12月4日出生的大概6.7点时候麻烦帮我看看我的婚姻事业 有美国绿卡,在其他国家工作,还需要给美国交税吗? 我是中国国籍,在日本就职,公司想派我回上海分公司短期帮忙,会有签证... 上海职工在日本取得的补贴收入要在上海交个税吗? 王楚钦底板配置套胶 乒乓球器材基础知识|底板|套胶|胶水|常见问题 桌面快捷图标怎么删除!!! CSS 设置的高度超出屏幕高度为什么没出现滚动条 梦到家里办丧事好不好? 电脑未响应什么原因? 怎么删除电脑桌面上的快捷方式? css 怎样设置总是显示竖滚动条 电脑经常未响应怎么办? 淘宝买家收到货不付款怎么办?催买家确认收货技巧( 在手机html页面中,子盒子设置 overflow-y:scroll 会触发body滚动_百度... 笔记本电脑怎么删除桌面图标? 怎么用css控制滚动条 只 显示右边的 不显示下边的滚动条 淘宝购物用怎样的话术催款 有关窗口滚动条的操作 overflow-y: scroll 怎么使溢出的数据生成的滚动条默认拉到最底下_百... 双11天猫客服话术有哪些? scrollto和scrollby的区别 为什么电脑老是未响应怎么办? scrolly = e.pageX - imageTop - ($(&quot;div.rawimage&quot;).height()*1&#47;scaley)&#47;2 ;不明白这句什么意思,求问 淘宝客服技巧,拍下未付款的单如何催买家付 CSS的overflow上下滚动 页面如何自动出现滚动条(overflow属性用法) 为什么电脑总是未响应啊?? 怎么样在div+css中设置一个div的框并出现滚动条 笔记本电脑如何删除桌面上的图标? 如何用css样式控制滚动条的颜色? 电脑卡无响应是什么问题 如何用css控制浏览器滚动条 如何清除电脑桌面上的图标? 昨晚梦见家里办丧事但又不知道是为谁办的? 如何判断scrollview滑动到了最顶部 电脑没有响应 怎样删除电脑桌面快捷图标 在script标签中放html代码,当滚动出现到屏幕的时候在去讲html代码取出来... 梦见有家人办丧事,我从那里经过,然后躺到床上睡觉,醒来感觉这不是自己... 电脑为什么老是未响应 css中:overflow-y默认样式可以修改吗?怎么修改 梦见家里办丧事是什么预兆? 怎样才能卸载掉电脑桌面上的快捷图标 jquery 广告,上下左右满屏移来移去,遇到窗口边缘就会相反移动(一个浮动... 梦见亲人去办丧事