添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
< / style > < / head > -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - ↓ 结构 ↓ -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - < ul id = "outer" > < li id = "insider" > 1111111111111111 2222222222222222 3333333333333333 4444444444444444 5555555555555555 6666666666666666 < button onclick = "set()" > set < / button > -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ↓ js ↓ -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - const outEle = document . getElementById ( 'outer' ) ; const insideEle = document . getElementById ( 'insider' ) ; //onscroll事件的处理函数 outEle . onscroll = function readScrollTop ( ) { console . log ( 'scrollTop:' , outEle . scrollTop ) ; // 可以清楚的看到滚动的距离

如何设置滚动

scrollTop属性

scrollTop就是指 “元素中的内容” 超出 “元素上边界” 的那部分的高度。
直接给父元素的scrollTop赋值:

function set() {
    outEle.scrollTop = 100;

这种方法比较直接, 但是因为是直接设置的dom元素的js属性 而不是css属性, 所以想通过这种方法设置过渡动画是没有效果的(transition: all 1s linear; 无效)

补充: 有时会出现设置scrollTop无效 一直为0的情况, 出现这种现象的原因之一就是内容已经到底了, 在滑滑不上去了…

scrollTo方法

scrollTo()方法可以使界面滚动到给定元素的指定坐标位置。
有两种用法:

方法一: element.scrollTo(x-coord, y-coord)

  • x-coord 是期望滚动到位置水平轴上距元素左上角的像素。
  • y-coord 是期望滚动到位置竖直轴上距元素左上角的像素。

方法二: element.scrollTo(options)

  • options是一个对象:
    1. left (number类型)
    2. top(number类型)
    3. behavior: ‘smooth’ (平滑过渡效果)

scrollTo()的两种方式我们都试试:

function set() {
	// 方式一:
    outEle.scrollTo(0, 100)
	// 方式二:
	outEle.scrollTo({top: 100, behavior: 'smooth'})

最后, 大家会发现 都产生了效果, 但是方式一没有过度效果, 方式二产生了过度效果, 所以如果对过渡动画有要求的话, 推荐使用第二种方式~!
当然, 需要注意的是: options这种对象的写法 有兼容性方便的限制:在这里插入图片描述
好了, 今天就和大家分享到这里~!

scrollTo ScrollTo是一个模块,它将以动画移动方式滚动页面上的指定元素位置。 它利用了本机方法来确保动画流畅。 请注意,存在一些具有动画功能的本机滚动方法,包括 , 和 。 如果这些本机方法满足您的需求,我们建议使用它们以支持此模块。 您可以查看scrollTo的演示。 ScrollTo是一个ES6模块。 因此,您需要一个ES6编译器( 是一个不错的工具)作为Javascript工作流程的一部分。 如果您已经在项目中使用NPM,则可以使用以下命令安装scrollTo: $ npm install @degjs/scroll-to import scrollTo from "@degjs/scroll-to" ; /* Scroll to an element with a 1-second, eased-in animation */ element.scrollTo首先需要注意的是调用scrollTo方法的是出现滚动的父元素,即高度固定overflo:scroll的那个元素。 1.滚动到的位置确定: const parent = document.querySelector(`.parent`) //scrollTo可以直接传入滚动的X,Y值,也可以传入一个对象 //直接传值 parent.scrollTo(0,100) //传入对象的方式,这种方式可以控制滚动的速度 parent.scrollTo({ top: 100 , 这里有一个方法可以将DIV的滚动滚动到其子元素所在的位置,方便自动定位。 代码如下: var container = $(‘div’), scrollTo = $(‘#row_8’); container.scrollTop( scrollTo.offset().top – container.offset().top + container.scrollTop() ); // Or you can animate the scrolling: container.animate({ scrollTop: scrollTo.offset().top – container.offset() 首先说明: 由于scrollTop属于js属性,因此无法通过css的transition和animation制作scrollTop变化时的过渡动画(本人亲自尝试过,确实如其他博友所说的无效) 因此,需要(自己实现也可以)在项目中引入一些工具类帮助实现功能,我选择了jquery,用法如下: let Slog = document.querySelector(".Slog"); $("ht... scrollTo有两种语法: 1.scrollTo(x,y) //指定滚动到x轴和y轴的位置 2.scrollTo(options) //options有三个参数,(left,top,behavior ), top 等同于 y-coord left 等同于 x-coord behavior 类型String,表示滚动行为,支持参数 smooth(平滑滚动),instant(瞬间滚动),... const scrollToTop = () => { const t = document.documentElement.scrollTop || document.body.scrollTop if (t > 0) { window.requestAnimationFrame(scrollToTop) window.scrollTo(0, t - t / 8) co... behavior 类型String,表示滚动行为,支持参数 smooth(平滑滚动),instant(瞬间滚动),默认值auto(等同于instant)我一开始考虑使用动画,后来一想如果使用动画滚动时间就固定了,就会造成滚动忽快忽慢的情况。项目有页面右下角有个返回按钮,点击则滚动到顶部。这里希望平滑滚动到顶部,故而使用smooth参数。所以有没有办法让页面平滑滚动到顶部呢?left 等同于 x-coord。top 等同于 y-coord。 VueScrollTo是一个基于Vue的平滑滚动插件,实现网页中元素点击后平滑滚动到目标位置的效果。在很多情况下,我们需要在网页中使用锚点链接,但是默认的锚点跳转方式可能会出现跳动或者瞬间跳转的情况,使用VueScrollTo可以避免这些问题。接下来将从以下几个方面详细介绍VueScrollTo使用方法。 4.返回顶部的动画不能采用$(doucument).animate()因为只有元素能添加动画,只能采用$('body,html').animate({scrollTop0})2.页面滚动事件$(window).scroll(function(){})3.元素的淡入和淡出采用fadeIn()和fadeOut()方法。1.得到元素距离页面顶部的距离采用scrollTop()方法。最后需要实现点击返回顶部返回到刚开始的状态。...