@michael_tsaruk

Как сделать кнопку наверх?

Доброго времени суток, подскажите пожалуйста как сделать кнопку вверх которая доходит к верху футера и прилипает, а когда скролл происходить в обратную сторону то отлипает, и пристает к низу экрана. Заранее благодарен!
  • Вопрос задан
  • 1530 просмотров
Решения вопроса 1
ri_gilfanov
@ri_gilfanov
Web- and desktop-developer
Допустим, страница поделена на три блока: header, main и footer.

Тогда, кнопка "наверх" должна быть последним элементом внутри main.

<header>
    <p>Хедер</p>
</header>
<main>
    <p>Пример контента</p>
    <a id="page_up_down_button" href="#">Наверх</a>
</main>
<footer>
    <p>Футер</p>
</footer>


В CSS, кнопке можно прописать:
#page_up_down_button {
    position: sticky;
    bottom: 0;
}

Ну и соответствующие стили, чтобы имитировать кнопку.

Пример скрипта с использованием JQuery, чтобы кнопка могла возвращать не только наверх, но и на место откуда ею воспользовались:
<script type="text/javascript">
    var scroll_position = null;

    $('#page_up_down_button').click(function(){
        if ($(document).scrollTop() > 0) {
            scroll_position = $(document).scrollTop();
            $('#page_up_down_button').html('Обратно');
            return true;
        } else if (scroll_position > $(document).scrollTop()) {
            $(document).scrollTop(scroll_position);
            $('#page_up_down_button').html('Наверх');
            return false;
        };
    });

    function check_status_button(){
        if ($(document).scrollTop() > 0) {
            scroll_position = null;
            $('#page_up_down_button').html('Наверх');
        };
    };

    $(window).resize(function() {
        check_status_button();
    });

    $(window).scroll(function() {
        check_status_button();
    });
</script>

Скрипт лучше размещать ниже кнопки.

Для работы кнопки, естественно нужно подключить JQuery до скрипта, а лучше в head страницы.

Например, так:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SummerWeb Ярославль
от 120 000 до 180 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
02 июн. 2024, в 01:13
2000 руб./за проект
01 июн. 2024, в 23:49
50000 руб./за проект
01 июн. 2024, в 23:20
30000 руб./за проект