我有这个 input 元素:
然后我有一些其他元素,比如其他标签的 & 个标签等…
当用户点击 时,页面应该滚动到页面的最后一个元素,并且应该使用漂亮的动画来做到这一点(应该是滚动到底部而不是顶部)。
页面的最后一项是带有 #submit 的 submit 按钮:
动画不应该太快,应该是流畅的。
我正在运行最新的 jQuery 版本。我宁愿不安装任何插件,而是使用默认的 jQuery 功能来实现这一点。
huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!
假设您有一个 ID 为 button 的按钮,请尝试以下示例:
$("#button").click(function() {
$([document.documentElement, document.body]).animate({
scrollTop: $("#elementtoScrollToID").offset().top
}, 2000);
});
我从文章 Smoothly scroll to an element without a jQuery plugin 中获得了代码。我已经在下面的示例中对其进行了测试。
$(document).ready(function (){ $("#click").click(function (){ $('html, body').animate({ scrollTop: $("#div1").offset().top }, 2000); } ); }); 测试 测试2 点我
这并非在所有情况下都有效。请参阅stackoverflow.com/questions/2905867/…
如果您不想要动画,而是想立即跳转到元素,请使用 .scrollTop(…) 而不是 .animate({scrollTop: …}, …)。
如果您想阅读那篇文章,这里有一个有效的链接:Smoothly scroll to an element without a jQuery plugin
由于某种原因,当我使用此方法时,滚动被锁定在该位置。我无法在其他任何地方滚动。
HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com
jQuery .scrollTo(): View - Demo, API, Source
我编写了这个轻量级插件来使页面/元素滚动更容易。它很灵活,您可以传入目标元素或指定值。也许这可能是 jQuery 下一个正式版本的一部分,你怎么看?
示例用法:
$('body').scrollTo('#target'); // Scroll screen to target element
$('body').scrollTo(500); // Scroll screen 500 pixels down
$('#scrollable').scrollTo(100); // Scroll individual element 100 pixels down
选项:
scrollTarget:指示所需滚动位置的元素、字符串或数字。
offsetTop:定义滚动目标上方额外间距的数字。
持续时间:确定动画将运行多长时间的字符串或数字。
easing:一个字符串,指示用于过渡的缓动函数。
完成:动画完成后调用的函数。
$('body') 在 FF 中不起作用,所以尝试了 $('html, body') 。
如果有人需要这个脚本源,那么在这里你可以得到它flesler.com/jquery/scrollTo/js/jquery.scrollTo-min.js
HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com
如果您对平滑滚动效果不太感兴趣,而只是对滚动到特定元素感兴趣,那么您不需要一些 jQuery 函数。 Javascript 已经涵盖了您的情况:
https://developer.mozilla.org/en-US/docs/Web/API/element.scrollIntoView
因此,您需要做的就是:$(“selector”).get(0).scrollIntoView();
使用 .get(0) 是因为我们想要检索 JavaScript 的 DOM 元素而不是 JQuery 的 DOM 元素。
您也可以使用 $(selector)[0] 吗?
RobW,是的,您可以只使用 [0],但 get(0) 可以保护您免受未定义或负索引的影响。查看来源:james.padolsey.com/jquery/#v=1.10.2&fn=jQuery.fn.get
如果您根本不想使用 jQuery,只需使用 document.getElementById('#elementID').scrollIntoView()。仅仅为了选择一个元素然后将其转换为常规 JavaScript 就加载约 100k 的库是没有用的。
@Gavin 我确定您的意思是:document.getElementById('elementID').scrollIntoView()
能够定义偏移量会很好...... stackoverflow.com/q/24665602/1066234
huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。
锁定。目前正在解决此答案的内容存在争议。它目前不接受新的交互。
这在没有 jQuery 的情况下是可以实现的:
document.getElementById("element-id").scrollIntoView();
huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。
请停止编辑您的问题以引入不相关的闲聊。数以百万计的答案答案仍在“多年后”为他们的作者提供代表。我们不需要调用它,它不会为问题或网站增加任何价值。
保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com
使用这个简单的脚本
if($(window.location.hash).length > 0){
$('html, body').animate({ scrollTop: $(window.location.hash).offset().top}, 1000);
}
如果在 url 中找到散列标签,则可以将 scrollTo 动画到 ID。如果未找到哈希标记,则忽略该脚本。
huntsbot.com聚合了超过10+全球外包任务平台的外包需求,寻找外包任务与机会变的简单与高效。
jQuery(document).ready(function($) { $(‘a[href^=“#”]’).bind(‘click.smoothscroll’,function (e) { e.preventDefault(); var target = this .hash, $target = $(target); $(‘html, body’).stop().animate( { ‘scrollTop’: $target.offset().top-40 }, 900, ‘swing’, 函数() { window.location.hash = 目标; } ); } ); } ); 第 1 节 第2节 第3节 < div id=“pane1”>
为了使其更通用并删除不必要的标签放置到浏览器链接窗口中,我只是调整了以下代码:jQuery(document).ready(function($) { $(document).on( "click", 'a[href^="#"]', function( e ) { e.preventDefault(); var target = this.hash, $target = $(target); $('html, body').stop().animate({ scrollTop: $target.offset().top - 100}, 1000); }); });
huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。
我就是这样做的。
document.querySelector('scrollHere').scrollIntoView({ behavior: 'smooth' })
适用于任何浏览器。
它可以很容易地包装成一个函数
function scrollTo(selector) {
document.querySelector(selector).scrollIntoView({ behavior: 'smooth' })
}
这是一个工作示例
$(“.btn”).click(function() { document.getElementById(“scrollHere”).scrollIntoView( {behavior: “smooth” }) }) .btn {margin-bottom: 500px;} .middle {display:堵塞;边距底部:500px;颜色:红色;} 滚动down 你看到了吗? 到达目的地
Docs
很短很甜。需要注意的一件事-我认为这只会将其滚动到视图中(可能位于视口的底部),而不是像设置 scrollTop 那样将其滚动到视口的顶部。
我也使用了这个解决方案,但至少 Chrome 版本 92 出于某种原因默认禁用了平滑滚动,所以这个解决方案不再起作用(截至撰写本文时)。实际上相当令人失望。仍然可以通过为 chrome://flags/#smooth-scrolling 配置选择“已启用”(而不是“默认”)来手动启用它。
保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com
史蒂夫和彼得的解决方案效果很好。
但在某些情况下,您可能必须将值转换为整数。奇怪的是, ( " . . . " ) . o f f s e t ( ) . t o p 的返回值有时在 f l o a t 中。使用: p a r s e I n t ( ("...").offset().top 的返回值有时在 float 中。 使用:parseInt( ("...").offset().top的返回值有时在float中。使用:parseInt((“…”).offset().top)
例如:
$("#button").click(function() {
$('html, body').animate({
scrollTop: parseInt($("#elementtoScrollToID").offset().top)
}, 2000);
});
huntsbot.com – 高效赚钱,自由工作
“动画”解决方案的紧凑版本。
$.fn.scrollTo = function (speed) {
if (typeof(speed) === 'undefined')
speed = 1000;
$('html, body').animate({
scrollTop: parseInt($(this).offset().top)
}, speed);
};
基本用法:$(‘#your_element’).scrollTo();
huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求
使用 this solution,您不需要任何插件,并且除了将脚本放置在结束 标记之前,无需设置。
$("a[href^='#']").on("click", function(e) {
$("html, body").animate({
scrollTop: $($(this).attr("href")).offset().top
}, 1000);
return false;
});
if ($(window.location.hash).length > 1) {
$("html, body").animate({
scrollTop: $(window.location.hash).offset().top
}, 1000);
}
在加载时,如果地址中有哈希,我们滚动到它。
并且 - 每当您点击带有 href 散列的 a 链接(例如 #top)时,我们都会滚动到它。
##编辑 2020
如果你想要一个纯 JavaScript 解决方案:你也许可以改用类似的东西:
var _scrollToElement = function (selector) {
try {
document.querySelector(selector).scrollIntoView({ behavior: 'smooth' });
} catch (e) {
console.warn(e);
}
}
var _scrollToHashesInHrefs = function () {
document.querySelectorAll("a[href^='#']").forEach(function (el) {
el.addEventListener('click', function (e) {
_scrollToElement(el.getAttribute('href'));
return false;
})
})
if (window.location.hash) {
_scrollToElement(window.location.hash);
}
}
_scrollToHashesInHrefs();
保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com
如果您只处理滚动到输入元素,则可以使用 focus()。例如,如果您想滚动到第一个可见输入:
$(':input:visible').first().focus();
或者类 .error 的容器中的第一个可见输入:
$('.error :input:visible').first().focus();
感谢Tricia Ball指出这一点!
原文链接:https://www.huntsbot.com/qa/ZvE9/scroll-to-an-element-with-jquery?lang=zh_CN&from=csdn
huntsbot.com – 高效赚钱,自由工作