使用 JS 创建漂亮的滚动/滑动效果
Create a nice scrolling/sliding effect with JS
我想创建一个"平滑"的滚动动画,从一个元素向下滑动到下一个元素。我不想使用Jquery或任何库,只想使用javascript和HTML。我试过:
element.scrollIntoView();
这会导致滚动,但不会产生平滑的动画。我已经看过其他一些平滑滚动技术,但它们使用 Jquery。我还想补充一点,滚动应该是从一个页面上的元素到页面上的另一个元素。仅向下滚动。也只有像function scrollFromHere(from, to)
这样的JavaScript函数。
我知道这是一个
古老的答案,但对于任何在"现代"寻找解决方案的人来说,scrollIntoView
都支持behavior
参数:
element.scrollIntoView({
behavior: 'smooth'
});
支持behavior: "smooth"
是Chrome 61,Edge 79,Firefox 36,Safari 15.4。因此,Safari 是唯一真正的支持问题,假设您想要支持的不仅仅是 Safari 的最新专业(截至 2022 年(。
没关系,我想我找到了问题的答案。它花费了很多搜索,但这里是:
<div id="elem1"><button onclick="scrollToward('elem2', 'elem1');">Scroll Down</button></div>
<div id="elem2"></div>
<script>
//Here is my script:
function animate(elem,style,unit,from,to,time,prop) {
if( !elem) return;
var start = new Date().getTime(),
timer = setInterval(function() {
var step = Math.min(1,(new Date().getTime()-start)/time);
if (prop) {
elem[style] = (from+step*(to-from))+unit;
} else {
elem.style[style] = (from+step*(to-from))+unit;
}
if( step == 1) clearInterval(timer);
},25);
elem.style[style] = from+unit;
}
function scrollToward(ele, from) {
var target = document.getElementById(ele);
from = document.getElementById(from).offsetTop;
animate(document.body, "scrollTop", "", from, target.offsetTop, 1500, true);
}
</script>
经过测试,并在您以创建滚动条的方式设置div 样式时工作。在这里找到答案。
!doctype html>
<head>
<style>
/* Prevents slides from flashing */
#slides {
display:none;
}
</style>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="jquery.slides.min.js"></script>
<script>
$(function(){
$("#slides").slidesjs({
width: 940,
height: 528
});
});
</script>
</head>
<body>
<div id="slides">
<img src="">
</div>
</body>
相关文章:
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- Myo和Node.js:从四元数滚动/俯仰/偏航
- 为什么 JS 不在滚动时调用函数
- 在向下滚动JS/HTML/CSS wordpress网站时替换徽标图像
- 使用JS滑动或滚动图像
- fullpage.js和物化.js;使用实体侧导航禁用鼠标滚动
- css/js:通过滚动固定位置
- Skrollr js没有在手机中向下滚动
- 如何在Angular JS中滚动显示元素
- fullpage.js在滚动时更改滚动方向
- JS/CSS:如何在向下滚动超过1200像素(高度)后更改z索引值
- Javascript-Nightmare.JS无限滚动操作
- Sammy.js缓存和滚动位置时,返回历史
- 如何使用鼠标滚动控制fullPage.js垂直滑块
- 平滑滚动js不滚动
- 自动滚动JS幻灯片不起作用
- JS加载顺序 - 滚动JS禁用,回调解决方案,或者更简单
- 如何使用航点无限滚动.js
- 触摸板上的双指滚动js
- 带骨干的无限滚动js