Горизонтальное меню для сайта на HTML+CSS готовые шаблоны | Как создать красивое горизонтальное выпадающее меню с примером
Доброго времени суток, дорогие читатели. Сегодня мы разберем тему «как сделать горизонтальное меню используя HTML и CSS». Меню, как правило, находится в шапке сайта и является перечнем ссылок на самые важные страницы, его также называют главным меню. Данные ссылки пользователи будут постоянно нажимать. То, как вы их расположите и какой дизайн вы зададите меню будет влиять на поведение пользователей, конверсию, их общее впечатление от вашего сайта и, конечно, на seo-продвижение.
HTML-код для горизонтального меню
Когда-то давно главное меню для сайта делали на картинках, таблицах, флэше и возможно на чем-то еще, но в наше время существует самый популярный и он же правильный метод создания меню используя теги «списка».
Для создания меню используют теги <ul>, <li> и <a>.
Если вам не совсем понятно, что такое эти html-теги, css, таблицы, то почитайте об основных технологиях для создания сайта.
Пример использования html тегов для создания меню в коде ниже:
<ul> <li><a href="#">Главная</a></li> <li><a href="#">Услуги</a></li> <li><a href="#">Цены</a></li> <li><a href="#">Контакты</a></li> </ul>
Стандартные CSS стили для горизонтального меню
ul { list-style: none; /*убираем маркеры списка*/ margin: 0; /*убираем отступы*/ padding-left: 0; /*убираем отступы*/ } a { text-decoration: none; /*убираем подчеркивание текста ссылок*/ } li { float:left; /*Размещаем список горизонтально для реализации меню*/ margin-right:5px; /*Добавляем отступ у пунктов меню*/ }
Мы получаем готовое верхнее меню в шапку, без каких-либо особых стилей и наворотов это можно назвать каркасом вашего будущего красивого меню. Если вы скопируете и поставите у себя данный html и css это будет выглядеть следующим образом.
Пример каркаса (шаблона) вашего будущего меню
Получилось все достаточно простенько, вы ,конечно же, хотите сразу красивое главное меню, но без понимания основ у вас просто не получится создать хорошее меню без ошибок в html и css.
Существует так же несколько других CSS методов используемых для того чтобы сделать меню горизонтальным помимо float:left;, например, display:inline-block; или display:flex;, но рекомендуется использовать способ описанный выше.
Давайте же наполним наш шаблон меню различными стилями и сделаем его красивым.
Примеры красивого горизонтального меню для сайта
Сейчас я приведу несколько готовых примеров с готовым дизайном горизонтального меню.
Все «красивости» вы можете создать для своего сайта сами, а не искать в интернете. Проще всего это сделать взяв за основу один из примеров ниже
Простое меню синего цвета с раздельными пунктами
CSS стили «верхнего» меню
Ниже расположены стили данного меню. HTML остается тем же, что и в «каркасе» меню.
ul { list-style: none; /*убираем маркеры списка*/ margin: 0; /*убираем отступы*/ padding-left: 0; /*убираем отступы*/ margin-top:25px; /*делаем отступ сверху*/ } a { text-decoration: none; /*убираем подчеркивание текста ссылок*/ background:#30A8E6; /*добавляем фон к пункту меню*/ color:#fff; /*меняем цвет ссылок*/ padding:10px; /*добавляем отступ*/ font-family: arial; /*меняем шрифт*/ border-radius:4px; /*добавляем скругление*/ -moz-transition: all 0.3s 0.01s ease; /*делаем плавный переход*/ -o-transition: all 0.3s 0.01s ease; -webkit-transition: all 0.3s 0.01s ease; } a:hover { background:#1C85BB;/*добавляем эффект при наведении*/ } li { float:left; /*Размещаем список горизонтально для реализации меню*/ margin-right:5px; /*Добавляем отступ у пунктов меню*/ }
Главное меню, расположенное на цветной линии с красным фоном
CSS стили меню на цветной линии
ul { list-style: none; /*убираем маркеры списка*/ margin: 0; /*убираем отступы*/ padding-left: 0; /*убираем отступы*/ margin-top:25px; /*делаем отступ сверху*/ background:#FF4444; /*добавляем фон всему меню (заменив этот параметр, вы поменяете цвет всего меню)*/ height: 50px; /*задаем высоту*/ } a { text-decoration: none; /*убираем подчеркивание текста ссылок*/ background:#FF4444; /*добавляем фон к пункту меню (заменив этот параметр, вы поменяете цвет всех пунктов меню)*/ color:#fff; /*меняем цвет ссылок*/ padding:0px 15px; /*добавляем отступ*/ font-family: arial; /*меняем шрифт*/ line-height:50px; /*ровняем меню по вертикали*/ display: block; border-right: 1px solid #F36262; /*добавляем бордюр справа*/ -moz-transition: all 0.3s 0.01s ease; /*делаем плавный переход*/ -o-transition: all 0.3s 0.01s ease; -webkit-transition: all 0.3s 0.01s ease; } a:hover { background:#D43737;/*добавляем эффект при наведении*/ } li { float:left; /*Размещаем список горизонтально для реализации меню*/ }
Выпадающее меню на HTML+CSS
Для реализации дополнительного выпадающего (раскрывающегося) меню на сайте у какого-либо пункта меню нам необходимо добавить дополнительный перечень пунктов в HTML-код для какой-либо ссылки из горизонтального меню и изменить стили CSS. В стилях мы будем применять простой трюк — изменение отображения раскрывающегося меню по средствам наведения на нужный нам пункт в верхнем меню. Для примера возьмем пункт «услуги».
Пример создания простого выпадающего меню
HTML код выпадающего меню
<ul> <li><a href="#">Главная</a></li> <li><a href="#">Услуги</a> <ul> <li><a href="#">Услуга 1</a></li> <li><a href="#">Длинная услуга 2</a></li> <li><a href="#">Услуга 3</a></li> </ul> </li> <li><a href="#">Цены</a></li> <li><a href="#">Контакты</a></li> </ul>
Стили CSS выпадающего меню
ul { list-style: none; /*убираем маркеры списка*/ margin: 0; /*убираем отступы*/ padding-left: 0; /*убираем отступы*/ margin-top:25px; /*делаем отступ сверху*/ background:#819A32; /*добавляем фон всему меню*/ height: 50px; /*задаем высоту*/ } a { text-decoration: none; /*убираем подчеркивание текста ссылок*/ background:#819A32; /*добавляем фон к пункту меню*/ color:#fff; /*меняем цвет ссылок*/ padding:0px 15px; /*добавляем отступ*/ font-family: arial; /*меняем шрифт*/ line-height:50px; /*ровняем меню по вертикали*/ display: block; border-right: 1px solid #677B27; /*добавляем бордюр справа*/ -moz-transition: all 0.3s 0.01s ease; /*делаем плавный переход*/ -o-transition: all 0.3s 0.01s ease; -webkit-transition: all 0.3s 0.01s ease; } a:hover { background:#D43737;/*добавляем эффект при наведении*/ } li { float:left; /*Размещаем список горизонтально для реализации меню*/ position:relative; /*задаем позицию для позиционирования*/ } /*Стили для скрытого выпадающего меню*/ li > ul { position:absolute; top:25px; display:none; } /*Делаем скрытую часть видимой*/ li:hover > ul { display:block; width:250px; /*Задаем ширину выпадающего меню*/ } li:hover > ul > li { float:none; /*Убираем горизонтальное позиционирование*/ }
А чтобы понять, какие именно у вас должны быть услуги и категории рекомендую ознакомиться с материалом: составление структуры и семантического ядра.
Я постарался максимально кратко рассказать вам о том как создать главное горизонтальное меню, сделать несколько шаблонов, как добавить к нему простые стили и сделать его симпатичнее, как сделать выпадающее меню для вашего сайта. Для удобства я собрал все меню, представленные выше, в одном html-файле, который вы можете скачать ниже. Выглядит это как на скриншоте:
Поделитесь в одной из социальных сетей и скачивание сразу же будет доступно.
Благодарю за внимание.
Создание меню с помощью CSS и HTML
Если ваш веб-сайт не ограничивается одной веб-страницей, то стоит подумать о добавлении панели навигации (меню). Меню — раздел веб-сайта, предназначенный помогать посетителю перемещаться по сайту. Любое меню представляет собой список ссылок, ведущих на внутренние страницы сайта. Самым простым способом добавить панель навигации на сайт является создание меню с помощью CSS и HTML.
Вертикальное меню
Первым шагом создания вертикального меню будет создание маркированного списка. Также нам нужно будет иметь возможность идентифицировать список, поэтому мы добавим к нему атрибут id с идентификатором «navbar». Каждый элемент <li> нашего списка будет содержать по одной ссылке:
<ul> <li><a href="#">Главная</a></li> <li><a href="#">Новости</a></li> <li><a href="#">Контакты</a></li> <li><a href="#">О нас</a></li> </ul>
Наша следующая задача заключается в сбросе стилей списка, установленных по умолчанию. Нам нужно убрать внешние и внутренние отступы у самого списка и маркеры у пунктов списка. Затем зададим нужную ширину:
#navbar { margin: 0; padding: 0; list-style-type: none; width: 100px; }
Теперь пришло время стилизовать сами ссылки. Мы добавим к ним фоновый цвет, изменим параметры текста: цвет, размер и насыщенность шрифта, уберем подчеркивание, добавим небольшие отступы и переопределим отображение элемента <a> со строчного на блочный. Дополнительно были добавлены левая и нижняя рамки к пунктам списка.
Самой важной частью наших изменений является переопределение строчных элементов на блочные. Теперь наши ссылки занимают все доступное пространство пунктов списка, то есть для перехода по ссылке нам больше не нужно наводить курсор точно на текст.
#navbar a { background-color: #949494; color: #fff; padding: 5px; text-decoration: none; font-weight: bold; border-left: 5px solid #33ADFF; display: block; } #navbar li { border-left: 10px solid #666; border-bottom: 1px solid #666; }
Мы объединили весь код, описанный выше, в один пример, теперь, нажав на кнопку попробовать, вы можете перейти на страницу с примером и увидеть результат:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Название документа</title> <style> #navbar { margin: 0; padding: 0; list-style-type: none; width: 100px; } #navbar li { border-left: 10px solid #666; border-bottom: 1px solid #666; } #navbar a { background-color: #949494; color: #fff; padding: 5px; text-decoration: none; font-weight: bold; border-left: 5px solid #33ADFF; display: block; } </style> </head> <body> <ul> <li><a href="#">Главная</a></li> <li><a href="#">Новости</a></li> <li><a href="#">Контакты</a></li> <li><a href="#">О нас</a></li> </ul> </body> </html>Попробовать »
При наведении курсора мыши на пункт меню его внешний вид может изменяться, привлекая к себе внимание пользователя. Создать такой эффект можно с помощью псевдо-класса :hover.
Вернемся к рассмотренному ранее примеру вертикального меню и добавим в таблицу стилей следующее правило:
#navbar a:hover { background-color: #666; border-left: 5px solid #3333FF; }Попробовать »
Горизонтальное меню
В предыдущем примере мы рассмотрели вертикальную панель навигации, которую чаще всего можно встретить на сайтах слева или справа от области с основным контентом. Однако меню с навигационными ссылками также часто располагается и по горизонтали в верхней части веб-страницы.
Горизонтальное меню можно создать путем стилизации обычного списка. Свойству display для элементов <li> нужно присвоить значение inline, чтобы пункты списка располагались друг за другом.
Для размещения пунктов меню по горизонтали, сначала создадим маркированный список с ссылками:
<ul> <li><a href="#">Главная</a></li> <li><a href="#">Новости</a></li> <li><a href="#">Контакты</a></li> <li><a href="#">О нас</a></li> </ul>
Напишем для нашего списка пару правил, сбрасывающих стиль используемый для списков по умолчанию, и переопределим пункты списка с блочных на строчные:
#navbar { margin: 0; padding: 0; list-style-type: none; } #navbar li { display: inline; }Попробовать »
Теперь нам осталось лишь определить стилевое оформление для нашего горизонтального меню:
#navbar { margin: 0; padding: 0; list-style-type: none; border: 2px solid #0066FF; border-radius: 20px 5px; width: 550px; text-align: center; background-color: #33ADFF; } #navbar a { color: #fff; padding: 5px 10px; text-decoration: none; font-weight: bold; display: inline-block; width: 100px; } #navbar a:hover { border-radius: 20px 5px; background-color: #0066FF; }Попробовать »
Выпадающее меню
Меню, которое мы будем создавать, будет иметь основные навигационные ссылки, расположенные в горизонтальной панели навигации, и подпункты, которые будут отображаться только после наведения курсора мыши на тот пункт меню, к которому эти подпункты относятся.
Сначала нам нужно создать HTML-структуру нашего меню. Основные навигационные ссылки мы поместим в маркированный список:
<ul> <li><a href="#">Главная</a></li> <li><a href="#">Новости</a></li> <li><a href="#">Контакты</a></li> <li><a href="#">О нас</a></li> </ul>
Подпункты мы разместим в отдельном списке, вложив его в элемент <li>, который содержит родительскую ссылку относительно подпунктов. Теперь мы имеем четкую структуру нашей будущей панели навигации:
<ul> <li><a href="#">Главная</a></li> <li><a href="#">Новости</a></li> <li><a href="#">Контакты</a> <ul> <li><a href="#">Адрес</a></li> <li><a href="#">Телефон</a></li> <li><a href="#">Email</a></li> </ul> </li> <li><a href="#">О нас</a></li> </ul>Попробовать »
Теперь приступим к написанию CSS кода. Для начала необходимо скрыть список с подпунктами с помощью объявления display: none;, чтобы они не отображались на веб-странице все время. Для отображения подпунктов нам нужно чтобы при наведении на элемент <li> список снова был преобразован в блочный элемент:
#navbar ul { display: none; } #navbar li:hover ul { display: block; }
Убираем у обоих списков отступы и маркеры, установленные по умолчанию. Элементы списка с навигационными ссылками делаем плавающими, формируя горизонтальное меню, но для элементов списка, содержащих подпункты задаем float: none;, чтобы они отображались друг под другом.
#navbar, #navbar ul { margin: 0; padding: 0; list-style-type: none; } #navbar li { float: left; } #navbar ul li { float: none; }
Затем нам нужно сделать так, чтобы наше выпадающее подменю не смещало контент, расположенный под панелью навигации, вниз. Для этого мы зададим пунктам списка position: relative;, а списку, содержащему подпункты position: absolute; и добавим свойство top со значением 100%, чтобы абсолютно позиционированное подменю отображалось точно под ссылкой.
#navbar ul { display: none; position: absolute; top: 100%; } #navbar li { float: left; position: relative; } #navbar { height: 30px; }Попробовать »
Высота для родительского списка была добавлена специально, так как браузеры не учитывают в качестве содержимого элемента плавающий контент, то без добавления высоты наш список будет проигнорирован браузером и контент, следующий за списком, будет обтекать наше меню.
Теперь нам осталось стилизовать оба наших списка и выпадающее меню будет готово:
#navbar ul { display: none; background-color: #f90; position: absolute; top: 100%; } #navbar li:hover ul { display: block; } #navbar, #navbar ul { margin: 0; padding: 0; list-style-type: none; } #navbar { height: 30px; background-color: #666; padding-left: 25px; min-width: 470px; } #navbar li { float: left; position: relative; height: 100%; } #navbar li a { display: block; padding: 6px; width: 100px; color: #fff; text-decoration: none; text-align: center; } #navbar ul li { float: none; } #navbar li:hover { background-color: #f90; } #navbar ul li:hover { background-color: #666; }Попробовать »
Создание горизонтального меню в CSS
3178 Посещений
Откройте HTML-документ и добавьте в него блок <div> с простым нумерованным списком с тем отличием, что одному из пунктов нужно присвоить id:
<div> <ul> <li><a href=»#»>Пункт 1</a></li> <li><a href=»#»>Пункт 2</a></li> <li><a href=»#»>Пункт 3</a></li> <li><a href=»#»>Пункт 4</a></li> <li><a href=»#»>Пункт 5</a></li> </ul> </div> |
Обратите внимание на то, что решетка (#) ー URL-адрес ссылки. Следующая задача ー сделать так, чтобы пункты меню располагались не один над другим, а рядом. Для этого нужно создать правило CSS:
#menu ul li { display: inline; } |
Теперь создадим горизонтальную линию на странице, на которой, собственно, и будут располагаться наши пункты меню. Кроме того, необходимо настроить такой параметр как расстояние от края страницы:
#menu ul { border-bottom:2px solid #000000; margin-left:0; padding:4px 0; } |
Создадим “прямоугольники”, в которых будут располагаться пункты меню и зададим внутреннее расстояние:
#menu ul li a { text-decoration:none; margin-left:3px; border:1px solid #000000; padding: 3px 4px; border-bottom:0; background:#CEDEFF; } |
Настройте то, как будут отображаться пункты меню, на которые посетитель сайта уже заходил:
#menu ul li a:link { color:#493; } #menu ul li a:visited { color:#647; } #menu ul li a:hover { color:#000; background:#6699FF; border-color:#227 } |
Укажите вид пункта текущей страницы и сохраните изменения:
#menu ul li a#nowopen { background:#fff; border-bottom: 1px solid #fff; } |
Если вы хотите выровнять меню по центру, добавьте в правило CSS следующее:
#menu { margin:0 25% 0 25%; } |
Меню в браузере:
Как сделать навигационное меню — учебник CSS
Навигация присутствует на любом хорошем сайте, даже если он одностраничный. В зависимости от ситуации, навигационные ссылки могут вести на различные разделы сайта либо отправлять к закладке (якорю), расположенной на текущей странице. Грамотное составление навигации, в которой не запутается пользователь, требует определенных знаний и опыта. К дизайну навигационной панели также нужно подходить с умом, и в этом уроке мы расскажем вам, как создать удобное навигационное меню.
Создание навигации
Что такое навигация? Это набор ссылок, зачастую упорядоченных и сгруппированных по смыслу. Навигационное меню часто создается с использованием HTML-тега списка <ul>
, где в каждом пункте <li>
содержится одна ссылка <a>
. В HTML5 для навигации ввели отдельный тег <nav>
, куда можно просто помещать теги ссылок. После создания HTML-каркаса можно переходить к его стилизации с помощью CSS, где вы можете определять, каким будет ваше меню — вертикальным, горизонтальным, выпадающим и т. п.
Допустим, у нас есть простая навигация с пятью ссылками, созданная в HTML на основе маркированного списка:
<ul> <li><a href="#">Home</a></li> <li><a href="#">About</a></li> <li><a href="#">Gallery</a></li> <li><a href="#">News</a></li> <li><a href="#">Contacts</a></li> </ul>
Изначально, без стилей наша навигация выглядит, как обычный список:
Чтобы сделать этот элемент более похожим на навигационную панель, необходимо проделать несколько обязательных шагов. Во-первых, возле пунктов меню не нужны маркеры, а во-вторых, стандартные значения margin
и padding
, заданные браузером для списка, могут мешать, поэтому мы обнуляем их. В итоге получается следующее:
.menu { list-style-type: none; margin: 0; padding: 0; }
По сути, идентичные действия по отношению к спискам делает файл сброса стилей Reset.css, поэтому, если вы используете его на вашем сайте, то код выше можно не записывать.
После обнуления стандартных стилей списка можно приступать непосредственно к созданию стилей для навигации. Мы покажем, как делать вертикальные и горизонтальные панели.
Вертикальное меню
Создание вертикальной навигационной панели считается более легким занятием, нежели создание горизонтального меню. Главным образом потому, что нет необходимости задавать горизонтальное расположение ссылок. Это просто вертикальный список страниц сайта. И всё же некоторые важные стили применить придется.
Блочные ссылки
Прежде всего нужно сделать все теги <a>
блочными элементами:
.menu a { display: block; }
Существует несколько причин для этого:
- Вы сможете задавать отступы для ссылок.
Блочный элемент занимает всю ширину контейнера, тогда как ширина строчного элемента зависит от его содержимого. Из-за этого могут появиться проблемы, если вы, например, решите установить для ссылок фоновый цвет:
GIFСтрочные ссылки могут быть разной длины, что негативно отразится на внешнем виде.
- Исходя из второго пункта, можно отметить еще один положительный момент. Когда ссылка является блочным элементом, область ее кликабельности расширяется: даже если кликнуть по месту, где нет текста, она все равно сработает. Это удобно, потому что не надо прицеливаться по маленькой ссылке. А с помощью вертикальных отступов
padding
можно увеличить область кликабельности еще и по высоте.
Ширина меню
Следующее, что нам понадобится сделать — это задать ширину меню. Если у вас заранее не была определена ширина навигационной панели, и она не находится в контейнере, который ограничивает ее, то меню будет растянуто на всю ширину окна (как в нашем примере выше) — ведь блочный элемент по умолчанию ведет себя именно так. Вы можете задать необходимую ширину для элемента .menu
, например:
.menu { width: 300px; }
Вместо этого можно установить ширину для пунктов <li>
либо для ссылок <a>
— визуально эффект может быть одинаковый, но учтите, что в таком случае ширина элемента .menu
всё равно останется 100%.
Разделение пунктов
Чтобы визуально разделить пункты меню, можно задать каждому из них нижнюю или верхнюю границу. В зависимости от того, какую из них вы используете, у вас будет не хватать границы сверху или снизу меню. Это можно исправить, добавив еще одну границу к самому блоку .menu
:
.menu a { border-top: 1px solid blue; } .menu { border-bottom: 1px solid blue; }
Высота пунктов и вертикальное выравнивание
Сейчас ссылки меню выглядят слишком низкими, расположенными близко друг к другу. Если текст каждой ссылки не будет занимать более одной строки, то увеличить их высоту и сохранить при этом текст вертикально по центру можно с помощью свойств height
и line-height
:
.menu a { height: 30px; line-height: 30px; }
GIF
Как видно на анимации, свойство height
влияет на высоту ссылки, а межстрочный интервал line-height
изменяет уже высоту самой текстовой строки. Обязательно задавайте одинаковые значения для этих двух свойств, если хотите, чтобы текст ссылки был вертикально отцентрирован.
Горизонтальное меню
Основная задача при создании горизонтальной навигации — расположить пункты меню в один ряд. Это можно сделать несколькими способами.
Способ первый
Первый вариант — задать пунктам списка свойство display
со значением inline
либо inline-block
:
.menu li { display: inline; }
При этом теги <a>
внутри <li>
нельзя делать блочными, иначе пункты перестанут выстраиваться горизонтально и снова встанут в вертикальную позицию. Ссылкам можно также задать значение inline
или inline-block
. Выберите второе, если вы собираетесь в дальнейшем создавать отступы для ссылок.
После этого можно заняться оформлением ссылок. Например, можно сделать такой стиль:
.menu a { text-decoration: none; font-family: sans-serif; color: #5757a0; display: inline-block; padding: 10px 20px; background-color: lavender; border-bottom: 5px solid #5757a0; }
Мы добавили фоновый цвет и нижнюю границу для каждой ссылки, а также увеличили ее размеры при помощи внутренних отступов padding
. Заметьте, что между пунктами меню есть небольшие промежутки, хоть мы и не добавляли их через стили. Они возникают, потому что браузер так воспринимает символ возврата каретки между закрывающим и открывающим тегами <li>
. Эти промежутки можно убрать, записав HTML-код списка в одной строке:
<ul> <li><a href="#">Home</a></li><li><a href="#">About</a></li><li><a href="#">Gallery</a></li> ... </ul>
Однако это неудобно, ведь эти изменения придется вносить в HTML вручную, да и чтение кода затрудняется. Поэтому попробовать избавиться от промежутков можно с помощью отрицательного значения margin-right
:
.menu li { margin-right: -5px; }
Этот код не убирает промежутки, а прикрывает их за счет сдвига элементов на пять пикселей влево. Данный способ нельзя назвать очень надежным, потому что размер промежутка может варьироваться в зависимости от других стилей.
Если промежутки между пунктами не запланированы в вашем дизайне, лучше воспользоваться вторым методом горизонтального выстраивания элементов.
Способ второй
Возможно, вы уже догадались, что второй вариант создания горизонтального меню заключается в использовании свойства float
. Для этого добавьте стиль для тегов <li>
:
.menu li { float: left; }
Как видим, промежутков между пунктами уже нет. Все остальные стили работают, как и прежде. Но если вы добавите после навигации другой HTML-элемент (допустим, <h2>
), то на него повлияет обтекание и он встанет в один ряд с пунктами меню. Отменить это действие можно, добавив заголовку свойство clear: left
. Но при разработке сайта с большим количеством разных страниц может стать сложно следить за тем, нигде ли вы не забыли указать данное свойство. Гораздо легче отменить обтекание со стороны навигации. В этом поможет такая запись:
.menu { overflow: hidden; }
Это также поможет вернуть нормальную высоту родителя плавающих элементов. Мы уже говорили об этой проблеме в предыдущих уроках, но тогда мы решали ее через специальный хак с использованием псевдоэлемента :after
. Пример выше — это еще один способ решить вопрос с исчезнувшей высотой контейнера.
GIF
Примечание: если вы установите фон для элемента .menu
, то вы не увидите его до тех пор, пока не примените к нему overflow: hidden
. Логично, ведь как можно увидеть фон элемента, чья высота равна нулю?
В следующем уроке мы более детально расскажем о возможностях селекторов атрибутов, с помощью которых можно задавать стили ссылкам в зависимости от атрибутов и их значений.
Простое горизонтальное меню на CSS
.main-menu {
list-style: none;
margin: 0;
padding: 0;
margin-top: 30px;
font-family: ‘Montserrat’, sans-serif;
/* Для выравнивания меню по центру
display: flex;
flex-wrap: wrap;
justify-content: center;
*/
}
.main-menu > li {
display: inline-flex;
}
.main-menu > li + li {
margin-left: 20px;
}
.main-menu > li > a {
padding: 0 0 20px 0;
position: relative;
text-transform: uppercase;
color: #000;
font-weight: bold;
letter-spacing: 0.2px;
font-size: 15px;
text-decoration: none;
}
.main-menu > li > a:hover {
text-decoration: none;
color: #337AB7;
}
.main-menu > li > a:after {
width: 0;
height: 3px;
background-color: #337AB7;
content: »;
left: 0;
bottom: 10px;
position: absolute;
transition: all .3s;
}
.main-menu > li > a:hover::after {
width: 100%;
}
.main-menu > li.active a:after {
width: 100%;
}
.main-menu li {
margin: 0;
white-space: nowrap;
}
.main-menu li.menu-children {
position: relative;
margin-right: 12px;
}
.main-menu li.menu-children:after {
position: absolute;
content: «\2039»;
color: #337AB7;
font-size: 20px;
font-weight: bold;
right: -12px;
top: -2px;
transform: rotate(-90deg);
}
.main-menu li li.menu-children:after {
position: absolute;
content: «\2039»;
color: #FFF;
font-size: 20px;
font-weight: bold;
right: 10px;
top: 12px;
transform: rotate(180deg);
}
.main-menu li.menu-children:hover > ul {
opacity: 1;
visibility: visible;
transform: translateY(0);
}
.main-menu ul {
padding: 10px 0;
margin: 0;
list-style: none;
background-color: #337AB7;
position: absolute;
z-index: 20;
min-width: 220px;
top: 100%;
left: -30px;
opacity: 0;
visibility: hidden;
transform: translateY(5px);
transition: all 200ms cubic-bezier(0.43, 0.59, 0.16, 1.25);
}
.main-menu ul li {
display: block;
padding: 0 10px;
line-height: 1.1;
}
.main-menu ul li:last-child {
margin-bottom: 0;
}
.main-menu ul li a {
display: block;
color: #fff;
padding: 10px;
transition: all .3s;
text-decoration: none;
}
.main-menu ul li a:hover {
color: #337AB7;
background: #FFF;
text-decoration: none;
}
.main-menu ul ul {
top: 0;
left: 100%;
}
Создание меню на CSS – руководство для новичков
Просторы всемирной сети стремительно растут, размещая огромное множество различных веб-сайтов, каждый из которых стремится привлечь внимание посетителей и заинтересовать их.
Способы покорения людских сердец выбираются разные — от применения Flash анимации, использования баннеров и смелых дизайнерских решений до различных звуковых и визуальных эффектов.
Однако не стоит забывать, что сайт — это в первую очередь источник информации, поэтому удобству представления контента на сайте веб-разработчик должен уделять особое внимание и именно поэтому навигация, понятная посетителю на интуитивном уровне, так важна.
Меню является самой распространённой системой навигации на сайте, которую можно сравнить с оглавлением в книге. Меню должно быть заметно на любой странице ресурса, позволяя пользователю мгновенно перейти на интересующий раздел.
На объёмных сайтах, содержащих более 50 страниц, невозможно разместить полное меню для доступа ко всем разделам.
В таком случае следует использовать выпадающее меню на CSS, при клике на которое появляются дополнительные ссылки на подразделы.
Разновидности меню в CSS
Существует сразу несколько видов и типов CSS меню:
- Главное меню. Это список определённых ссылок на ключевые разделы веб-сайта.
- Дополнительное меню. Такое меню имеет иерархическую структуру и бывает трёх типов:
- Выпадающее меню. Раскрывается при наведении курсора мыши на пункт;
- Всплывающее меню сайта. Раскрывается при клике на определённом пункте;
- Статическое дополнительное меню для CSS. Древовидная структура, представленная в уже раскрытом виде.
Как создать меню в CSS?
Приведём пример создания простого горизонтального и вертикального меню на CSS с пояснениями.
Код горизонтального меню прописывается следующим образом:
<head> <title>Горизонтальное меню сайта</title> <style type="text/css"> .navigation { list-style: none; /* Отключение отображения маркеров. */ } .navigation li { float: left; /* Выстраивание элементов списка в один ряд. */ margin-right: 1px; /* создание отступов для того, чтобы не сливались пункты меню. */ font-family: Verdana, Arial, Helvetica, sans-serif; /* Указание типа шрифта. */ font-size: 14px; /* Размер текста в ссылках. */ } .navigation li a { display: block; /* Изменение отображения на блочное для того чтобы иметь возможность задать внутренние отступы. */ padding: 15px 20px; /* Внутри блочные отступы. */ background: #0db5b5; /* Цвет блоков меню. */ color: #3f3f3f; /* Цвет текста в блоках меню. */ text-decoration: none; /* Устранение подчёркивания ссылок. */ position: relative; /* Это необходимо при использовании Internet Explorer 6 для того, чтобы ссылка по всей своей площади была «кликабельной». */ } .navigation li a:hover { background: #92d3d3; /* Цвет блока при наведении курсора. */ color: #6b6b6b; /* Цвет текста при наведении курсора. */ } </style> </head> <body> <ul> <!-- Описание ссылок в меню и сами ссылки. --> <li><a href="https://www.internet-technologies.ru/news" target="_blank">Новости</a></li> <li><a href="https://www.internet-technologies.ru/articles" target="_blank">Статьи</a></li> <li><a href="https://www.internet-technologies.ru/templates/" target="_blank">Шаблоны</a></li> <li><a href="https://www.internet-technologies.ru/books" target="_blank">Книги</a></li> <li><a href="https://www.internet-technologies.ru/scripts" target="_blank">Скрипты</a></li> <li><a href="https://www.internet-technologies.ru/lessons" target="_blank">Видео</a></li> <li><a href="http://talk.internet-technologies.ru/" target="_blank">Форум</a></li> </ul> <body> </body> </html>
В конечном итоге получается подобное горизонтальное меню:
Код вертикального меню записывается так:
<head> <title>Вертикальное меню сайта</title> <style type="text/css"> .navigation { list-style: none; /* Отключение отображения маркеров. */ width: 120px; /* Ширина меню. */ } .navigation li { margin-top: 5px; /* Отступ между блоками по высоте, необходимый для того чтобы пункты меню не сливались */ font-family: Verdana, Arial, Helvetica, sans-serif; /* Тип шрифта пунктов меню */ font-size: 14px; /* Размер текста меню */ } .navigation li a { display: block; /* Изменение отображения на блочное для того, чтобы иметь возможность задать внутренние отступы. */ padding: 4px 15px; /* Отступы внутри блоков. */ background: #0db5b5; /* Цвет блоков меню. */ color: #3f3f3f; /* Цвет текста в блоках меню. */ text-decoration: none; /* Устранение подчёркивания ссылок. */ position: relative; /* Это необходимо при использовании Internet Explorer 6 для того, чтобы ссылка по всей своей площади была «кликабельной». */ } .navigation li a:hover { background: #92d3d3; /* Цвет фона при наведении курсора мыши */ color: #6b6b6b; /* Цвет текста при наведении курсора мыши */ } </style> </head> <body> <!-- Описание ссылок в меню и сами ссылки. --> <ul> <li><a href="https://www.internet-technologies.ru/news" target="_blank">Новости</a></li> <li><a href="https://www.internet-technologies.ru/articles" target="_blank">Статьи</a></li> <li><a href="https://www.internet-technologies.ru/templates/" target="_blank">Шаблоны</a></li> <li><a href="https://www.internet-technologies.ru/books" target="_blank">Книги</a></li> <li><a href="https://www.internet-technologies.ru/scripts" target="_blank">Скрипты</a></li> <li><a href="https://www.internet-technologies.ru/lessons" target="_blank">Видео</a></li> <li><a href="http://talk.internet-technologies.ru/" target="_blank">Форум</a></li> </ul> <body> </body> </html>
Вертикальное меню, полученное при помощи данного кода, выглядит так:
Руководствуясь всеми вышеперечисленными принципами, приведём код для простого выпадающего меню:
<ul> <li><a href="https://www.internet-technologies.ru/news">Новости</a></li> <li><a href="https://www.internet-technologies.ru/articles" target="_blank">Статьи</a> <ul> <li><a href="#">Ссылка 1</a></li> <li><a href="#">Ссылка 2</a></li> <li><a href="#">Ссылка 3</a></li> </ul> </li> <li><a href="https://www.internet-technologies.ru/templates/">Шаблоны</a> <ul> <li><a href="#">Ссылка 1</a></li> </ul> </li> <li><a href="https://www.internet-technologies.ru/books">Книги</a></li> <li><a href="https://www.internet-technologies.ru/scripts">Скрипты</a></li> <li><a href="https://www.internet-technologies.ru/lessons">Видео</a></li> <li><a href="http://talk.internet-technologies.ru">Форум</a></li> </ul> <style type="text/css"> #menu { background: #0db5b5; width: 60%; padding:1; text-align: center; float:left; font-family: Verdana, Arial, Helvetica, sans-serif; } #menu a { color: #3f3f3f; text-decoration: none; } #menu a:hover { color: #6b6b6b; } #menu ul { padding:0; margin:0; } #menu li { list-style: none; padding: 0 15px 0 0; width:100px; margin: 0 auto; float:left; line-height: 50px; } #menu li ul { position:absolute; display: none; } #menu li ul li { float: none; display: inline; width:100px; line-height:35px; } #menu li ul li:hover { background: #c392b; } #menu li:hover ul { display:block; } #menu li ul li { display: block; background:#92d3d3; } </style>
Получаем такое выпадающее меню:
Как вы видите, достаточно простая HTML разметка и всего несколько строк CSS кода позволяют создать простое, но стильное меню, которое обязательно найдёт свое место в каком-либо веб-сайте. Обязательно попробуйте реализовать что-то подобное самостоятельно.
Желаем удачи!
Как сделать горизонтальное меню на CSS
Простое горизонтальное меню
HTML
Cписку меню присвоен стилевой идентификатор, например, [glavnoeMenu] — уникальное имя, которое используется для изменения его стиля.
<ul>
<li><a title="" href="#">Пункт один</a></li>
<li><a title="" href="#">Пункт два</a></li>
<li><a title="" href="#">Пункт три</a></li>
<li><a title="" href="#">Пункт четыре</a></li>
<li><a title="" href="#">Пункт пять</a></li>
</ul>
CSS
#glavnoeMenu,
#glavnoeMenu ul
{
list-style: none; /* Убираем маркеры списка меню */
}
#glavnoeMenu
{
float: left; /* Выравниваем по левой стороне */
}
#glavnoeMenu > li
{
float: left; /* Выравниваем по левой стороне */
}
#glavnoeMenu li a
{
display: block; /* Меню — блочный элемент */
margin: 0 1em; /* Отделяем пункты меню отступами слева-справа */
padding: 0; /* Нулевые значения полей вокруг ссылки */
}
Горизонтальное меню с вложенным списком подпунктов
1. Создаем HTML структуру меню — список пунктов с ссылками. Один из пунктов основного меню, например, третий, имеет вложенный список подпунктов.
Основному списку присвоен стилевой идентификатор [glavnoeMenu] — уникальное имя, которое используется для изменения его стиля.
HTML
<ul>
<li><a title="" href="#">Пункт один</a></li>
<li><a title="" href="#">Пункт два</a></li>
<li><a title="" href="#">Пункт три</a>
<ul>
<li><a title="" href="#">Подпункт один</a></li>
<li><a title="" href="#">Подпункт два</a></li>
<li><a title="" href="#">Подпункт три</a></li>
</ul>
</li>
<li><a title="" href="#">Пункт четыре</a></li>
<li><a title="" href="#">Пункт пять</a></li>
</ul>
CSS
#glavnoeMenu,
#glavnoeMenu ul
{
list-style: none; /* Убираем маркеры списка меню */
}
#glavnoeMenu
{
float: left; /* Выравниваем по левой стороне */
}
#glavnoeMenu > li
{
float: left; /* Выравниваем по левой стороне */
}
#glavnoeMenu li a
{
display: block; /* Меню — блочный элемент */
margin: 0 1em; /* Отделяем пункты меню отступами слева-справа */
padding: 0; /* Нулевые значения полей вокруг ссылки */
}
#glavnoeMenu li ul
{
background: none repeat scroll 0 0 #FFFFFF; /* Фон списка с
подпунктами, белый */
display: none; /* Вложенный список с подпунктами не отображается */
position: absolute; /* Имеет абсолютное позиционирование */
z-index: 9999999; /* Список с подпунктами перекрывает
другие объекты веб-страницы */
}
#glavnoeMenu li ul li a
{
margin: 0; /* Нулевой отступ */
padding: 0.3em 1em; /* Внутренние поля ссылки подпункта*/
}
#glavnoeMenu li:hover ul
{
display: block; /* Отображение списка с
подпунктами при наведении — блочный элемент */
margin: 0;
padding: 0.1em 0;
}
Дальнейшее оформление — по вкусу.
Демонстрация меню
В случаях размещения меню слева или справа страницы, отступ от края (левого или правого) может нарушить сетку. Для исправления необходимо, в левом варианте, присвоить класс [first] первому пункту и [last] последнему в правом варианте. В стили добавить описание варианта класса:
#glavnoeMenu li a.first
{
display: block;
margin: 0 1em 0 0; /* Убираем левый отступ */
padding: 0;
}
или
#glavnoeMenu li a.last
{
display: block;
margin: 0 0 0 1em; /* Убираем правый отступ */
padding: 0;
}
Можно ограничить ширину блока вложенного списка. Для этого нужно прописать стиль, указав точную ширину, например 150px.
#glavnoeMenu ul li a
{
width: 150px;
}
html — элементы горизонтального списка
html — элементы горизонтального списка — qaruПрисоединяйтесь к Stack Overflow , чтобы учиться, делиться знаниями и строить свою карьеру.
Спросил
Просмотрено 171k раз
Итак, я попытался создать горизонтальный список для использования на новом веб-сайте, который я разрабатываю.Я попробовал ряд предложений, уже найденных в Интернете, таких как установка «float» влево и тому подобное — но ни одно из них не помогло, когда дело дошло до решения проблемы.
ul # menuItems {
фон: нет;
высота: 50 пикселей;
ширина: 100 пикселей;
маржа: 0;
отступ: 0;
}
ul # menuItems li {
дисплей: встроенный;
стиль списка: нет;
маржа слева: авто;
маржа-право: авто;
верх: 0px;
высота: 50 пикселей;
}
ul # menuItems li a {
семейство шрифтов: Arial, Helvetica, sans-serif;
текстовое оформление: нет;
font-weight: жирнее;
цвет: # 000;
высота: 50 пикселей;
ширина: авто;
дисплей: блок;
выравнивание текста: центр;
высота строки: 50 пикселей;
}
В настоящее время я не уверен, что вызывает эту проблему, как мне ее решить?
BSMP3,96288 золотых знаков3131 серебряный знак4141 бронзовый знак
Создан 29 мар.
1Я заметил, что многие люди используют этот ответ, поэтому решил немного его обновить.Если вы хотите увидеть исходный ответ, проверьте ниже. Новый ответ демонстрирует, как можно добавить стиль в свой список.
ul> li {
дисплей: встроенный блок;
/ * Вы также можете добавить сюда поля, чтобы он выглядел красивее * /
масштабирование: 1;
* дисплей: встроенный;
/ * это исправление необходимо для IE7- * /
}
Яниш5,97344 золотых знака3131 серебряный знак6262 бронзовых знака
Создан 29 мар.
4 Намного лучше использовать inline-block
, потому что вам больше не нужно использовать clear: оба
в конце вашего списка.
Попробуйте это:
CSS:
ul> li {
дисплей: встроенный блок;
}
Посмотрите здесь: http://jsfiddle.net/shahverdy/4N6Ap/
Создан 29 мар.
Мостафа Шахверды2,61711 золотых знаков2626 серебряных знаков4848 бронзовых знаков
Вы также можете использовать встроенные блоки, чтобы избежать плавающих элементов
, а затем стиль:
li {
/ * с исправлением для IE * /
дисплей: встроенный;
дисплей: встроенный блок;
масштабирование: 1;
/ *
дополнительные стили, чтобы он выглядел красиво
* /
}
, так что вам не нужно ничего плавать, устраняя необходимость в clearfixes
Создан 29 мар.
Джейми18966 бронзовых знаков
2Я думаю, что простое решение, которое я нашел, ниже
ul {
дисплей: гибкий;
}
Создан 20 ноя.
1Здесь вы можете найти рабочий пример с дополнительными предложениями по динамическому изменению размера списка.
Я использовал display: inline-block и процентное заполнение, чтобы родительский список мог динамически изменять размер:
Дисплей: строчно-блочный;
отступ: 10 пикселей 1%;
ширина: 30%
плюс еще два правила для удаления отступов для первого и последнего элементов.
ul # menuItems li: first-child {padding-left: 0;}
ul # menuItems li: last-child {padding-right: 0;}
Создан 29 мар.
алексасальбони1,73611 золотых знаков1616 серебряных знаков2626 бронзовых знаков
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками html css или задайте свой вопрос.
lang-html
Stack Overflow лучше всего работает с включенным JavaScriptВаша конфиденциальность
Нажимая «Принять все файлы cookie», вы соглашаетесь с тем, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Принимать все файлы cookie Настроить параметры
html — Как сделать отображение в горизонтальной строке
html — Как сделать отображение- в горизонтальной строке — qaru
Присоединяйтесь к Stack Overflow , чтобы учиться, делиться знаниями и строить свою карьеру.
Спросил
Просмотрено 267k раз
Как сделать так, чтобы элементы моего списка отображались горизонтально в строке с помощью CSS?
#div_top_hypers {
цвет фона: #eeeeee;
дисплей: встроенный;
}
#ul_top_hypers {
дисплей: встроенный;
}
TylerH19.3k5050 золотых знаков6565 серебряных знаков8686 бронзовых знаков
задан 20 мая ’09 в 3: 362009-05-20 03:36
Бабикер17.1k2626 золотых знаков7070 серебряных знаков120120 бронзовых знаков
1 Элементы списка обычно являются блочными.Превратите их во встроенные элементы с помощью свойства display
.
В приведенном вами коде вам необходимо использовать селектор контекста, чтобы применить свойство display: inline
к элементам списка, а не к самому списку (применение display: inline
к общему списку не будет иметь никакого эффекта) :
#ul_top_hypers li {
дисплей: встроенный;
}
Вот рабочий пример:
#div_top_hypers {
цвет фона: #eeeeee;
дисплей: встроенный;
}
#ul_top_hypers li {
дисплей: встроенный;
}
Ом Сао4,65011 золотых знаков2727 серебряных знаков4646 бронзовых знаков
ответ дан 20 май ’09 в 3:37
hbwhbw15k55 золотых знаков4848 серебряных знаков5656 бронзовых знаков
5Вы также можете настроить их плавание вправо.
#ul_top_hypers li {
float: right;
}
Это позволяет им оставаться на уровне блоков, но они будут отображаться в той же строке.
ответ дан 20 мая ’09 в 4: 012009-05-20 04:01
Алексалекс442k189189 золотых знаков839839 серебряных знаков959959 бронзовых знаков
2 Установите для свойства display
значение inline
для списка, к которому это нужно применить.Есть хорошее объяснение отображения списков в A List Apart.
ответ дан 20 мая ’09 в 3: 402009-05-20 03:40
Пол МориПол Мори14.8k 99 золотых знаков5050 серебряных знаков5757 бронзовых знаков
0Как сказал @alex, вы могли бы смещать вправо, но если вы хотите сохранить разметку такой же, смещайте ее влево!
#ul_top_hypers li {
плыть налево;
}
Создан 18 июн.
Тейхорнер31322 серебряных знака1515 бронзовых знаков
У вас будет работать:
#ul_top_hypers li {
дисплей: встроенный блок;
}
Создан 21 окт.
Как уже упоминалось, вы можете установить дисплей с li
на : inline;
или с плавающей запятой
li
влево или вправо.Кроме того, вы также можете использовать display: flex;
по адресу: ul.
. В приведенном ниже фрагменте я также добавил justify-content: space-around
, чтобы увеличить интервал.
Для получения дополнительной информации о flexbox, ознакомьтесь с полным руководством.
#div_top_hypers {
цвет фона: #eeeeee;
дисплей: встроенный;
}
#ul_top_hypers {
дисплей: гибкий;
justify-content: пространство вокруг;
тип-стиль-список: нет;
}
Создан 02 сен.
Мэттью ДжонсонМэттью Джонсон4,32522 золотых знака3434 серебряных знака4545 бронзовых знаков
#ul_top_hypers li {
дисплей: гибкий;
}
Badacadabra5,45377 золотых знаков2323 серебряных знака4242 бронзовых знака
Создан 14 июн.
Кумар Сакет7311 серебряный знак77 бронзовых знаков
0lang-html
Stack Overflow лучше всего работает с включенным JavaScriptВаша конфиденциальность
Нажимая «Принять все файлы cookie», вы соглашаетесь с тем, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Принимать все файлы cookie Настроить параметры
html — центрировать горизонтальное меню CSS
html — центрировать горизонтальное меню CSS — qaruПрисоединяйтесь к Stack Overflow , чтобы учиться, делиться знаниями и строить свою карьеру.
Спросил
Просмотрено 16к раз
У меня есть меню CSS с использованием следующего CSS.
Как лучше всего центрировать все меню на странице?
Я попытался использовать другой jsfiddle: http: // jsfiddle.net / njuVm / 4k1010 золотых знаков5757 серебряных знаков8080 бронзовых знаков Создан 17 сен. 2,7671313 золотых знаков3232 серебряных знака5353 бронзовых знака Вы можете центрировать панель навигации, используя следующие правила CSS: См. Демонстрацию по адресу: http://jsfiddle.net/audetwebdesign/DP6Ax/ Ключ - установить Обязательно обнуляйте поля и отступы на элементах Создан 17 сен. 4k1010 золотых знаков5757 серебряных знаков8080 бронзовых знаков Вместо того, чтобы перемещать Затем они будут центрированы относительно Поскольку ширина Создан 11 дек. 227k4747 золотых знаков375375 серебряных знаков462462 бронзовых знака Во-первых, когда вы размещаете HTML: CSS: И для центрирования меню вы должны указать ширину Взгляните: http://jsfiddle.net/njuVm/6/ Создан 17 сен. lang-html Ваша конфиденциальность Нажимая «Принять все файлы cookie», вы соглашаетесь с тем, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie. Принимать все файлы cookie
Настроить параметры Обновление , апрель 2013 г .: Эта статья довольно старая.Это не очень сложно. Просто введите текст по центру списка (например, Текущий стандарт кодирования меню - неупорядоченные списки. Он не такой семантический, как тег Если вы хотите сделать этот навигационный неупорядоченный список горизонтальным , у вас есть два основных варианта: Теперь давайте примем несколько общих решений о том, как мы хотим отображать это меню: Теперь у нас проблемы. Если мы заключим меню в div «table», мы сможем решить эту проблему. Если вы знакомы со Стю Николлсом из CSSPlay, он все время использует его в своих потрясающих горизонтальных меню. Проверьте HTML: Теперь посмотрим на очень простой CSS, который делает это возможным: Это div таблицы, который выполняет свою работу. Иногда я думаю: «Все, что работает». должен быть лозунгом для CSS. Посмотреть демоверсию Скачать файлы В этом разделе вы узнаете, как создать горизонтальное меню навигации. Примечание: Первоначально этот пост был написан 3+ года назад, а это были годы веб-разработки, то есть вечность. Я переделал фрагмент, чтобы использовать лучший CSS. В этом уроке я исследую два разных метода горизонтальной навигации на больших экранах. Фрагмент адаптивный. Он создаст вертикальное меню на маленьких экранах и горизонтальное меню на больших экранах. См. Простую адаптивную горизонтальную навигацию Pen от Лизы (@lisa_c) на CodePen. Фрагменты кода Просмотр видео Чтение описания См. Простую адаптивную горизонтальную навигацию Pen от Лизы (@lisa_c) на CodePen. См. Простую адаптивную горизонтальную навигацию Pen от Лизы (@lisa_c) на CodePen. Начнем с HTML. У меня простой неупорядоченный список ссылок. Каждый элемент списка имеет имя класса, связанное с его именем. Я буду использовать подход, ориентированный на мобильные устройства, и начну оформлять этот список как вертикальную навигацию, чтобы он хорошо смотрелся на телефонах и планшетах меньшего размера. Я убираю поля и отступы и сначала задаю цвет фона для тела. Затем я задам стиль для списка, чтобы удалить маркеры и присвоить ему цвет фона. Я хочу, чтобы текст был по центру. Он еще не выглядит идеально центрированным, но если я удалю прокладку, оно будет. Очистка поля заставит его охватить верхнюю часть страницы, которую я хочу. Я нацелен на В элементах списка внутри nav ( Я устанавливаю высоту строки Наконец, я отключу подчеркивание и сделаю текст в ссылках белым. Опять же, я нацелен только на теги привязки внутри Ссылки доступны только тогда, когда я нахожусь над словами в ссылке. Я хочу, чтобы ссылка охватывала весь блок.Поэтому мне нужно добавить Я хочу изменить цвет при наведении курсора на ссылку. Я могу сделать это с помощью этого: Было бы неплохо иметь небольшой эффект перехода при наведении курсора, поэтому я добавлю это. Я добавляю его в тег Последнее, что я хочу сделать, прежде чем стилизовать более широкую экранную навигацию и сделать ее горизонтальной, - это стилизовать активный класс. У меня сейчас активный класс по ссылке «новости». Я могу оформить этим активные ссылки. Но у нас проблема при наведении курсора на активную ссылку.Я не хочу, чтобы этот цвет изменился. Поэтому я добавлю Я хочу изменить курсор Итак, все работает нормально, и это будет хорошо смотреться на телефоне. Однако на более широком экране это выглядит странно. Когда экран больше 600 пикселей, я хочу переключиться на горизонтальную навигацию, так что это будет моя точка останова. Все, что меньше 600 пикселей, будет отображать навигацию по вертикали, а все с большим разрешением - по горизонтали. Я могу добавить медиа-запрос. Затем я могу настроить таргетинг на Я делаю каждый пункт меню шириной 120 пикселей, так как их 5, а 5 * 120 - 600. Я удаляю границу и увеличиваю текст меню и панель. Если мы немного сдвинем область просмотра, то увидим, как она изменится. Теперь у нас есть два варианта сделать это горизонтальным. Один вариант - отобразить элементы списка как Несмотря на то, что я все еще нацелен на селектор Если я добавлю навигация работает неплохо.У нас действительно есть небольшая проблема шириной около 600 пикселей, когда последний пункт меню переходит на другую строку. Кроме того, если я наведу курсор на другие элементы, вы увидите, что у нас есть небольшой промежуток серого цвета. Это потому, что при использовании А теперь все отлично выглядит. Итак, этот метод работает, и мы могли бы остановиться на этом.Я не уверен, есть ли у этого обратная сторона, но вам может понадобиться другой вариант и посмотреть, как будут работать поплавки. И это почти работает, но пропала серая полоса. Это связано с тем, что родительский элемент рухнул, когда дочерние элементы были выведены из потока путем их перемещения. Если я включу выделение при предварительном просмотре, вы увидите каждый тег Есть множество способов исправить это, и у меня есть целое видео, объясняющее все способы. В этом случае я просто добавлю , который прост и будет работать. Однако у нас есть новая проблема, и это то, что навигация больше не центрирована. В зависимости от вашего веб-сайта это может не быть проблемой. Но если мы хотим исправить это, мы можем добавить это: , чтобы отцентрировать его. И последнее изменение - сделать всю панель Итак, метод inline-block намного меньше кода и проще. Но я подумал, что было бы полезно увидеть оба метода. Раньше я всегда использовал метод Наконец, этот код хорошо работает во всех современных браузерах, включая IE9 и выше. Если бы мы посмотрели на это в IE8, мы бы увидели только вертикальную навигацию, подобную этой, независимо от ширины экрана, потому что IE8 не распознает медиа-запросы. Чтобы заставить его работать в IE8, мы можем использовать условную таблицу стилей и добавить код, который мы только что добавили в наш медиа-запрос. Это никогда не будет отображать вертикальную навигацию в браузерах IE, но маловероятно, что кто-то, использующий IE, будет просматривать это на телефоне, так что все должно быть в порядке. Если бы я сначала стилизовал горизонтальное меню, нам не понадобилась бы таблица стилей для IE. Я мог бы использовать Надеюсь, это было полезно. Если у вас есть вопросы, напишите их на css-snippets.com. Написано Гарри Робертсом на CSS Wizardry . Центрировать элементы уровня блока легко, просто определите ширину и установите По возможности всегда следует избегать явного определения ширины и высоты,
так как это сделает документ менее ориентированным на будущее, гибким и
расширяемый ... Предположим, у вас есть четыре пункта в меню навигации - вы можете работать
вне их ширины и используйте поле Однако есть способ иметь центрированную горизонтальную навигацию без указания явной ширины и без добавления CSS. Это также замечательно просто. В разметке: Довольно стандартный, неупорядоченный список пунктов меню.CSS - вот где это. Я выделил те части, которые выполняют большую часть работы: Я просто создал список навигации и присвоил ему верхнюю границу.
и снизу (просто чтобы выделить его центрированный текст).Вместо того, чтобы плавать уровень блока Далее мы используем (очень редко используемый) При желании вы могли бы применить встроенный блок к Вот небольшая демонстрация. Попробуйте использовать Firebug или подобное, чтобы добавить
другие элементы списка на лету и наблюдайте, как они плавно центрируются в списке. я
протестировали это в IE7-8, чтобы убедиться, что он отлично работает. Я не проверял IE6, но
Думаю, все будет хорошо. Вы спросили, и я услышал; Я сделал раскрывающуюся версию этого
для тебя.По строке ☕️ Это помогло? Купи мне кофе! и установить поля, но его просто выравнивание все время оставалось.
nav {
маржа: 0 авто;
выравнивание текста: центр;
граница: сплошной черный 1px;
}
nav ul ul {
дисплей: нет;
}
nav ul li: hover> ul {
дисплей: блок;
}
nav ul {
стиль списка: нет;
}
nav ul li {
плыть налево;
}
nav ul li: hover a {
цвет: # 000000;
}
nav ul li a {
дисплей: блок;
отступ: 10 пикселей 15 пикселей;
цвет: # 000000;
текстовое оформление: нет;
}
nav ul ul {
радиус границы: 0 пикселей;
отступ: 0;
позиция: абсолютная;
}
nav ul ul li {
float: нет;
border-top: 1px solid # 000000;
нижняя граница: 1px solid # 000000;
положение: относительное;
}
nav ul ul li a {
цвет: # 000000;
}
nav ul ul li a: hover {
цвет: # 666666;
}
nav ul ul ul {
позиция: абсолютная;
верх: 0;
}
nav {
маржа: 0 авто;
выравнивание текста: центр;
граница: сплошной черный 1px;
}
nav ul ul {
дисплей: нет;
}
nav ul li: hover> ul {
дисплей: блок;
}
nav ul {
стиль списка: нет;
маржа: 0; / * << добавить это * /
отступ: 0; / * << добавить это * /
дисплей: встроенный блок; / * << добавить это * /
вертикальное выравнивание: сверху; / * << добавить это * /
}
nav ul li {
плыть налево;
маржа: 0; / * << добавить это * /
отступ: 0; / * << добавить это * /
}
nav ul li: hover a {
цвет: # 000000;
}
nav ul li a {
дисплей: блок;
отступ: 10 пикселей 15 пикселей;
цвет: # 000000;
текстовое оформление: нет;
цвет фона: розовый; /* по желанию... * /
}
nav ul ul {
радиус границы: 0 пикселей;
отступ: 0;
позиция: абсолютная;
}
nav ul ul li {
float: нет;
border-top: 1px solid # 000000;
нижняя граница: 1px solid # 000000;
положение: относительное;
}
nav ul ul li a {
цвет: # 000000;
}
nav ul ul li a: hover {
цвет: # 666666;
}
nav ul ul ul {
позиция: абсолютная;
верх: 0;
}
display: inline-block
для nav ul
, что позволит вашему правилу text-align: center
вступить в силу. ul
и li
. Все остальное, что вы сделали, было более или менее правильным, так что у вас должно быть хорошо. li
, вы можете отобразить их как inline-block
s. ul
из-за text-align: center
. ul
равна ширине nav
по умолчанию, li
будет выглядеть центрированным относительно nav
.
nav {
выравнивание текста: центр;
граница: сплошной черный 1px;
}
nav ul {
стиль списка: нет;
отступ: 0;
маржа: 0;
}
nav> ul> li {
дисплей: встроенный блок;
}
nav a {
дисплей: блок;
отступ: 10 пикселей 15 пикселей;
цвет: # 000000;
текстовое оформление: нет;
}
nav li: hover> ul {
дисплей: блок;
}
nav> ul ul {
дисплей: нет;
позиция: абсолютная;
}
nav> ul ul> li {
нижняя граница: 1px solid # 000000;
}
nav> ul ul a: hover {
цвет: # 666666;
}
ul
, вы должны очистить float, добавив clear
div:
.Очистить{
ясно: оба;
}
ul
, как в примере, и случайным образом я установил ширину 560px
:
нав ул {
стиль списка: нет;
ширина: 560 пикселей;
маржа: 0 авто;
}
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками html css или задайте свой вопрос.
Центрирование элементов списка по горизонтали (немного сложнее, чем вы думаете)
ul.nav {text-align: center;}
) и элементы списка inline-block (например, ul.nav li {display: inline-block;}
). Если по какой-то причине вы хотите сделать это с полем, посмотрите width: fit-content;
., но не так уж и плох. В конце концов, навигация - это своего рода список.
сам по себе не может отвечать за фоновое изображение, потому что его ширина будет ровно настолько, насколько это необходимо для помощи в центрировании.Поэтому мы помещаем его в div шириной 100%, чтобы позаботиться о фоновом изображении. Но теперь наш маленький фокус с центрированием не работает. Честно говоря, я не совсем понимаю, почему, но применение .ul {margin: 0 auto;} здесь просто не работает. Вот в чем заключается хитрость…
Обернуть список в div таблицы
# menu-external {
высота: 84 пикс;
фон: url (images / bar-bg.jpg) repeat-x;
}
.Таблица {
дисплей: таблица; / * Разрешить центрированию работать * /
маржа: 0 авто;
}
ul # horizontal-list {
минимальная ширина: 696 пикселей;
стиль списка: нет;
padding-top: 20 пикселей;
}
ul # horizontal-list li {
дисплей: встроенный;
}
Как создать горизонтальное меню навигации с помощью CSS
Без CSS он будет выглядеть следующим образом:
Горизонтальное меню навигации
ол, ул {
стиль списка: нет;
}
Установка ширины #mainMenu {
маржа: 10 пикселей;
ширина: 900 пикселей;
семейство шрифтов: без засечек;
}
предотвращает обертывание меню, когда пользователь сжимает окно браузера.
#mainMenu li {
дисплей: блок;
ширина: 120 пикселей;
плыть налево;
маржа слева: 2px;
граница: 1px solid # 000;
}
и
на элементы блока. Мы также добавим несколько стилей форматирования и
удалите подчеркивание с помощью text-decoration: none
.
#mainMenu a {
дисплей: блок;
отступ: 3 пикселя;
текстовое оформление: нет;
цвет фона: #fff;
цвет: # 009;
}
#mainMenu a: hover {
цвет фона: # 009;
цвет: #fff;
}
Откройте HTML-страницу в браузере.Этот код отображает следующее:
#главное меню {
маржа: 10 пикселей;
ширина: 900 пикселей;
семейство шрифтов: без засечек;
}
#mainMenu li {
дисплей: блок;
ширина: 120 пикселей;
плыть налево;
маржа слева: 2px;
граница: 1px solid # 000;
}
#mainMenu a {
дисплей: блок;
отступ: 3 пикселя;
текстовое оформление: нет;
цвет фона: #fff;
цвет: # 009;
}
#mainMenu a: hover {
цвет фона: # 009;
цвет: #fff;
}
Простая горизонтальная навигация | CSS-фрагменты
Предпочитаемый метод обучения?
Если вам просто нужен код и не нужно описание.
Если вам нравится, как что-то работает с пояснением, посмотрите видео.
Если вы научитесь лучше читать, я включаю расшифровку видео с соответствующими встроенными фрагментами кода. Только код
Видео
Выписка
кузов {
маржа: 0;
отступ: 0;
фон: #ccc;
}
ul
внутри .nav
, потому что мне, вероятно, нужен другой стиль для неупорядоченных списков без навигации.
.nav ul {
стиль списка: нет;
цвет фона: # 444;
выравнивание текста: центр;
отступ: 0;
маржа: 0;
}
.nav li
) я установлю типографику.
.nav li {
семейство шрифтов: «Освальд», без засечек;
размер шрифта: 1.2em;
высота строки: 40 пикселей;
высота: 40 пикселей;
нижняя граница: 1px solid # 888;
}
и высоту
как 40 пикселей,
так, чтобы текст был центрирован по вертикали в каждой строке.Я также даю тонкую границу, чтобы различать линии.
nav a {
текстовое оформление: нет;
цвет: #fff;
}
.nav
, потому что я не хочу предполагать, что все теги привязки будут иметь такой стиль. display: block
к этим ссылкам. Теперь я могу щелкнуть в любом месте, чтобы перейти на другую страницу.
nav a: hover {
цвет фона: # 005f5f;
}
переход: .3s цвет фона;
a
, а не в селектор hover
.Это позволит переходу происходить как при наведении указателя мыши на ссылку, так и при удалении указателя мыши.
a.active {
цвет фона: #fff;
цвет: # 444;
}
.nav
в начале, чтобы этот селектор имел более конкретную специфику и переопределил ранее определенный .nav a: hover
.: по умолчанию;
, поэтому не похоже, что нажатие на эту ссылку ни к чему не приведет.
@media screen и (min-width: 600px) {
}
.nav li
внутри медиа-запроса. Поэтому на экране шириной не менее 600 пикселей он будет использовать этот код:
.nav li {
ширина: 120 пикселей;
нижняя граница: нет;
высота: 50 пикселей;
высота строки: 50 пикселей;
размер шрифта: 1.4em;
}
inline-block
, а другой вариант - использовать числа с плавающей запятой. Первый способ проще, но у вас может быть причина использовать числа с плавающей запятой, поэтому я объясню оба варианта.Любой из вариантов будет работать в IE8, однако IE8 не распознает медиа-запрос. Позже нам нужно будет скопировать этот код в таблицу стилей только для IE8. .nav li
, я помещу другой код параметра за пределами этого первого выбора, чтобы я мог легко различать эти два варианта.
.nav li {
дисплей: встроенный блок;
}
встроенного блока
вводится небольшой запас. Мы можем с этим справиться, добавив небольшую отрицательную маржу.
margin-right: -4px;
.nav li {
плыть налево;
}
li
с его рамкой. Но тег ul - это всего лишь одна строка, которая означает, что она свернута.
.nav ul {
перелив: авто;
}
ширина: 600 пикселей;
маржа: 0 авто;
nav
темно-серым цветом, чтобы она расширялась. float
, и его правильное использование иногда вызывало головную боль.
.nav li {
ширина: 120 пикселей;
нижняя граница: нет;
высота: 50 пикселей;
высота строки: 50 пикселей;
дисплей: встроенный блок;
маржа слева: -4px;
}
max-width
вместо min-width
и изменить способ написания кода. Но я хотел использовать в первую очередь мобильный подход. Код в итоге оказался проще, чем когда я изначально подходил к нему с большого экрана. Создание центрированной горизонтальной навигации - CSS Wizardry - Оптимизация веб-производительности
margin: 0 auto;
, г.
но что, если вы не знаете эту фиксированную ширину? Вы можете использовать text-align: center;
но это не сработает и для блочных элементов со 100% шириной ...
работать с элементами текстового уровня.: 0 auto;
, чтобы отцентрировать их.Добавление пятого
увеличит ширину, а это значит, что вам также придется изменить CSS. Это далеко
от идеала, и более того, с помощью CMS для управления сайтом (клиент может добавлять страницы,
но, возможно, не могу редактировать CSS).
.nav {
граница: 1px solid #ccc;
ширина границы: 1px 0;
стиль списка: нет;
маржа: 0;
отступ: 0;
выравнивание текста: по центру;
}
.nav li {
дисплей: встроенный;
}
.nav a {
дисплей: встроенный блок;
отступ: 10 пикселей;
}
сек. Я дал им display: inline;
, то есть
они больше не занимают 100% доступной ширины и теперь хорошо складываются
друг против друга. display: inline-block;
, чтобы убедиться, что ссылки
сами по себе не переходят на новые строки, но по-прежнему подчиняются любым значениям заполнения
соответственно. Здесь я увеличил область попадания, добавив padding: 10px;
s.Однако
IE6-7 позволит встроенному блоку
работать с элементами, которые по своей сути
встроенные элементы. Дисплей : строчно-блочный;
не будет работать с элементами блочного уровня. Обновление
верх: 100%;
заставит раскрывающийся список работать в IE7, но вроде как
немного портит опыт во всех других браузерах. Оставляете ли вы его в или
не зависит от вас. Опять же, просмотрите исходный код практических рекомендаций…