Как нажать кнопку на липкой навигации после небольшой прокрутки вниз?

Я создаю веб-сайт с помощью React и сначала работаю над мобильной версией. Существует липкая панель навигации, которая прилипает к верхней части после прокрутки вниз. Прикрепляю картинку, где есть кнопка с правой стороны. Я бы хотел, чтобы эта кнопка выглядела так ПОСЛЕ прокрутки вниз. Итак, сначала кнопка находится сверху, затем, после небольшой прокрутки вниз, навигация становится липкой, а также кнопка как бы проскальзывает по навигации. Я делаю этот сайт с помощью React. Как это возможно сделать? Спасибо!

Картина:

Как нажать кнопку на липкой навигации после небольшой прокрутки вниз?

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
1 211
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете добавить javascript в свой код, чтобы это произошло.

let scroller = document.querySelector(".scroll");
document.addEventListener('scroll', scroll);
function scroll(){
scroller.style.display = 'block';
}
.scroll{
display: none;
}
<html>
<body>
<button class = "scroll">Scroller</button>
</body>
</html>

Вот ручка

window.addEventListener('scroll', function(e) {
console.info('Scroll', window.pageYOffset)

Я использую прослушиватель прокрутки Windows для определения положения прокрутки. Я сохранил кнопку регистрации вместе с навигацией. Это поведение, которое вам требуется при прокрутке после некоторого смещения. Поэтому я написал скрипт для определения положения прокрутки. Когда позиция прокрутки меньше предела, я перемещаю кнопку в заголовок, иначе она находится внутри навигации.

Ответ принят как подходящий

Вы можете добавить прослушиватель событий для прокрутки, но обязательно используйте либо componentDidMmount и componentWillUnmount, либо хук useEffect, чтобы избежать утечки памяти.

class MyComponent extends React.Component {
    constructor(props) {
        super(props);
        
        this.state = {
            showButton: false
        }
    }
    
    handleScroll(e) {
        const y = window.pageYOffset || document.documentElement.scrollTop;

        if (y > 80) {
            this.setState({showButton: true});
        } else {
            this.setState({showButton: false});
        }
    };
    
    componentDidMount() {
        window.addEventListener('scroll', this.handleScroll.bind(this));
    }
    
    componentWillUnmount() {
        window.removeEventListener('scroll', this.handleScroll.bind(this));
    }
   

    render() {
        return (
            <div className = "body">
              <div className = "fixed-header">
                <button className = {this.state.showButton ? 'show' : 'hide'}>Can you see me?</button>
              </div>
            </div>
        );
    }
}

ReactDOM.render(<MyComponent />, document.getElementById('root'));
.show {
    display: block;
}
.hide {
    display: none;
}
.body {
    height: 500px;
}
.fixed-header {
    position: fixed;
    top: 0;
    left: 0
    width: 100%;
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

<div id = "root"></div>

Другие вопросы по теме