Я пишу модальное всплывающее окно, и мне нужно, чтобы браузер переходил в верхнюю часть экрана при нажатии кнопки открытия модального окна. Есть ли способ прокрутить браузер вверх с помощью jQuery?
Ответы:
Вы можете установить scrollTop
, например:
$('html,body').scrollTop(0);
Или, если вам нужна небольшая анимация вместо привязки к началу:
$('html, body').animate({ scrollTop: 0 }, 'fast');
html
и body
теги. в противном случае используйте $(window)
вместо этого.
scroll
входит в стандарт CSSOM, тогда как scrollTo
изначально был определен на уровне DOM 0 и не является частью какого-либо стандарта. Однако CSSOM включает в себя scrollTo
для обратной совместимости.
scroll
пользуется широкой поддержкой. См stackoverflow.com/q/1925671/41906
window && window.scroll(0,0);
это приемлемо в моей модели представления.
Если вы используете диалоговое окно пользовательского интерфейса jQuery, вы можете просто стилизовать модальное окно так, чтобы оно отображалось с фиксированной позицией в окне, чтобы оно не выскакивало из поля зрения, устраняя необходимость прокрутки. В противном случае,
var scrollTop = function() {
window.scrollTo(0, 0);
};
должен сделать свое дело.
Вы могли бы сделать это без javascript и просто использовать теги привязки? Тогда он будет доступен этим js бесплатно.
хотя, поскольку вы используете модальные окна, я предполагаю, что вас не волнует, что вы свободны от js. ;)
// When the user scrolls down 20px from the top of the document, show the button
window.onscroll = function() {scrollFunction()};
function scrollFunction() {
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
document.getElementById("myBtn").style.display = "block";
} else {
document.getElementById("myBtn").style.display = "none";
}
}
// When the user clicks on the button, scroll to the top of the document
function topFunction() {
$('html, body').animate({scrollTop:0}, 'slow');
}
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 20px;
}
#myBtn {
display: none;
position: fixed;
bottom: 20px;
right: 30px;
z-index: 99;
font-size: 18px;
border: none;
outline: none;
background-color: red;
color: white;
cursor: pointer;
padding: 15px;
border-radius: 4px;
}
#myBtn:hover {
background-color: #555;
}
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<button onclick="topFunction()" id="myBtn" title="Go to top">Top</button>
<div style="background-color:black;color:white;padding:30px">Scroll Down</div>
<div style="background-color:lightgrey;padding:30px 30px 2500px">This example demonstrates how to create a "scroll to top" button that becomes visible when the user starts to scroll the page.</div>
Я знаю, что это старый, но для тех, у кого проблемы в Edge:
Обычный JS: window.scrollTop=0;
К сожалению, scroll()
и scrollTo()
выкидывают ошибки в Edge.