Как я могу сделать панель меню с фиксированным положением?

Я хотел бы оформить строку меню как ЭТО. Он фиксируется в верхней части сайта при прокрутке вниз и не фиксируется там, где он находится при загрузке страницы.

Как это можно сделать с помощью CSS?


person cyrfandli    schedule 17.12.2013    source источник
comment
пожалуйста, добавьте код или ссылку jsfiddle   -  person vishnu    schedule 17.12.2013
comment
возможный дубликат Создание липкой навигации css и jquery   -  person SW4    schedule 17.12.2013
comment
FWIW, связанный сайт больше не использует этот стиль строки меню. Вот почему Вишну предложил добавить код в этот пост.   -  person Dan Lowe    schedule 26.08.2017


Ответы (2)


То, что вам нужно, это «липкая навигационная панель/меню».

Самый простой способ - добавить приведенный ниже CSS в меню/навигационную панель.

position:fixed;
top:0px;

Тем не менее, для эффекта, более близкого к тому, который вы опубликовали, вы, вероятно, захотите взглянуть на использование jQuery, например:

$(window).bind('scroll', function() {
     if ($(window).scrollTop() > 50) {
         $('.menu').addClass('fixed');
     }
     else {
         $('.menu').removeClass('fixed');
     }
});

Что это делает, так это «фиксирует» строку меню в верхней части страницы, когда вы прокручиваете определенную точку (например, 50 пикселей), добавляя класс CSS «fixed» к элементу .menu, фиксированный класс будет просто, например. CSS выше.

Есть несколько хороших примеров, перечисленных здесь.

person SW4    schedule 17.12.2013

Источник: Создание липкой навигации css и jquery

HTML

<div id="menu">
    <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">Blog</a></li>
        <li><a href="#">Shop</a></li>
        <li><a href="#">Contact</a></li>
    </ul>
</div>
<div id="content">
This is some content 0<br/>
This is some content 1<br/>
This is some content 2<br/>
This is some content 3<br/>
This is some content 4<br/>
This is some content 5<br/>
This is some content 6<br/>
This is some content 7<br/>
This is some content 8<br/>
<div id="data" />
</div>

CSS

* {
    font-family: Consolas,Sans-serif;
    font-size: 10pt;
}
#menu {
    position: absolute;
    width: 100%;
}
#menu.out {
    position: fixed;
}
#menu ul {
    margin: 0;
    padding: 1em .5em;
    list-style: none;
    background-color: #fc9;
}
#menu ul li {
    display: inline-block;
}
#menu ul li a {
    padding: 5px .5em;
}
#content {
    background-color: #ebebee;           
    padding: 4em 1em 1em;
    height: 900px;
}

JQuery:

    var menu = $("#menu");
var ul = menu.find("ul");
var content = $("#content")[0];
var data = $("#data");
var menuHeight = menu[0].getBoundingClientRect().bottom;
var inView= true;

$(document).scroll(function(evt) {
    evt.preventDefault();
    var top = content.getBoundingClientRect().top;
    var nextInView = top+menuHeight > 0;

    if (inView ^ nextInView)
    {
        data.append("<div>Switching.</div>")
        inView = nextInView;
        if (inView)
        {
            menu.removeClass("out");
        }
        else
        {
            menu.addClass("out");
            ul.hide().slideDown("fast");
        }
    }
});

Fiddle: Демо

Предоставлено: Роберт Коритник

Надеюсь это поможет

Счастливого кодирования

person Amarnath Balasubramanian    schedule 17.12.2013