Разное

Css menu: Меню для сайта html и css горизонтальное — 11 вариантов меню

08.07.2023

Содержание

Navigation Bar CSS уроки для начинающих академия

❮ Назад Дальше ❯


Демонстрация: панели навигации

Вертикальной

  • Home
  • News
  • Contact
  • About

Горизонтальной

  • Home
  • News
  • Contact
  • About

  • Home
  • News
  • Contact
  • About

Панели навигации

Наличие простой в использовании навигации важно для любого веб-сайта.

С помощью CSS можно преобразовать скучные HTML-меню в хорошо выглядящие навигационные панели.


Панель навигации = список ссылок

Панель навигации требует стандартного HTML-кода в качестве базового.

В наших примерах мы будем строить панель навигации из стандартного HTML списка.

Панель навигации в основном представляет собой список ссылок, поэтому использование элементов <ul> и <li> имеет смысл:

Пример

<ul>
  <li><a href=»default.php»>Home</a></li>
  <li><a href=»news. php»>News</a></li>
  <li><a href=»contact.php»>Contact</a></li>
  <li><a href=»about.php»>About</a></li>
</ul>

Теперь давайте удалим маркеры и поля и отступы из списка:

Пример

ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
}

Пример объяснил:

  • list-style-type: none;-Удаляет пули. Панели навигации не нужны маркеры списка
  • Установите margin: 0; и padding: 0;
    , чтобы удалить настройки браузера по умолчанию

Код в приведенном выше примере является стандартным кодом, используемым как в вертикальных, так и в горизонтальных навигационных панелях.



Вертикальная панель навигации

Чтобы построить вертикальную панель навигации, в дополнение к приведенному выше коду можно присвоить элементы <a> внутри списка.

Пример

li a {
    display: block;
    width: 60px;
}

Пример объяснил:

  • display: block; — Отображение ссылки в виде блока элементов делает всю ссылку области клики (не только текст), и это позволяет нам указать ширину (и обивка, маржа, высота и т.
    д., если вы хотите)
  • width: 60px; — Элементы блока занимают всю ширину, доступную по умолчанию. Мы хотим указать ширину 60 пикселей

Можно также задать ширину <ul> и удалить ширину <a>, так как они будут занимать всю ширину, доступную при отображении в виде элементов блока. Это приведет к тому же результату, что и в предыдущем примере:

Пример

ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
    width: 60px;
}

li a {
    display: block;
}


Примеры вертикальной панели навигации

Создайте основную вертикальную панель навигации с серым цветом фона и измените цвет фона ссылок, когда пользователь наводит на них указатель мыши:

  • Home
  • News
  • Contact
  • About

Пример

ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
    width: 200px;
    background-color: #f1f1f1;
}

li a {
    display: block;
    color: #000;
    padding: 8px 16px;
    text-decoration: none;
}

/* Change the link color on hover */
li a:hover {
    background-color: #555;
    color: white;
}

Активная/Текущая ссылка навигации

Добавьте «активный» класс к текущей ссылке, чтобы пользователь знал, на какой странице он находится:

  • Home
  • News
  • Contact
  • About

Пример

. active {
    background-color: #4CAF50;
    color: white;
}

Центрировать ссылки и добавить границы

Добавьте text-align:center в <li> или <a> для центрирования связей.

Добавьте свойство border в <ul> добавьте границу вокруг навигационной области. Если требуется также, чтобы границы внутри навигационной области, добавьте border-bottom для всех элементов <li>, за исключением последнего:

  • Home
  • News
  • Contact
  • About

Пример

ul {
    border: 1px solid #555;
}

li {
    text-align: center;
    border-bottom: 1px solid #555;
}

li:last-child {
    border-bottom: none;
}

Полная высота фиксированной вертикальной навигации

Создание полной высоты, «липкой» боковой навигации:

Пример

ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
    width: 25%;
    background-color: #f1f1f1;
    height: 100%; /* Full height */
    position: fixed; /* Make it stick, even on scroll */
    overflow: auto; /* Enable scrolling if the sidenav has too much content */
}

Примечание: Этот пример может работать неправильно на мобильных устройствах.


Горизонтальная панель навигации

Существует два способа создания горизонтальной панели навигации. Использование встроен ные или плавающ ие элементы списка.

Встроенные элементы списка

Один из способов построения горизонтальной панели навигации — это указать элементы <li> как встроенные, в дополнение к «стандартному» коду выше:

Пример

li {
    display: inline;
}

Пример объяснил:

  • display: inline;-По умолчанию элементы <li> являются блок-элементами. Здесь мы удаляем разрывы строк до и после каждого элемента списка, чтобы отобразить их на одной строке

Плавающие элементы списка

Другим способом создания горизонтальной панели навигации является размещение элементов <li> и указание макета для навигационных ссылок:

Пример

li {
    float: left;
}

a {
    display: block;
    padding: 8px;
    background-color: #dddddd;
}

Пример объяснил:

  • float: left; — Используйте float, чтобы получить элементы блока, чтобы скользить рядом друг с другом
  • display: block; — ОтоБражение ссылки в виде блока элементов делает всю ссылку области клики (не только текст), и это позволяет нам указать обивка (и высота, ширина, поля и т.
    д., если вы хотите)
  • padding: 8px; — Поскольку элементы блока занимают всю имеющуюся ширину, они не могут плавать рядом друг с другом. Таким образом, указать некоторые обивка, чтобы сделать их хорошо выглядеть
  • background-color: #dddddd; — Добавить серый фон-цвет для каждого элемента

Совет: Добавьте цвет фона в <ul> вместо каждого элемента <a>, если требуется цвет фона с полной шириной:

Пример

ul {
    background-color: #dddddd;
}


Примеры горизонтальной панели навигации

Создайте основную горизонтальную панель навигации с темным цветом фона и измените цвет фона ссылок, когда пользователь наводит на них указатель мыши:

  • Home
  • News
  • Contact
  • About

Пример

ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
    overflow: hidden;
    background-color: #333;
}

li {
    float: left;
}

li a {
    display: block;
    color: white;
    text-align: center;
    padding: 14px 16px;
    text-decoration: none;
}

/* Change the link color to #111 (black) on hover */
li a:hover {
    background-color: #111;
}

Активная/Текущая ссылка навигации

Добавьте «активный» класс к текущей ссылке, чтобы пользователь знал, на какой странице он находится:

  • Home
  • News
  • Contact
  • About

Пример

. active {
    background-color: #4CAF50;
}

Выравнивание ссылок по правому краю

Выравнивание ссылок по правому краю путем плавающих элементов списка вправо (float:right;):

  • Home
  • News
  • Contact
  • About

Пример

<ul>
  <li><a href=»#home»>Home</a></li>
  <li><a href=»#news»>News</a></li>
  <li><a href=»#contact»>Contact</a></li>
  <li><a class=»active» href=»#about»>About</a></li>

</ul>

Разделители границ

Добавьте свойство border-right в < li > для создания разделителей ссылок:

  • Home
  • News
  • Contact
  • About

Пример

/* Add a gray right border to all list items, except the last item (last-child) */
li {
    border-right: 1px solid #bbb;
}

li:last-child {
    border-right: none;
}

Фиксированная панель навигации

Убедитесь, что панель навигации находится в верхней или нижней части страницы, даже если пользователь прокручивает страницу:

Fixed Top

ul {
    position: fixed;
    top: 0;
    width: 100%;
}

Фиксированное дно

ul {
    position: fixed;
    bottom: 0;
    width: 100%;
}

Примечание: Фиксированное положение может не работать должным образом на мобильных устройствах.

Серая горизонтальная навигационная

Пример серой горизонтальной панели навигации с тонкой серой границей:

  • Home
  • News
  • Contact
  • About

Пример

ul {
    border: 1px solid #e7e7e7;
    background-color: #f3f3f3;
}

li a {
    color: #666;
}

Липкий навигационной

Используйте position: sticky; для <li> для создания липкой навигационной навигации.

Липкий элемент переключается между относительным и фиксированным, в зависимости от положения прокрутки. Он позиционируется относительно до тех пор, пока в видовом экране не будет выполнено положение смещения, после чего оно «вставляется» (например, положение: фиксированное).

Пример

ul {
    position: -webkit-sticky; /* Safari */
    position: sticky;
    top: 0;
}

Примечание: Internet Explorer, EDGE 15 и более ранние версии не поддерживают липкое позиционирование. Safari требует a-WebKit-префикс (см. пример выше). Вы также должны указать по крайней мере один из top , right , bottom или left для липкого позиционирования для работы.


Другие примеры

Отзывчивый topnav

Как использовать CSS Media запросы для создания адаптивной верхней навигации.

Отзывчивый сиденав

Использование запросов CSS Media для создания адаптивной боковой навигации.

Раскрывающийся список навигации

Как добавить раскрывающееся меню внутри панели навигации.

❮ Назад Дальше ❯

CSS меню для начинающих / Хабр

Данное руководство поможет Вам создать CSS меню для вашего сайта, оно не будет обычным, оно будет привлекать внимание пользователей, не сомневайтесь. И так приступим…

Фон для меню

Для начала создадим background, я конечно не мастер PhotoShop’a, но вот что у меня получилось за пару минут:


Графические кнопочки

Создаем изображения которые у нас будут использовать как ссылки в меню. Для этого воспользуемся PhotoShop’ом:

  • Создаем новый файл размером этак 144x58px. (размер ссылки для первого элемента в меню)
  • Наполняем графическим содержимым сей пункт меню (у меня это лишь надпись выполненная забавным шрифтом):
  • Далее увеличим размер полотна в два раза
  • И дорисуем внешний вид элемента меню для реализации события hover

    Как сия конструкция будет работать? Да очень просто — ссылке мы явно указываем размер 144x58px, а но событие mouseover перемещаем фоновое изображение вверх:
  • Создадим новый файл с произвольным размером и текстом — это будет наша подсказка к ссылке
  • Повторим все предыдущие пункты для создания всех пунктов меню, в результате анаших манипуляций у нас должен получиться вот такой набор изображений:
     
 

 

HTML код

Закончили строить из себя дизайнеров, пора начинать кодить — создадим не нумерованный список — <ul>:

  • элементу <ul> присвоеим id=«menu»
  • каждой ссылке <a> присвоим уникальное имя класса
  • Внутрь тэга <a> закинем пустой тэг <span> (понадобиться для реализации подсказок к ссылкам)

<ul id=«menu»>
<li><a href=»#» class=«home»>Home <span></span></a></li>
<li><a href=»#» class=«about»>About <span></span></a></li>
<li><a href=»#» class=«rss»>RSS <span></span></a></li>
</ul>
 

CSS код

 
 #menu 
 Для начала убираем padding и margin у меню, list-style выставляем в none, position указываем как relative. Указываем высоту и ширину меню (см. размеры menu-bg.jpg). Добавляем фоновое изображение.
 

 #menu {
list-style: none;
padding: 0;
margin: 0;
width: 774px;
height: 210px;
background: url(images/menu-bg.jpg) no-repeat;
position: relative;
}
 
 #menu span 

 Для элементов span параметр display выставляем в none (по умолчанию не будут отображаться). Так же выставляем position как absolute.

#menu span {
display: none;
position: absolute;
}
 
 #menu a 

 Для ссылок нам необходимо спрятать текст, для этого параметру text-indent присваиваем негативное значение (-900%), и текст будет скрыт.
 

 #menu a {
display: block;
text-indent: -900%;
position: absolute;
outline: none;
}
 
 #menu a:hover 

 Теперь мы хотим сдвинуть картинку на линке по событию mouseover, для этого добавим в CSS следующий код:
 

 #menu a:hover {
background-position: left bottom;
}
 
 #menu a:hover span 

 Так же по событию mouseover необходимо отобразить подсказку

#menu a:hover span {
display: block;
}
 
 #menu . home

Теперь нам необходимо правильно расставить элементы меню. Для начала укажем размер элемента и фоновое изображение, а затем займемся позиционированием, будем изменять параметры left и top пока не почувствуем морального удовлетворения от внешнего вида меню:
 

 #menu .home {
width: 144px;
height: 58px;
background: url(images/home.gif) no-repeat;
left: 96px;
top: 96px;
}
 
 #menu .home span 

 Теперь проведем подобную операцию для всплывающей подсказки
 

 #menu .home span {
width: 86px;
height: 14px;
background: url(images/home-over.gif) no-repeat;
left: 28px;
top: -20px;
}
 
 #menu .about 

 Копируем всё что мы сделали для элемента .home и переименовываем в .about. Подгоняем размер и расположение, так же заменяем фон.
 

#menu .about {
width: 131px;
height: 51px;
background: url(images/about.gif) no-repeat;
left: 338px;
top: 97px;
}
#menu .about span {
width: 40px;
height: 12px;
background: url(images/about-over.gif) no-repeat;
left: 44px;
top: 54px;
}
 
 #menu .rss 

Повторим для .rss

#menu .rss {
width: 112px;
height: 47px;
background: url(images/rss.gif) no-repeat;
left: 588px;
top: 94px;
}
#menu .rss span {
width: 92px;
height: 20px;
background: url(images/rss-over.gif) no-repeat;
left: 26px;
top: -20px;
}
 
Всё в одном

#menu {
list-style: none;
padding: 0;
margin: 0;
width: 774px;
height: 210px;
background: url(images/menu-bg. jpg) no-repeat;
position: relative;
}
#menu span {
display: none;
position: absolute;
}
#menu a {
display: block;
text-indent: -900%;
position: absolute;
outline: none;
}
#menu a:hover {
background-position: left bottom;
}
#menu a:hover span {
display: block;
}
 
 #menu .home {
width: 144px;
height: 58px;
background: url(images/home.gif) no-repeat;
left: 96px;
top: 73px;
}
#menu .home span {
width: 86px;
height: 14px;
background: url(images/home-over.gif) no-repeat;
left: 28px;
top: -20px;
}
 
 #menu .about {
width: 131px;
height: 51px;
background: url(images/about.gif) no-repeat;
left: 338px;
top: 97px;
}
#menu . about span {
width: 40px;
height: 12px;
background: url(images/about-over.gif) no-repeat;
left: 44px;
top: 54px;
}
 
 #menu .rss {
width: 112px;
height: 47px;
background: url(images/rss.gif) no-repeat;
left: 588px;
top: 94px;
}
#menu .rss span {
width: 92px;
height: 20px;
background: url(images/rss-over.gif) no-repeat;
left: 26px;
top: -20px;
}

Это всё, протестировать меню можете тут, а скачать пример тут.

Вольный перевод: http://www.webdesignerwall.com/tutorials/advanced-css-menu/

Кросспост: CSS меню в стиле Web 2.0

Меню — Pure

Вертикальное меню

Меню по умолчанию вертикальные. Минимальные стили по умолчанию и селекторы с низкой специфичностью упрощают их настройку. По умолчанию пункты меню занимают 100% ширины своего контейнера, поэтому вы можете ограничить ширину меню или установить для меню display:inline-block.

 <стиль>
    .пользовательская-ограниченная-ширина {
        /* Чтобы ограничить ширину меню содержимым меню: */
        отображение: встроенный блок;
        /* Или задайте ширину явно: */
        /* ширина: 10em; */
    }

<дел>
    Сайты Yahoo
    <ул>
        
  • Flickr
  • Мессенджер
  • Спорт
  • Финансы
  • Другие сайты
  • Игры
  • Новости
  • Боже мой!
  • Горизонтальное меню

    Чтобы создать горизонтальное меню, добавьте имя класса pure-menu-horizontal .

     <дел>
        БРЕНД
        <ул>
            
  • Новости
  • Спорт
  • Финансы
  • Выбранные и отключенные элементы

    Пометить выбранный элемент списка, добавив класс pure-menu-selected к элементу списка. Чтобы пометить ссылку как отключенную, добавьте в элемент списка имя класса pure-menu-disabled . Отключенные элементы выглядят блеклыми и не наследуют стили наведения.

     <дел>
        <ул>
            
  • Выбрано
  • Обычный
  • Отключено
  • Раскрывающиеся списки

    Мы рекомендуем включать подменю через JavaScript, чтобы обеспечить доступность. Чтобы помочь вам начать, пример сценария, написанный на vanilla JS, обеспечивает поддержку ARIA, ограниченную навигацию по подменю с помощью клавиш со стрелками и возможность закрывать меню с помощью внешнего события или клавиши ESC. Но вы можете пойти дальше, добавив обнаружение границ, комплексную навигацию с помощью клавиш со стрелками и полифиллы для совместимости со старыми браузерами.

    Даже при наличии JavaScript вы все равно можете отображать подменю при наведении. Просто добавьте pure-menu-allow-hover к элементу списка pure-menu-has-children . Это может быть удобно для пользователей настольных компьютеров и предоставляет запасной вариант для пользователей без JavaScript.

     <дел>
        <ул>
            
  • Главная
  • Контакт <ул>
  • Электронная почта
  • Твиттер
  • Блог Tumblr
  • Вертикальное меню с подменю

    Та же конструкция, которая используется для создания раскрывающихся списков, работает и в вертикальных меню. Вы можете вкладывать подменю, но имейте в виду, что сложные меню могут создавать проблемы с удобством использования на маленьких экранах.

     <дел>
        <ул>
            
  • Flickr
  • Мессенджер
  • Спорт
  • Финансы
  • Еще <ул>
  • Автомобили
  • Flickr
  • Ещё больше <ул>
  • Фу
  • Панель
  • Баз
  • Горизонтальное меню с возможностью прокрутки

    Чтобы создать горизонтальное меню с возможностью прокрутки, добавьте имя класса pure-menu-scrollable . Когда места недостаточно, пункты меню можно прокручивать или щелкать. Выпадающие меню не поддерживаются. Если вам нужна прокрутка на основе импульса, мы рекомендуем использовать библиотеку JS, например, scrollbooster, чтобы добавить такие эффекты.

     <дел>
        Яху
        <ул>
            
  • Главная
  • Flickr
  • Мессенджер
  • Спорт
  • Финансы
  • Автомобили
  • Красота
  • Фильмы
  • Малый бизнес
  • Крикет
  • Технология
  • Мир
  • Новости
  • Поддержка
  • Прокручиваемое вертикальное меню

    Чтобы создать прокручиваемое вертикальное меню, ограничьте высоту вашего меню, а затем добавьте имя класса pure-menu-scrollable . Элементы меню можно прокручивать или щелкать. Подменю не поддерживаются.

     <стиль>
        /* Настройка для ограничения высоты меню */
        .Пользовательские ограничения {
            высота: 160 пикселей;
            ширина: 150 пикселей;
            граница: 1px сплошной серый;
            радиус границы: 4px;
        }
    
    <дел>
        Яху
        <ул>
            
  • Главная
  • Flickr
  • Мессенджер
  • Спорт
  • Финансы
  • Автомобили
  • Красота
  • Фильмы
  • Малый бизнес
  • Крикет
  • Технология
  • Мир
  • Новости
  • Поддержка
  • Адаптивные меню, которые скрывают

    Ознакомьтесь с примерами макетов, чтобы узнать, как можно использовать Pure в качестве основы для более сложных меню, таких как:

    • Отзывчивое вертикальное меню, которое сворачивается за гамбургером, похожее на меню на этом веб-сайте Pure.
    • Отзывчивое меню с горизонтальной прокруткой, которое скрывается на маленьких экранах.
    • Отзывчивое горизонтально-вертикальное меню, которое выскальзывает из поля зрения.
     <ул>
        
  • Адаптивное вертикальное меню, которое сворачивается за гамбургером, аналогично меню на этом веб-сайте Pure.
  • Адаптивное меню с горизонтальной прокруткой, которое скрывается на маленьких экранах.
  • Адаптивное горизонтально-вертикальное меню, которое выскальзывает из поля зрения.
  • Bulma: бесплатная современная CSS-инфраструктура с открытым исходным кодом на основе Flexbox

    .

    Меню

    Простое меню , для любого типа вертикальной навигации

    Меню Bulma представляет собой компонент вертикальной навигации, который включает в себя:

    • меню контейнер
    • информативные метки меню метки
    • интерактивный список меню списков, которые могут быть вложены до 2 уровней

    Пример

    HTML

     <в сторону>
      <р>
        Общий
      

    <ул>
  • Панель управления
  • Клиенты
  • <р> Администрация

    <ул>
  • Настройки команды
  • Управляйте своей командой <ул>
  • Члены
  • Плагины
  • Добавить участника
  • Приглашения
  • Настройки среды облачного хранилища
  • Аутентификация
  • <р> Транзакции

    <ул>
  • Платежи
  • Переводы
  • Баланс
  • Переменные #

    Имя

    Тип

    Значение

    Вычисляемое значение

    Вычисляемый тип

     $menu-item-color 

    переменная

     hsl(0 , 0%, 29%) 

    цвет

     $menu-item- радиус 

    переменная

     $radius-small 

    size

     $menu-item-hover-color 

    переменная

     $text-strong 
     hsl(0, 0%, 21 %) 

    цвет

     $ пункт меню при наведении на цвет фона 

    переменная

     $background 
     hsl(0, 0%, 96%) 

    цвет

     $menu-item-active-color 

    переменная

     $link-invert 9000 7 

    цвет

     $элемент меню -active-background-color 

    переменная

     hsl(229, 53%, 53%) 

    цвет

     $menu-list-border-left 

    размер

     1px сплошная $border 
     $меню-список- line-height 

    безразмерный

     $menu-list-link-padding 

    размер

     0.