Przewiń na górę strony używając JavaScript / jQuery?
Mam <button>
na stronie, gdy ten przycisk jest wciśnięty Ukryty <div>
jest wyświetlany za pomocą jQuery.
Jak przewijać do góry strony za pomocą polecenia JavaScript / jQuery w tej funkcji? Jest to pożądane, nawet jeśli pasek przewijania natychmiast wskakuje na górę. Nie szukam płynnego przewijania.
30 answers
Jeśli nie potrzebujesz zmiany do programu animate, nie musisz używać żadnych specjalnych wtyczek - użyłbym tylko natywnego okna JavaScript.metoda scrollTo -- Przejście W 0,0 spowoduje natychmiastowe przewinięcie strony do lewego górnego rogu.
window.scrollTo(x-coord, y-coord);
Parametry
- x-coord jest pikselem wzdłuż osi poziomej.
- y-coord jest pikselem wzdłuż osi pionowej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-27 15:10:52
Jeśli chcesz płynnie przewijać, spróbuj czegoś takiego:
$("a[href='#top']").click(function() {
$("html, body").animate({ scrollTop: 0 }, "slow");
return false;
});
To zajmie dowolny <a>
tag, którego href="#top"
i sprawi, że będzie płynnie przewijał się do góry.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-17 23:27:49
Spróbuj przewijać na górze
<script>
$(document).ready(function(){
$(window).scrollTop(0);
});
</script>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-01 13:00:52
Nie potrzebujesz jQuery, aby to zrobić. Standardowy znacznik HTML wystarczy...
<div id="jump_to_me">
blah blah blah
</div>
<a target="#jump_to_me">Click Here To Destroy The World!</a>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-17 18:51:12
Wszystkie te sugestie świetnie sprawdzają się w różnych sytuacjach. Dla tych, którzy znajdą tę stronę poprzez wyszukiwanie, Można również dać to spróbować. JQuery, Brak wtyczki, przewiń do elementu.
$('html, body').animate({
scrollTop: $("#elementID").offset().top
}, 2000);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-23 09:53:12
Płynne przewijanie, czysty javascript:
(function smoothscroll(){
var currentScroll = document.documentElement.scrollTop || document.body.scrollTop;
if (currentScroll > 0) {
window.requestAnimationFrame(smoothscroll);
window.scrollTo (0,currentScroll - (currentScroll/5));
}
})();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-29 10:49:04
<script>
$("a[href='#top']").click(function() {
$("html, body").animate({ scrollTop: 0 }, "slow");
return false;
});
</script>
W html
<a href="#top">go top</a>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-14 16:44:35
Jeśli chcesz zrobić płynne przewijanie, spróbuj tego:
$("a").click(function() {
$("html, body").animate({ scrollTop: 0 }, "slow");
return false;
});
Innym rozwiązaniem jest okno JavaScript.metoda scrollTo:
window.scrollTo(x-value, y-value);
Parametry:
- wartość x to piksel wzdłuż osi poziomej.
- wartość y jest pikselem wzdłuż osi pionowej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-11 10:37:41
Z window.scrollTo(0, 0);
jest bardzo szybki
więc próbowałem Mark Ursino przykład, ale w Chrome nic się nie dzieje
i znalazłem to
$('.showPeriodMsgPopup').click(function(){
//window.scrollTo(0, 0);
$('html').animate({scrollTop:0}, 'slow');//IE, FF
$('body').animate({scrollTop:0}, 'slow');//chrome, don't know if Safari works
$('.popupPeriod').fadeIn(1000, function(){
setTimeout(function(){$('.popupPeriod').fadeOut(2000);}, 3000);
});
});
Przetestowałem wszystkie 3 przeglądarki i działa
używam blueprint css
to jest, gdy klient kliknie przycisk "Zarezerwuj teraz" i nie ma wybranego okresu wynajmu, powoli przesuwa się do góry, gdzie znajdują się kalendarze i otwiera div dialogowe wskazujące na 2 pola, po 3 sekundach zanika
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-24 12:05:46
A lot z użytkownicy zalecają wybranie zarówno znaczników html, jak i body dla zgodności między przeglądarkami, tak:
$('html, body').animate({ scrollTop: 0 }, callback);
To może potknąć się jednak, jeśli liczysz na oddzwonienie działa tylko raz. W rzeczywistości będzie działać dwa razy, ponieważ wybrałeś dwa elementy.
Jeśli to dla Ciebie problem, możesz zrobić coś takiego:
function scrollToTop(callback) {
if ($('html').scrollTop()) {
$('html').animate({ scrollTop: 0 }, callback);
return;
}
$('body').animate({ scrollTop: 0 }, callback);
}
To działa w Chrome $('html').scrollTop()
zwraca 0, ale nie w innych przeglądarkach, takich jak Firefox.
Jeśli nie chcesz czekać na zakończenie animacji, jeśli pasek przewijania jest już u góry, spróbuj tego:
function scrollToTop(callback) {
if ($('html').scrollTop()) {
$('html').animate({ scrollTop: 0 }, callback);
return;
}
if ($('body').scrollTop()) {
$('body').animate({ scrollTop: 0 }, callback);
return;
}
callback();
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:59
Naprawdę dziwne: to pytanie jest aktywne od pięciu lat i nadal nie ma odpowiedzi na waniliowy JavaScript, aby animować przewijanie... więc proszę bardzo:
var scrollToTop = window.setInterval(function() {
var pos = window.pageYOffset;
if ( pos > 0 ) {
window.scrollTo( 0, pos - 20 ); // how far to scroll on each step
} else {
window.clearInterval( scrollToTop );
}
}, 16); // how fast to scroll (this equals roughly 60 fps)
Jeśli chcesz, możesz zawinąć to w funkcję i wywołać za pomocą atrybutu onclick
. Sprawdź to jsfiddle
Uwaga: Jest to bardzo podstawowe rozwiązanie, a może nie najbardziej wydajne. Bardzo rozbudowany przykład można znaleźć tutaj: https://github.com/cferdinandi/smooth-scroll
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-02 10:00:53
The old #top
can do the trick
document.location.href = "#top";
Działa dobrze w FF, IE i Chrome
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-01 02:29:07
Spróbuj tego
<script>
$(window).scrollTop(100);
</script>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-01 06:59:01
$(document).scrollTop(0);
też działa.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-31 20:53:52
<script>
$(function(){
var scroll_pos=(0);
$('html, body').animate({scrollTop:(scroll_pos)}, '2000');
});
</script>
Edit:
$('html, body').animate({scrollTop:(scroll_pos)}, 2000);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-08 06:08:50
Non - jQuery solution / pure JavaScript:
document.body.scrollTop = document.documentElement.scrollTop = 0;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-30 16:25:04
To zadziała:
window.scrollTo(0, 0);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-19 05:13:56
Wypróbuj ten kod:
$('html, body').animate({
scrollTop: $("div").offset().top
}, time);
Div => Element Dom, w którym chcesz przenieść przewijanie.
Czas = > milisekund, określ prędkość przewijania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-08 07:42:55
Dlaczego nie używasz wbudowanej funkcji jQuery scrollTop:
$('html, body').scrollTop(0);//For scrolling to top
$("body").scrollTop($("body")[0].scrollHeight);//For scrolling to bottom
Krótko i prosto!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-20 09:42:31
$(".scrolltop").click(function() {
$("html, body").animate({ scrollTop: 0 }, "slow");
return false;
});
.section{
height:400px;
}
.section1{
background-color: #333;
}
.section2{
background-color: red;
}
.section3{
background-color: yellow;
}
.section4{
background-color: green;
}
.scrolltop{
position:fixed;
right:10px;
bottom:10px;
color:#fff;
}
<html>
<head>
<title>Scroll top demo</title>
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
</head>
<body>
<div class="content-wrapper">
<div class="section section1"></div>
<div class="section section2"></div>
<div class="section section3"></div>
<div class="section section4"></div>
<a class="scrolltop">Scroll top</a>
</div>
</body>
</html>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-14 07:45:01
Nie potrzebujesz JQuery. Po prostu możesz wywołać skrypt
window.location = '#'
Po kliknięciu przycisku" Przejdź do góry"
Przykładowe demo:
PS: nie używaj tego podejścia, gdy używasz nowoczesnych bibliotek, takich jak angularjs. To może złamać hashbang URL.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-25 15:01:07
Możesz po prostu użyć celu z twojego linku, takiego jak #someid, gdzie #someid jest identyfikatorem div.
LUB możesz użyć dowolnej liczby przewijanych wtyczek, które czynią to bardziej eleganckim.
Http://plugins.jquery.com/project/ScrollTo jest przykładem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-17 18:09:20
Po prostu użyj tego skryptu do przewijania do góry bezpośrednio.
<script>
$(document).ready(function(){
$("button").click(function(){
($('body').scrollTop(0));
});
});
</script>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-27 11:31:35
Możesz spróbować użyć JS jak w tym Fiddle http://jsfiddle.net/5bNmH/1/
Dodaj przycisk "Przejdź do góry"w stopce strony:
<footer>
<hr />
<p>Just some basic footer text.</p>
<!-- Go to top Button -->
<a href="#" class="go-top">Go Top</a>
</footer>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-01 19:35:47
Jeśli nie chcesz płynnego przewijania, możesz oszukiwać i zatrzymać animację płynnego przewijania zaraz po jej uruchomieniu... tak:
$(document).ready(function() {
$("a[href='#top']").click(function() {
$("html, body").animate({ scrollTop: 0 }, "1");
$('html, body').stop(true, true);
//Anything else you want to do in the same action goes here
return false;
});
});
Nie mam pojęcia czy jest polecane/dozwolone, ale działa :)
Kiedy to użyjesz? Nie jestem pewien, ale może gdy chcesz użyć jednego kliknięcia, aby animować jedną rzecz z Jquery, ale zrobić inną bez animacji? ie otwórz panel logowania administratora na górze strony i natychmiast przejdź do góry, aby go zobaczyć.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-23 18:18:05
function scrolltop() {
var offset = 220;
var duration = 500;
jQuery(window).scroll(function() {
if (jQuery(this).scrollTop() > offset) {
jQuery('#back-to-top').fadeIn(duration);
} else {
jQuery('#back-to-top').fadeOut(duration);
}
});
jQuery('#back-to-top').click(function(event) {
event.preventDefault();
jQuery('html, body').animate({scrollTop: 0}, duration);
return false;
});
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-21 21:11:32
Żadna z powyższych odpowiedzi nie będzie działać w SharePoint 2016.
To musi być zrobione tak: https://sharepoint.stackexchange.com/questions/195870/
var w = document.getElementById("s4-workspace");
w.scrollTop = 0;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-14 12:21:15
Motywacja
To proste rozwiązanie działa natywnie i implementuje płynne przewijanie do dowolnej pozycji.
Unika używania linków zakotwiczonych (tych z #
), które, moim zdaniem, są przydatne, jeśli chcesz połączyć się z sekcją, ale nie są tak wygodne w niektórych sytuacjach, szczególnie gdy wskazują na górę, co może prowadzić do dwóch różnych adresów URL wskazujących na tę samą lokalizację (http://www.example.org oraz http://www.example.org/#).
Rozwiązanie
Umieść identyfikator do tagu, do którego chcesz przewinąć, na przykład pierwszą sekcję , która odpowiada na to pytanie, ale identyfikator może być umieszczony wszędzie na stronie.
<body>
<section id="top">
<!-- your content -->
</section>
<div id="another"><!-- more content --></div>
Następnie jako przycisk możesz użyć linku, po prostu edytuj atrybut onclick z kodem takim jak ten.
<a onclick="document.getElementById('top').scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'nearest' })">Click me</a>
Gdzie argumentem document.getElementById
jest id tagu, do którego chcesz przewijać po klik.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-09 08:57:29
Active all Browser. Powodzenia
var process;
var delay = 50; //milisecond scroll top
var scrollPixel = 20; //pixel U want to change after milisecond
//Fix Undefine pageofset when using IE 8 below;
function getPapeYOfSet() {
var yOfSet = (typeof (window.pageYOffset) === "number") ? window.pageYOffset : document.documentElement.scrollTop;
return yOfSet;
}
function backToTop() {
process = setInterval(function () {
var yOfSet = getPapeYOfSet();
if (yOfSet === 0) {
clearInterval(process);
} else {
window.scrollBy(0, -scrollPixel);
}
}, delay);
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-19 03:22:13
Spróbuj tego
<script>
$(function(){
$('a').click(function(){
var href =$(this).attr("href");
$('body, html').animate({
scrollTop: $(href).offset().top
}, 1000)
});
});
</script>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-27 22:18:06