Динамичное меню и кнопка "вверх"


При загрузке страницы меню плавно выпадает сверху, при скролле вниз так же плавно уходит вверх + появляется кнопка «Вверх».

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Веб-страница на Bootstrap</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    <style>
        body {
            font-family: Arial, sans-serif;
        }
        .menu {
            transition: top 0.3s;
        }
        .scroll-to-top {
            position: fixed;
            bottom: 20px;
            right: 20px;
            display: none;
            background: grey;
            border: none;
            border-radius: 50%;
            color: white;
            width: 50px;
            height: 50px;
            font-size: 20px;
            cursor: pointer;
        }
        footer {
            background: white;
            padding: 10px 0;
            text-align: left;
            bottom: 0;
            width: 100%;
        }
        .content {
            margin-top: 60px; /* Отступ для фиксированного меню */
        }
    </style>
</head>
<body>
<nav class="navbar navbar-expand-lg menu fixed-top bg-white">
    <a class="navbar-brand" href="#">Мой сайт</a>
    <div class="collapse navbar-collapse">
        <ul class="navbar-nav ml-auto">
            <li class="nav-item"><a class="nav-link text-muted font-weight-bold" href="#">Главная</a></li>
            <li class="nav-item"><a class="nav-link text-muted font-weight-bold" href="#">Дизайн</a></li>
            <li class="nav-item"><a class="nav-link text-muted font-weight-bold" href="#">Музыка</a></li>
            <li class="nav-item"><a class="nav-link text-muted font-weight-bold" href="#">Хобби</a></li>
        </ul>
    </div>
</nav>
<div class="content">
    <div class="container">
        <h1>Добро пожаловать</h1>
        <p><img src="https://via.placeholder.com/800x300" class="img-fluid" alt="Заглушка изображения"></p>
        <p>Это текстовый заглушка. Здесь может быть Ваш текст.</p>
        <p><img src="https://via.placeholder.com/800x300" class="img-fluid" alt="Заглушка изображения"></p>
        <p>Это текстовый заглушка. Здесь может быть Ваш текст.</p>
        <p><img src="https://via.placeholder.com/800x300" class="img-fluid" alt="Заглушка изображения"></p>
        <p>Это текстовый заглушка. Здесь может быть Ваш текст.</p>
    </div>
</div>
<button class="scroll-to-top" onclick="scrollToTop()">↑</button>
<footer>
    <div class="container">
        <p>© <span id="current-year"></span>. Все права защищены.</p>
        <p>example@example.com</p>
    </div>
</footer>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.2/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
    <script>
        let lastScrollTop = 0;
        const navbar = document.querySelector('.menu');
        const scrollToTopButton = document.querySelector('.scroll-to-top');
        let buttonVisible = false; // Флаг видимости кнопки
        window.addEventListener('scroll', function() {
            let st = window.pageYOffset || document.documentElement.scrollTop;
            if (st > lastScrollTop) {
                // Прокрутка вниз
                navbar.style.top = '-60px'; // скрыть меню
                if (!buttonVisible) {
                    scrollToTopButton.style.display = 'block'; // показать кнопку
                    buttonVisible = true;
                }
            } else {
                // Прокрутка вверх
                navbar.style.top = '0'; // показать меню
                if (buttonVisible) {
                    scrollToTopButton.style.display = 'none'; // скрыть кнопку
                    buttonVisible = false;
                }
            }
            lastScrollTop = st <= 0 ? 0 : st; // Для мобильных устройств или отрицательной прокрутки
        });
        function scrollToTop() {
            window.scrollTo({ top: 0, behavior: 'smooth' });
            buttonVisible = false; // Скрыть кнопку после прокрутки
            scrollToTopButton.style.display = 'none'; // скрыть кнопку
        }
        // Установка текущего года в футере
        document.getElementById('current-year').innerText = new Date().getFullYear();
    </script>
</body>
</html>

Оцените статью или поделитесь ей в соцсетях:

+ 0 | - 0

Рекомендуемые статьи:


Комментарии

Нет комментариев к данной статье.

Оставьте комментарий!

Поля обозначенные как * требуются обязательно. Перед постингом всегда делайте просмотр своего комментария.