Ul меню горизонтальное: Горизонтальное меню для сайта
31.07.2019
Разное
Горизонтальное меню с вертикальным подменю (HTML/CSS только)
Я, имея трудное время, пытаясь сделать мой подменю в вертикальном, а не горизонтальном положении. Любая помощь будет очень признательна.
HTML:
<ul> <li><a href="/" title="HOME">HOME</a></li> <li> <a href="/" title="ECO ENERGY">ECO ENERGY</a> <ul> <li><a href="/Evaluations" title="Evaluations">Evaluations</a></li> <li><a href="/Incentives" title="Incentives">Incentives</a></li> <li><a href="/HouseFiles" title="House Files">House Files</a></li> <li><a href="/UpdateSubmissions" title="Update Submissions">Update Submissions</a>/li> </ul> </li> <li> <a href="/" title="NEW HOMES">NEW HOMES</a> <ul> <li><a href="/NH" title="Evaluations">Evaluations</a></li> </ul> </li> </ul>
CSS:
#menu {
background-color: #206676;
float: left;
width: 100%;
height: 60px;
}
ul#menu {
font-size: 1.3em;
font-weight: 600;
margin: 0 0 5px;
padding: 0;
text-align: left;
}
ul#menu li {
display: inline;
list-style: none;
padding-left: 15px;
float: left;
}
ul#menu li a {
background: none;
color: #FFF;
text-decoration: none;
}
ul#menu li a:hover {
color: #FFF;
text-decoration: none;
}
ul#menu ul {
display: none;
}
ul#menu li {
display: inline;
}
ul#menu li:hover ul {
display: block;
}
ul#menu li:hover ul li a {
display: block;
color: red;
}
У меня есть это до такой степени, что я могу переключать цвет, когда нависаю над пунктами главного меню, но просто не могу сделать их вертикальными.
fiddle HERE
html css html-lists horizontallistПоделиться Источник Batsu 24 февраля 2014 в 19:59
4 ответа
- Горизонтальное меню полной ширины с вертикальным подменю, которое имеет вертикальное дочернее подменю
Мне нужны какие-то коды или opensource, где мне нужно меню такого рода: меню 1: меню 2: Изображение меню 1 — это подменю из основной навигации и Изображение Меню 2 является вертикальным, и если подменю больше, чем просто один столбец (определенная высота, как на изображении), оно переходит ко.
..
- Горизонтальное меню с вертикальным подменю
Мне было интересно, есть ли способ сделать горизонтальное меню css с горизонтальным текстом вертикальным подменю с вертикальным текстом.. я попробовал, но при вращении второго ul (для вертикального) выравнивание получает коллапс. Кроме того, я хочу, чтобы меню текло влево до моего последнего…
1
ul#menu ul
{
display:none;
position:absolute;
left:0;
top:20px;
}
ul#menu li
{
display:block;
}
Самые важные изменения. JSFIDDLE> http://jsfiddle.net/LSbvJ/ (вам придется настроить отступы, поля, выравнивание текста… но это хорошее начало, я надеюсь.)
Поделиться sinisake 24 февраля 2014 в 20:11
1
Просто попробуйте этот обновленный CSS.
ul#menu li:hover ul {
display: block;
position: absolute;
top: 10x;
width: 200px;
}
ul#menu {
font-size: 1.3em;
font-weight: 600;
margin: 0 0 5px;
padding: 0;
text-align: left;
position: relative
}
Ниже приведена рабочая демонстрация.
http://jsbin.com/buculimi/1/edit
1
#menu { background-color: #206676; float: left; width: 100%; height: 60px; } ul#menu { font-size: 1.3em; font-weight: 600; margin: 0 0 5px; padding: 0; text-align: left; } ul#menu li { display: inline; list-style: none; padding-left: 15px; float: left; } ul#menu li a { background: none; color: #FFF; text-decoration: none; } ul#menu li a:hover { color: #FFF; text-decoration: none; } ul#menu ul { display: none; } ul#menu li { display: block; } ul#menu li:hover ul { display: block; position: absolute; width: 50px; } ul#menu li:hover ul li a { display: block; color: red; }
<ul>
<li><a href="/" title="HOME">HOME</a>
</li>
<li><a href="/" title="ECO ENERGY">ECO ENERGY</a>
<ul>
<li><a href="/Evaluations" title="Evaluations">Evaluations</a>
</li>
<li><a href="/Incentives" title="Incentives">Incentives</a>
</li>
<li><a href="/HouseFiles" title="House Files">House Files</a>
</li>
<li><a href="/UpdateSubmissions" title="Update Submissions">Update Submissions</a>/li>
</ul>
</li>
<li><a href="/" title="NEW HOMES">NEW HOMES</a>
<ul>
<li><a href="/NH" title="Evaluations">Evaluations</a>
</li>
</ul>
</li>
</ul>
Поделиться deepika 10 сентября 2015 в 10:49
- Горизонтальное меню с вертикальным подменю
Мне нужно горизонтальное меню с вертикальными подменю , которые взяты из базы данных сервера SQl, мне нужно вертикальное подменю с полосами прокрутки, может кто-нибудь дать мне ссылку на такое меню.
- css подменю меню горизонтальное
Как я могу создать css меню и подменю, как это. Когда я щелкаю или перемещаю мышь по меню, оно имеет маленький значок внизу
0
<html>
<head>
<style type="text/css" media="screen">
#menu{
width:100%;
display:block;
position:relative;
height:60px;
color:#fff;
text-decoration:none;
border-style:inset;
}
#menu a{
text-decoration:none;
color:#fff;
}
#menu ul {
padding:1; margin:1; list-style:none;font-size: 1.3em;
font-weight: 600;
}
#menu li {
float:left; position:relative; padding-right:100; display:block;
border:none;
}
#menu li ul {
display:none;
position:absolute;
}
#menu li:hover ul{
display:block;
background:red;
height:auto; width:8em;
}
#menu li ul li{
clear:both;
border-style:none;
}
</style>
</head>
<body>
<div>
<div>
<ul>
<li><a href="#" title="HOME">HOME</a></li>
<li>
<a href="#" title="ECO ENERGY">ECO ENERGY</a>
<ul>
<li><a href="/Evaluations" title="Evaluations">Evaluations</a></li>
<li><a href="/Incentives" title="Incentives">Incentives</a></li>
<li><a href="/HouseFiles" title="House Files">House Files</a></li>
<li><a href="/UpdateSubmissions" title="Update Submissions">Update Submissions</a></li>
</ul>
</li>
<li><a href="/" title="NEW HOMES">NEW HOMES</a>
<ul>
<li><a href="/NH" title="Evaluations">Evaluations</a></li>
</ul>
</li>
</ul>
</div>
</div>
</body>
</html>
Эта страница также может вам помочь:
http://mrbool. com/how-to-create-menu-with-submenu-using-csshtml/26146
Поделиться jigsaw 24 февраля 2014 в 20:34
Похожие вопросы:
Как создать горизонтальное меню HTML с вертикальным подменю, используя только CSS?
Я хочу создать горизонтальное меню и onMouseover я хочу, чтобы появилось вертикальное подменю. Я много серфил и нашел некоторые коды, но когда я выполняю их, почти во всех кодах я получаю…
ASP.NET горизонтальное меню с подменю, появляющимся ниже, также горизонтальное
У меня есть горизонтальное меню с UL/LI markup, которое я хочу преобразовать в ASP:Menu в .net 3.5. Я бы хотел, чтобы выбор в подменю отображался в горизонтальном меню под главным меню при нажатии…
CSS выпадающее меню с горизонтальным подменю
У меня есть следующий сайт http://jsfiddle.net/Me4fw/4/ , на котором я пытаюсь реализовать горизонтальное выпадающее меню css, имеющее подменю, которое также является горизонтальным. Я перепробовал…
Горизонтальное меню полной ширины с вертикальным подменю, которое имеет вертикальное дочернее подменю
Мне нужны какие-то коды или opensource, где мне нужно меню такого рода: меню 1: меню 2: Изображение меню 1 — это подменю из основной навигации и Изображение Меню 2 является вертикальным, и если…
Горизонтальное меню с вертикальным подменю
Мне было интересно, есть ли способ сделать горизонтальное меню css с горизонтальным текстом вертикальным подменю с вертикальным текстом.. я попробовал, но при вращении второго ul (для вертикального)…
Горизонтальное меню с вертикальным подменю
Мне нужно горизонтальное меню с вертикальными подменю , которые взяты из базы данных сервера SQl, мне нужно вертикальное подменю с полосами прокрутки, может кто-нибудь дать мне ссылку на такое меню.
css подменю меню горизонтальное
Как я могу создать css меню и подменю, как это.
CSS выпадающее меню — неверный размер подменю
Я делаю горизонтальное навигационное меню css. Как я могу сделать так, чтобы ширина подменю автоматически подстраивалась под его содержимое? как в главном меню, совсем. Мой css:…
горизонтальное выпадающее меню с горизонтальным подменю
отличные ответы я получил на вопрос, который опубликовал ранее( появляются при наведении курсора и остаются видимыми ). Было очень сложно редактировать css и html, потому что я просто скопировал и…
Горизонтальное подменю вертикальное меню с помощью Bootstrap
Есть ли способ создать горизонтальное подменю для вертикальной структуры меню с помощью bootstrap я не видел ни одного подменю с вертикальной ориентацией главного меню. Примерная структура структуры…
Выпадающее меню на CSS . Горизонтальное выпадающее меню
Перед написанием стилей для выпадающего меню необходимо создать структуру HTML документа. Данная структура будет представлять из себя обычный скелет сайта с добавленными тегами для меню. Меню будем создавать используя списки <UL> или <OL>.
Итак приступим к написанию основной структуры сайта
<!DOCTYPE html> <html> <head> <title> Выпадающее меню на CSS </title> </head> <body> </body>
После того как написали основную структуру сайта необходимо создать структуру нашего меню. Для начала создадим меню верхнего уровня с помощью тегов <NAV> и <UL>
<nav> <ul> <li><a href='#'>Главная</a></li> <li><a href='#'>HTML</a></li> <li><a href='#'>CSS</a></li> <li><a href='#'>PHP</a></li> <li><a href='#'>JavaScript</a></li> </ul> </nav>
Меню верхнего уровня у нас создано. Теперь необходимо назначить стили для элементов меню.
nav { margin: 50px 0; bacground-color: #E94f56; } nav ul { padding: 0; margin: 0; list-style: none; position: relative; } nav ul li { margin: 0px -7px 0 0; display: inline-block; background-color: #E94f56; } nav a { display: block; padding: 0 10px; color: #ffff; font-size: 23px; line-height: 60px; text-decoration: none; } nav a:hover { backgroung-color: #000001; }
Проверим то что у нас получилось.
Теперь наше меню выглядит как меню. Теперь нам необходимо создать вложенное меню. Его мы создаем путем добавления внутрь тега <LI> еще одного списка <UL>. То есть у нас получается список в списке. Создадим структуру с вложенным меню.
<nav> <ul> <li><a href='#'>Главная</a></li> <li><a href='#'>HTML</a> <ul> <li><a href='#'>История HTML</a></li> <li><a href='#'>Структура HTML</a></li> <li><a href='#'>HTML5</a></li> </ul> </li> <li><a href='#'>CSS</a></li> <li><a href='#'>PHP</a></li> <li><a href='#'>JavaScript</a></li> </ul> </nav>
Теперь нужно добавить стили к вложенному меню. Для создания выпадающего меню необходимо задать вложенному списку абсолютное позиционирование и смещение от основного меню.
nav ul ul { display: none; position: absolute; top100%; } nav ul li:hover>ul { display: inherit; } nav ul ul li { min-width: 180px; float: none; display:list-item; position: relative; }
Должно получиться следующее
Добавим для пункта меню с вложенным подменю соответствующий индикатор.
li> a:after {content: '+'} li> a:only-child:after {content:'';}
В итоге у нас получилось следующее
Как сделать горизонтальное меню на 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;
}
Горизонтально выпадающее меню css
Создать простое горизантальное меню на CSS не сложно, а довольно просто, нам не потребуется даже использовать JavaScript. Делается это очень просто, поэтому давайте сразу же перейдём к коду.
HTML
1. Создадим разметку кода в html. Дадим меню уникальный id.
CSS
Разметка готова, теперь добавим стили-CSS для неё, не забываем указывать нужное id.
#menu { padding: 0; margin: 0; font-size: 100%; font-family: Georgia; } #menu li { list-style: none; float: left; height: 33px; padding: 0; margin: 0; width: 150px; text-align: center; background: #171717; position: relative; padding-top: 12px; } #menu li ul { list-style: none; padding: 0; margin: 0; width: 150px; display: none; position: absolute; left: 0; top: 45px; } #menu li ul li { float: none; height: 33px; margin: 0; width: 150px; text-align: center; background: #7F7F7F; } #menu li a { display: block; width: 150px; height: 33px; color: #fff; text-decoration: none; } #menu li:hover ul, #menu li:hover ul { display: block; } #menu li:hover, #menu li:hover { background: #424242; }
Просто вставьте этот код и меню будет работать.
Демонстрация:
Вот так просто и создаётся меню, достаточно просто скопировать код и вы увидите такой результат.
CSS меню. Выпадающее меню. Горизонтальное CSS меню. Вертикальное CSS меню.
Здравствуйте, уважаемые посетители моего скромного блога для начинающих вебразработчиков и web мастеров ZametkiNaPolyah.ru. Я решил создать новую рубрику Создание и оформление сайтов, в этой рубрике будет много вкусного и интересного. Поскольку, здесь я буду писать о реальных примерах. Тема сегодняшней публикации — создание CSS меню, которая находится в разделе CSS меню.
Любое CSS меню должно отвечать нескольким требованиям: CSS меню должно быть удобным, компактным, доступным для пользователя. Чтобы меню сайта было компактным и удобным его следует делать выпадающим. Конечно, выпадающее CSS меню не будет корректно работать в старых браузерах таких как IE6. Выпадающее меню удобно тем, что не занимает много места на веб-странице. В данном примере не будет использоваться JavaScript и библиотека JQuery — а это означает, что выпадающее меню будет доступно для пользователей, у которых в настройках браузера отключены скрипты.
И так, сегодня мы создадим горизонтальную навигацию по сайту и вертикальную навигацию, при этом мы будем использовать только HTML и CSS.
Создание CSS меню. Создание выпадающего меню. Шаг 1 — создаем вертикальное HTML меню.
Содержание статьи:
Для начала мы создаем маркированный HTML список при помощи тега <ul> и тега <li>:
<!DOCTYPE HTML PUBLIC «-//W3C//DTD HTML 4.01 Transitional//EN» «http://www.w3.org/TR/html4/loose.dtd»> <html> <head> <meta http-equiv=»Content-Type» content=»text/html; charset=utf-8″> <title>Создание CSS меню</title> </head> <body> <span><span><> </span></span><ul> <li>Первый пункт</li> <li>Второй пункт <ul> <li>Первый подпункт</li> <li>Второй подпункт</li> </ul> </li> <li>Третий пункт <ul> <li>Первый подпункт</li> <li>Второй подпункт</li> <li>Третий подпункт</li> </ul> </li> <li>Четвертый пункт</li> </ul> </body> </html>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<!DOCTYPE HTML PUBLIC «-//W3C//DTD HTML 4. <html> <head> <meta http-equiv=»Content-Type» content=»text/html; charset=utf-8″> <title>Создание CSS меню</title> </head> <body> <span><span><> </span></span><ul> <li>Первый пункт</li> <li>Второй пункт <ul> <li>Первый подпункт</li> <li>Второй подпункт</li> </ul> </li> <li>Третий пункт <ul> <li>Первый подпункт</li> <li>Второй подпункт</li> <li>Третий подпункт</li> </ul> </li> <li>Четвертый пункт</li> </ul> </body>
</html> |
Примерно должно получиться что-то типа такого списка:
- Первый пункт
- Второй пункт
- Первый подпункт
- Второй подпункт
- Третий пункт
- Первый подпункт
- Второй подпункт
- Третий подпункт
- Четвертый пункт
Конечно, это еще не меню и даже не навигация, поскольку ни один из пунктов HTML списка не является ссылкой. Теперь нужно сделать каждый пункт нашего HTML списка ссылкой. Таким образом, у нас получится вертикальное HTML меню, таблицу стилей (css) мы еще пока не будем трогать и подключать. Чтобы пункты HTML списка стали ссылками, содержимое каждого элемента <li> внутрь тега <a>:
<!DOCTYPE HTML PUBLIC «-//W3C//DTD HTML 4.01 Transitional//EN» «http://www.w3.org/TR/html4/loose.dtd»> <html> <head> <meta http-equiv=»Content-Type» content=»text/html; charset=utf-8″> <title>Создание CSS меню</title> </head> <body> div> <ul> <li><a href=»#»>Первый пункт</a></li> <li><a href=»#»>Второй пункт</a> <ul> <li><a href=»#»>Первый </a></li> <li><a href=»#»>Второй </a></li> <li><a href=»#»>Третий </a></li> </ul> </li> <li><a href=»#»>Третий пункт</a> <ul> <li><a href=»#»>Первый подпункт</a></li> <li><a href=»#»>Второй подпункт</a></li> </ul> </li> <li><a href=»#»>Четвертый пункт</a></li> </ul> <div> </body> </html>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<!DOCTYPE HTML PUBLIC «-//W3C//DTD HTML 4. <html> <head> <meta http-equiv=»Content-Type» content=»text/html; charset=utf-8″> <title>Создание CSS меню</title> </head> <body> div> <ul> <li><a href=»#»>Первый пункт</a></li> <li><a href=»#»>Второй пункт</a> <ul> <li><a href=»#»>Первый </a></li> <li><a href=»#»>Второй </a></li> <li><a href=»#»>Третий </a></li> </ul> </li> <li><a href=»#»>Третий пункт</a> <ul> <li><a href=»#»>Первый подпункт</a></li> <li><a href=»#»>Второй подпункт</a></li> </ul> </li> <li><a href=»#»>Четвертый пункт</a></li> </ul> <div> </body>
</html> |
Теперь мы получили вертикальное HTML меню. У тега <a> есть атрибут href, в котором следует указывать адрес страницы, на который будет вести ссылка, у меня нет необходимости этого делать, поэтому в качестве адреса я указал символ # или забой. Ссылки, у которых в качестве значения атрибута href указан #, никуда не ведут. Обратите внимание: вертикальной HTML меню я поместил в контейнер <div>, поскольку в спецификации HTML 4 есть правило: внутри элемента <body> могут находиться только блочные элементы и элементы <ins> и <del>. У тега <div> есть один атрибут id со значением «block». У корневого тега <ul> есть атрибут id со значением «hnav», этот атрибут потребуется нам для создания вертикального и горизонтального CSS меню.
Создание CSS меню. Выпадающее меню. Шаг 2 — создаем горизонтальное CSS меню.
Далее мы будем задавать стили CSS для нашего будущего меню. Для начала, давайте зададим стиль для контейнера <ul> со значением hnav атрибута id, то есть общий стиль для нашего выпадающего меню:
#hnav { list-style: none; margin: 0; padding: 0; font-size: 1.2em; float: right; position: relative }
#hnav { list-style: none; margin: 0; padding: 0; font-size: 1.2em; float: right; position: relative
} |
Давайте коротко пройдемся по CSS свойствам и посмотри для чего они нужны. Первое CSS свойство, которое было задано list-style со значением none, данное свойство позволяет избавиться от мерзких маркеров HTML списка, но только для родительских пунктов вертикального меню, у дочерних HTML элементов маркеры останутся.
Свойство margin делает нулевым отступ от края элемента ul. Свойство paddin убирает внутренние отступы HTML элемента ul. Свойство font-size задает размер текста пунктов нашего CSS меню. Свойство float позволяет выравнять CSS меню, в нашем случае по правому краю. Свойство position со значение relative позиционирует контейнер ul относительно его исходного места.
После того, как мы задали общий стиль для нашего горизонтального меню, можно задать стили для всех родительских пунктов навигации:
#hnav li { float: left; position: relative; }
#hnav li {
float: left;
position: relative;
} |
Для каждого элемента li, которые находятся внутри контейнера ul мы задаем два свойства: float со значением left (тем самым мы добиваемся того, что наше CSS меню стало горизонтальным) и опять же, задаем свойство position со значением relative, чтобы элементы заняли свое место.
Теперь мы можем задать стили, для содержимого контейнеров li, то есть стили для пунктов горизонтального CSS меню:
#hnav li a{ float: left; display: block; padding: 4px; text-decoration: none; color: #666; text-transform: uppercase; margin-right: 10px; }
#hnav li a{ float: left; display: block; padding: 4px; text-decoration: none; color: #666; text-transform: uppercase; margin-right: 10px; } |
Свойство display имеет значение block, это говорит нам о том, что пункты нашего CSS меню будут вести себя как блочные (в данном случае контейнеры <a>, тег <a> сам по себе строчный элемент). Свойство padding устанавливает внутренние отступы между пунктами меню, чтобы те не накладывались друг на друга. Значение none свойства text-decoration позволяет убрать подчеркивание у ссылок(меню же из ссылок состоит). Свойство color задает цвет текста внутри контейнера <a>. Свойство text-transform: uppercase; задает начертание текста нашего CSS меню, а именно, весь текст будет написан прописными буквами.
Теперь можно задать то, как будут выглядеть пункты меню при наведение на них курсора мышки:
#hnav li:hover a, #hnav li a:hover { background: #999; color: #fff; }
#hnav li:hover a, #hnav li a:hover { background: #999; color: #fff; } |
Свойство color изменяет цвет текста пункта меню при наведение на него курсора мыши. Свойство background задает цвет фона пункта CSS меню при наведение курсора на пункт.
Теперь мы можем «спрятать» вложенные пункты меню:
#hnav ul {display: none;}
#hnav ul {display: none;} |
После того, как мы «спрятали» пункты выпадающего меню, нужно сделать так, чтобы эти пункты выпадали при наведение курсора:
#hnav li:hover ul {display: block;}
#hnav ul
{
float: none;
position: absolute;
list-style: none;
margin: 0;
padding: 0;
top: 1. 8em;
left: 0;
}
#hnav ul li
{
float: none;
clear: none;
margin: 0;
padding: 0;
width: auto;
color: #999;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#hnav li:hover ul {display: block;}
#hnav ul { float: none; position: absolute; list-style: none; margin: 0; padding: 0; top: 1.8em; left: 0; }
#hnav ul li { float: none; clear: none; margin: 0; padding: 0; width: auto; color: #999; } |
В данном случае мы добились того, что вложенные пункты меню выпадают и немного оформили наше меню, сделали его более читабельным.
После того, как мы задали стили для основных пунктов горизонтального меню, можно задать стили и для вложенных пунктов меню, задать то, как будут выглядеть вложенные пункты меню, как они будут изменяться при наведение на них курсора мыши и то, как будут выглядеть посещенные пункты:
#hnav li:hover ul li a, #hnav ul li a { line-height: 200%; display: block; padding: 0 6px 0 0; float: none; text-transform: lowercase; color: #999; background: none; } #hnav li:hover ul li a:hover, #hnav ul li a:hover { background: none; color: #000; } <span>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#hnav li:hover ul li a, #hnav ul li a { line-height: 200%; display: block; padding: 0 6px 0 0; float: none; text-transform: lowercase; color: #999; background: none; }
#hnav li:hover ul li a:hover, #hnav ul li a:hover { background: none; color: #000; }
<span> |
Как видите, мы создали горизонтальное выпадающее CSS меню, при этом, не используя JavaScript. Можно перейти к созданию вертикального CSS меню.
Так будет выглядеть горизонтальное выпадающее CSS меню:
Горизонтальное CSS меню. Выпадающее CSS меню.
Создание CSS меню. Выпадающее меню. Шаг 3 — создаем вертикальное CSS меню.
Приступим к созданию вертикального CSS меню. Для начала создаем маркированный HTML список, точно такой же, как и для горизонтального меню:
<!DOCTYPE HTML PUBLIC «-//W3C//DTD HTML 4.01 Transitional//EN» «http://www.w3.org/TR/html4/loose.dtd»> <html> <head> <meta http-equiv=»Content-Type» content=»text/html; charset=utf-8″> <title>Создание CSS меню</title> </head> <body> div> <ul> <li><a href=»#»>Первый пункт</a></li> <li><a href=»#»>Второй пункт</a> <ul> <li><a href=»#»>Первый </a></li> <li><a href=»#»>Второй </a></li> <li><a href=»#»>Третий </a></li> </ul> </li> <li><a href=»#»>Третий пункт</a> <ul> <li><a href=»#»>Первый подпункт</a></li> <li><a href=»#»>Второй подпункт</a></li> </ul> </li> <li><a href=»#»>Четвертый пункт</a></li> </ul> <div> </body> </html> <span>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<!DOCTYPE HTML PUBLIC «-//W3C//DTD HTML 4.01 Transitional//EN» «http://www.w3. <html> <head> <meta http-equiv=»Content-Type» content=»text/html; charset=utf-8″> <title>Создание CSS меню</title> </head> <body> div> <ul> <li><a href=»#»>Первый пункт</a></li> <li><a href=»#»>Второй пункт</a> <ul> <li><a href=»#»>Первый </a></li> <li><a href=»#»>Второй </a></li> <li><a href=»#»>Третий </a></li> </ul> </li> <li><a href=»#»>Третий пункт</a> <ul> <li><a href=»#»>Первый подпункт</a></li> <li><a href=»#»>Второй подпункт</a></li> </ul> </li> <li><a href=»#»>Четвертый пункт</a></li> </ul> <div> </body>
</html>
<span> |
Разница только в имени идентификатора для корневого элемента списка <ul>, поскольку для вертикального и горизонтального меню у меня находятся в одном файле.
Теперь можно задать общие стили для отображения CSS меню:
#vnav { width: 400px; float: left; list-style: none; margin: 0; padding: 0; font-size: 1.2em; }
#vnav { width: 400px; float: left; list-style: none; margin: 0; padding: 0; font-size: 1.2em; } |
Единственным отличием от горизонтального меню является то, что мы задаем ширину нашего меню, которая равна 400 пикселов, при помощи свойства width.
Далее задаем стили для всех пунктов HTML списка:
#vnav li { clear: both; height: 2em; }
#vnav li { clear: both; height: 2em; } |
Свойство height задает высоту элементов CSS меню, clear запрещает обтекание вокруг HTML элемента, значение both говорит о том, что ни с левой, ни с правой стороны наше вертикальное меню не будет обтекания.
Теперь мы задаем то, как будут выглядеть родительские пункты вертикального меню, конечно этот стиль будет применен и для подпунктов, но в дальнейшем для них мы зададим свой стиль отображения:
#vnav li a { float: left; display: block; padding: 4px; text-decoration: none; color: #666; text-transform: uppercase; margin-bottom: 5px; margin-right: 10px; }
#vnav li a { float: left; display: block; padding: 4px; text-decoration: none; color: #666; text-transform: uppercase; margin-bottom: 5px; margin-right: 10px; } |
В принципе, стиль отображения пунктов вертикального CSS меню не отличается от стиля для горизонтального меню.
Теперь мы задаем то, как будут отображаться родительские элементы вертикального CSS меню при наведение на них курсора мыши:
#vnav li:hover a, #vnav li a:hover { background: #999; color: #fff; }
#vnav li:hover a, #vnav li a:hover { background: #999; color: #fff; } |
Теперь мы должны сделать подпункты вертикального CSS меню невидимыми:
#vnav ul {display: none;}
#vnav ul {display: none;} |
После чего следует задать CSS правила, по которым подпункты меню будут выпадать при наведение курсора на родительский элемент:
#vnav li:hover ul {display: block;}
#vnav li:hover ul {display: block;} |
Теперь нужно сделать так, чтобы список подпунктов нашего CSS меню отображался справа от своих родительских элементов, сразу же избавляемся от мерзких маркеров HTML списка:
#hnav ul { list-style: none; float: left; margin: 0; padding: 4px 8px; }
#hnav ul { list-style: none; float: left; margin: 0; padding: 4px 8px; } |
Но мы еще не достигли того, чтобы список подпунктов меню отображался горизонтально, давайте зададим соответствующие CSS правила:
#hnav ul li { float: left; clear: none; margin: 0; padding: 0; width: auto; height: auto; color: #999; }
#hnav ul li { float: left; clear: none; margin: 0; padding: 0; width: auto; height: auto; color: #999; } |
Свойство float: left делает отображение подпунктов меню в линию.
А теперь немного изменим стили для подпунктов, зададим CSS правила для отображения подпунктов меню, то, как они будут отображаться при наведение на них курсора мышки:
#hnav li:hover ul li a, #hnav ul li a { display: inline; padding: 0 6px 0 0; float: none; text-transform: lowercase; color: #999; background: none; } #hnav li:hover ul li a:hover, #hnav ul li a:hover { background: none; color: #000; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#hnav li:hover ul li a, #hnav ul li a { display: inline; padding: 0 6px 0 0; float: none; text-transform: lowercase; color: #999; background: none; }
#hnav li:hover ul li a:hover, #hnav ul li a:hover { background: none; color: #000; } |
Вот так будет выглядеть вертикальное выпадающее CSS меню, которое мы только что создали:
Вертикальное CSS меню. Выпадающее CSS меню.
Исходные коды примеров вы можете скачать на публичных страницах вконтакте: раз и два.
На этом всё, спасибо за внимание, надеюсь, что был хоть чем-то полезен и до скорых встреч на страницах блога для начинающих вебразработчиков и вебмастеров ZametkiNaPolyah.ru. Не забываем комментировать и делиться с друзьями;)
Выпадающее горизонтальное меню на css
Для того, чтобы использовать выпадающее горизонтальное меню, достаточно скопировать его html-код в нужное место на вашей странице, и добавить css в ваш файл стилей.
<ul>
<li><a href=»#»>Меню 1</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=»#»>Меню 2</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=»#»>Меню 3</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=»#»>Меню 4</a></li>
<li><a href=»#»>Меню 5</a></li>
</ul>
Работоспособность данной конструкции проверена в трех основных браузерах: Mozilla Firefox, Opera, и Internet Explorer.
Этот CSS проходит проверку по стандарту CSS3 !
* {
margin:0;
padding:0;
}
#nav {
font:13px verdana, arial, helvetica, sans-serif;
list-style-type:none;
width:100%;
height:25px;
display:inline-block;
background:#A39E92;
line-height:25px;
}
#nav li{
float:left;
width:120px;
margin-top:-10000px;
}
#nav li a {
width:120px;
text-decoration:none;
text-align:center;
color:#3A3732;
position:relative;
float:left;
margin-right:-119px;
margin-top:10000px;
}
#nav li a:hover, #nav li a:focus, #nav li a:active {
background:#797466;
margin-right:0;
color:#fff;
}
#nav li ul {
background:#A39E92;
float:left;
margin-top:-25px;
padding-top:25px;
margin-bottom:-10000px;
list-style-type:none;
}
#nav li ul li {
float:none;
margin:0;
width:auto;
}
#nav li ul li a {
float:none;
display:block;
margin:0;
margin-right:-1px;
background:#BFBCB5;
}
Скачать выпадающее горизонтальное меню
Иногда работающие в IE и Firefox’е стили, неработают или работают не корректно в Oper’е и наоборот, перед тем как применить «рецепт» проверяйте его работу в разных браузерах.
CSS: создание горизонтального меню | СХОСТ блог
Для того, чтобы создать горизонтальное меню, вам нужно добавить в HTML-документ блок <div> с нумерованным списком внутри. При этом одному из пунктов необходимо присвоить id. Уточним, что символ “#” означает адрес ссылки. Например:
<html>
<head>
<meta charset=»utf-8″>
<title>Горизонтальное меню</title>
<link rel=»stylesheet» type=»text/css» href=»style.css»>
</head>
<body>
<div>
<ul>
<li><a href=»#»>О компании</a></li>
<li><a href=»#»>Продукция</a></li>
<li><a href=»#»>Каталог товаров</a></li>
<li><a href=»#»>Видеогалерея</a></li>
<li><a href=»#»>Контакты</a></li>
</ul>
</div>
</body>
</html>
Поле этого нужно сделать несколько действий:
#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%;
}
Горизонтальное меню в браузере:
html — элементы горизонтального списка
html — элементы горизонтального списка — qaru Присоединяйтесь к Stack Overflow , чтобы учиться, делиться знаниями и строить свою карьеру.
Спросил
Просмотрено 163к раз
Итак, я попытался создать горизонтальный список для использования на новом веб-сайте, который я разрабатываю.Я попробовал ряд предложений, уже найденных в Интернете, таких как установка «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,78077 золотых знаков3131 серебряный знак4141 бронзовый знак
Создан 29 мар.
Я заметил, что многие люди используют этот ответ, поэтому решил немного обновить его.Если вы хотите увидеть исходный ответ, проверьте ниже. Новый ответ демонстрирует, как можно добавить стиль в свой список.
ul> li {
дисплей: встроенный блок;
/ * Вы также можете добавить сюда поля, чтобы он выглядел красивее * /
масштабирование: 1;
* дисплей: встроенный;
/ * это исправление необходимо для IE7- * /
}
Яниш5,935 44 золотых знака3030 серебряных знаков6262 бронзовых знака
Создан 29 мар.
4 Намного лучше использовать inline-block
, потому что вам больше не нужно использовать clear: оба
в конце вашего списка.
Попробуйте это:
CSS:
ul> li {
дисплей: встроенный блок;
}
Посмотрите здесь: http://jsfiddle.net/shahverdy/4N6Ap/
Создан 29 мар.
2,94711 золотых знаков2626 серебряных знаков4848 бронзовых знаков
Вы также можете использовать встроенные блоки, чтобы избежать плавающих элементов
, а затем стиль:
li {
/ * с исправлением для IE * /
дисплей: встроенный;
дисплей: встроенный блок;
масштабирование: 1;
/ *
дополнительные стили, чтобы он выглядел красиво
* /
}
, так что вам не нужно ничего плавать, устраняя необходимость в clearfixes
Создан 29 мар.
Джейми18966 бронзовых знаков
2Здесь вы можете найти рабочий пример с дополнительными предложениями по динамическому изменению размера списка.
Я использовал 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 бронзовых знаков
Я думаю, что простое решение, которое я нашел, ниже
ul {
дисплей: гибкий;
}
Создан 20 ноя.
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками html css или задайте свой вопрос.
lang-html
Stack Overflow лучше всего работает с включенным JavaScriptВаша конфиденциальность
Нажимая «Принять все файлы cookie», вы соглашаетесь с тем, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Принимать все файлы cookie Настроить параметры
Как создать горизонтальное меню навигации с помощью CSS
В этом разделе вы узнаете, как создать горизонтальное меню навигации.
- Начните со следующего HTML-документа, содержащего неупорядоченный список:
Горизонтальное меню навигации <основной> <заголовок>Горизонтальное меню навигации
- Создайте файл для внешней таблицы стилей и создайте ссылку на него из HTML, используя следующий тег:
- Внутри таблицы стилей начните с удаления стиля списка по умолчанию:
ол, ул { стиль списка: нет; }
- Установите ширину и поля меню:
#mainMenu { маржа: 10 пикселей; ширина: 900 пикселей; семейство шрифтов: без засечек; }
- Установите элементы списка для отображения в виде блоков, задайте им ширину и переместите их влево, чтобы они
каждый дисплей справа от предыдущего элемента.
#mainMenu li { дисплей: блок; ширина: 120 пикселей; плыть налево; маржа слева: 2 пикселя; граница: 1px solid # 000; }
- Измените элементы
и
на элементы блока. Мы также добавим несколько стилей форматирования и удалите подчеркивание с помощьюtext-decoration: none
.#mainMenu a { дисплей: блок; отступ: 3 пикселя; текстовое оформление: нет; цвет фона: #fff; цвет: # 009; }
- Наконец, измените состояние наведения указателя на ссылки, чтобы они выделялись, когда на них указывает пользователь.
#mainMenu a: hover { цвет фона: # 009; цвет: #fff; }
- Готовый CSS должен выглядеть следующим образом:
#главное меню { маржа: 10 пикселей; ширина: 900 пикселей; семейство шрифтов: без засечек; } #mainMenu li { дисплей: блок; ширина: 120 пикселей; плыть налево; маржа слева: 2 пикселя; граница: 1px solid # 000; } #mainMenu a { дисплей: блок; отступ: 3 пикселя; текстовое оформление: нет; цвет фона: #fff; цвет: # 009; } #mainMenu a: hover { цвет фона: # 009; цвет: #fff; }
Автор: Крис Минник
Крис Минник, соучредитель WatzThis ?, курировал разработку сотен веб- и мобильных проектов для клиентов, от малого бизнеса до некоторых крупнейших компаний мира. Плодотворный писатель, Крис является автором и соавтором книг и статей по широкому кругу тем, связанных с Интернетом, включая HTML, CSS, мобильные приложения, электронную коммерцию, электронный бизнес, веб-дизайн, XML и серверы приложений.Его опубликованные книги включают «Приключения в кодировании», «JavaScript для детей для чайников», «Написание компьютерного кода», «Кодирование с помощью JavaScript для чайников», «Начало HTML5» и «CSS3 для чайников», «Webkit для чайников», «Библия для сертификации дизайнеров электронной коммерции CIW» и XHTML.
О Webucator
Webucator проводит обучение под руководством инструктора для студентов из США и Канады.Мы обучили более 90 000 студентов из более чем 16 000 организаций таким технологиям, как Microsoft ASP.NET, Microsoft Office, Azure, Windows, Java, Adobe, Python, SQL, JavaScript, Angular и многим другим. Ознакомьтесь с нашим полным каталогом курсов.
Создание центрированной горизонтальной навигации — CSS Wizardry — Оптимизация веб-производительности
Написано Гарри Робертсом на CSS Wizardry .
Содержание- Демо
- Обновление
Центрировать элементы уровня блока легко, просто определите ширину и установите margin: 0 auto;
, г.
но что, если вы не знаете эту фиксированную ширину? Вы можете использовать text-align: center;
но это не сработает и для блочных элементов со 100% шириной …
работать с элементами текстового уровня.
По возможности всегда следует избегать явного определения ширины и высоты,
так как это сделает документ менее ориентированным на будущее, гибким и
расширяемый … Предположим, у вас есть четыре пункта в меню навигации — вы можете работать
вне их ширины и используйте поле : 0 auto;
, чтобы отцентрировать их.Добавление пятого
увеличит ширину, а это значит, что вам также придется изменить CSS. Это далеко
от идеала, и более того, с помощью CMS для управления сайтом (клиент может добавлять страницы,
но, возможно, не может редактировать CSS).
Однако есть способ иметь центрированную горизонтальную навигацию без указания явной ширины и без добавления CSS. Это также замечательно просто.
В разметке:
Довольно стандартный, неупорядоченный список пунктов меню.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 позволит встроенному блоку
работать с элементами, которые по своей сути
встроенные элементы. Дисплей : строчно-блочный;
не будет работать с элементами блочного уровня.
Вот небольшая демонстрация. Попробуйте использовать Firebug или подобное, чтобы добавить другие элементы списка на лету и наблюдайте, как они плавно центрируются в списке. я протестировали это в IE7-8, чтобы убедиться, что он отлично работает. Я не проверял IE6, но Думаю, все будет хорошо.
Обновление
Вы спросили, и я услышал; Я сделал раскрывающуюся версию этого
для тебя.По строке верх: 100%;
заставит раскрывающийся список работать в IE7, но вроде как
немного портит опыт во всех других браузерах. Оставляете ли вы его в или
не зависит от вас. Опять же, просмотрите исходный код с практическими рекомендациями…
☕️ Это помогло? Купи мне кофе!
Простая горизонтальная навигация | CSS-фрагменты
Примечание: Этот пост был написан более трех лет назад, а это были годы веб-разработки, то есть вечность. Я переделал фрагмент, чтобы использовать лучший CSS.
В этом уроке я исследую два разных метода горизонтальной навигации на больших экранах. Фрагмент адаптивный. Он создаст вертикальное меню на маленьких экранах и горизонтальное меню на больших экранах.
См. Pen Simple Responsive Horizontal Navigation от Лизы (@lisa_c) на CodePen.
Предпочитаемый метод обучения?
Фрагменты кода
Если вам просто нужен код и не нужно описание.
Просмотр видео
Если вам нравится, как что-то работает, с пояснением, посмотрите видео.
Чтение описания
Если вы научитесь лучше читать, я включаю расшифровку видео с соответствующими встроенными фрагментами кода.
Только код
См. Простую адаптивную горизонтальную навигацию Pen от Лизы (@lisa_c) на CodePen.
См. Простую адаптивную горизонтальную навигацию Pen от Лизы (@lisa_c) на CodePen.
Видео
Выписка
Начнем с HTML.У меня простой неупорядоченный список ссылок. Каждый элемент списка имеет имя класса, связанное с его именем.
Я буду использовать подход, ориентированный на мобильные устройства, и начну оформлять этот список как вертикальную навигацию, чтобы он хорошо смотрелся на телефонах и планшетах меньшего размера.
Я убираю поля и отступы и сначала задаю цвет фона для тела.
кузов {
маржа: 0;
отступ: 0;
фон: #ccc;
}
Затем я задам стиль для списка, чтобы удалить маркеры и присвоить ему цвет фона. Я хочу, чтобы текст был по центру. Он еще не выглядит идеально центрированным, но если я удалю прокладку, оно будет. Очистка поля заставит его охватить верхнюю часть страницы, которую я хочу.
Я нацелен на ul
внутри .nav
, потому что мне, вероятно, нужен другой стиль для неупорядоченных списков без навигации.
.nav ul {
стиль списка: нет;
цвет фона: # 444;
выравнивание текста: центр;
отступ: 0;
маржа: 0;
}
В элементах списка внутри nav ( .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
.
Я хочу изменить курсор : по умолчанию;
, поэтому не похоже, что нажатие на эту ссылку ни к чему не приведет.
Итак, все работает нормально, и это будет хорошо смотреться на телефоне. Однако на более широком экране это выглядит странно.
Когда экран больше 600 пикселей, я хочу переключиться на горизонтальную навигацию, так что это будет моя точка останова.
Все, что меньше 600 пикселей, будет отображать навигацию по вертикали, а все с большим разрешением — по горизонтали.
Я могу добавить медиа-запрос.
@media screen и (min-width: 600px) {
}
Затем я могу настроить таргетинг на .nav li
внутри медиа-запроса. Поэтому на экране шириной не менее 600 пикселей он будет использовать этот код:
.nav li {
ширина: 120 пикселей;
нижняя граница: нет;
высота: 50 пикселей;
высота строки: 50 пикселей;
размер шрифта: 1.4em;
}
Я делаю каждый пункт меню шириной 120 пикселей, так как здесь 5 элементов, а 5 * 120 — 600. Я удаляю границу и увеличиваю текст меню и панель.
Если мы немного сдвинем область просмотра, то увидим, как она изменится.
Теперь у нас есть два варианта сделать это горизонтальным. Один вариант — отобразить элементы списка как
inline-block
, а другой вариант — использовать числа с плавающей запятой. Первый способ проще, но у вас может быть причина использовать числа с плавающей запятой, поэтому я объясню оба варианта.Любой из вариантов будет работать в IE8, однако IE8 не распознает медиа-запрос. Позже нам нужно будет скопировать этот код в таблицу стилей только для IE8.
Несмотря на то, что я все еще нацелен на селектор .nav li
, я помещу другой код параметра за пределами этого первого выбора, чтобы я мог легко различать эти два варианта.
Если я добавлю
.nav li {
дисплей: встроенный блок;
}
навигация работает неплохо.У нас есть небольшая проблема шириной около 600 пикселей, когда последний пункт меню переходит на другую строку. Кроме того, если я наведу курсор на другие элементы, вы увидите, что у нас есть небольшой промежуток серого цвета. Это потому, что при использовании встроенного блока
вводится небольшой запас. Мы можем с этим справиться, добавив небольшую отрицательную маржу.
margin-right: -4px;
А теперь все отлично выглядит.
Итак, этот метод работает, и мы могли бы остановиться на этом.Я не уверен, есть ли у этого обратная сторона, но вам может понадобиться другой вариант и посмотреть, как будут работать поплавки.
.nav li {
плыть налево;
}
И это почти работает, но пропала серая полоса. Это связано с тем, что родительский элемент рухнул, когда дочерние элементы были выведены из потока путем их перемещения.
Если я включу выделение при предварительном просмотре, вы увидите каждый тег li
с его рамкой. Но тег ul — это всего лишь одна строка, которая означает, что она свернута.
Есть множество способов исправить это, и у меня есть целое видео, объясняющее все способы. В этом случае я просто добавлю
.
nav ul {
перелив: авто;
}
, который прост и будет работать.
Однако у нас есть новая проблема, и это то, что навигация больше не центрирована. В зависимости от вашего веб-сайта это может не быть проблемой. Но если мы хотим исправить это, мы можем добавить это:
ширина: 600 пикселей;
маржа: 0 авто;
, чтобы отцентрировать его.
И последнее изменение — сделать всю панель nav
темно-серым цветом, чтобы она расширялась.
Итак, метод inline-block намного меньше кода и проще. Но я подумал, что было бы полезно увидеть оба метода. Раньше я всегда использовал метод float
, и его правильное использование иногда вызывало головную боль.
Наконец, этот код хорошо работает во всех современных браузерах, включая IE9 и выше. Если бы мы посмотрели на это в IE8, мы бы увидели только вертикальную навигацию, подобную этой, независимо от ширины экрана, потому что IE8 не распознает медиа-запросы.
Чтобы заставить его работать в IE8, мы можем использовать условную таблицу стилей и добавить код, который мы только что добавили в наш медиа-запрос.
.nav li {
ширина: 120 пикселей;
нижняя граница: нет;
высота: 50 пикселей;
высота строки: 50 пикселей;
дисплей: встроенный блок;
маржа слева: -4px;
}
Это никогда не будет отображать вертикальную навигацию в браузерах IE, но маловероятно, что кто-либо, использующий IE, будет просматривать это на телефоне, так что все должно быть в порядке.
Если бы я сначала стилизовал горизонтальное меню, нам не понадобилась бы таблица стилей для IE. Я мог бы использовать max-width
вместо min-width
и изменить способ написания кода. Но я хотел использовать прежде всего мобильный подход. Код в итоге оказался проще, чем когда я изначально подходил к нему с большого экрана.
Надеюсь, это было полезно. Если у вас есть вопросы, напишите их на css-snippets.com.
Горизонтальное меню, подменю полной ширины · GitHub
Горизонтальное меню, подменю полной ширины · GitHubМгновенно делитесь кодом, заметками и фрагментами.
Горизонтальное меню, полноразмерное подменю
// css | |
#menu { | |
ширина: 960 пикселей; | |
высота: 40 пикселей; | |
ясно: оба; | |
} | |
ul # nav { | |
поплавок: левый; | |
ширина: 960 пикселей; | |
маржа: 0; | |
отступ: 0; | |
стиль списка: нет; | |
фон: # dc0000 url (../img/menu-parent.png) repeat-x; | |
-moz-border-radius-topright: 10px; | |
-webkit-border-top-right-radius: 10px; | |
-moz-border-radius-topleft: 10px; | |
-webkit-border-top-left-radius: 10px; | |
} | |
ul # nav li { | |
дисплей: встроенный; | |
} | |
ul # nav li a { | |
поплавок: левый; | |
шрифт: полужирный 1.![]() | |
высота строки: 40 пикселей; | |
цвет: #fff; | |
текст-украшение: нет; | |
тень текста: 1px 1px 1px # 880000; | |
маржа: 0; | |
отступ: 0 30 пикселей; | |
фон: # dc0000 url (../img/menu-parent.png) repeat-x; | |
-moz-border-radius-topright: 10px; | |
-webkit-border-top-right-radius: 10px; | |
-moz-border-radius-topleft: 10px; | |
-webkit-border-top-left-radius: 10px; | |
} | |
/ * ПРИМЕНИМО АКТИВНОЕ СОСТОЯНИЕ * / | |
ul # nav.current a, ul # nav li: hover> a { | |
цвет: #fff; | |
текст-украшение: нет; | |
тень текста: 1px 1px 1px # 330000; | |
фон: # bb0000; | |
-moz-border-radius-topright: 10px; | |
-webkit-border-top-right-radius: 10px; | |
-moz-border-radius-topleft: 10px; | |
-webkit-border-top-left-radius: 10px; | |
} | |
/ * СПИСОК ПОДМЕНЮ, СКРЫТЫЙ ПО УМОЛЧАНИЮ * / | |
ul # nav ul { | |
дисплей: нет; | |
} | |
/ * ПРИ ЗАКРЫТИИ ПУНКТА МЕНЮ ПЕРВОГО УРОВНЯ ПОЯВЛЯЕТСЯ ДЕТСКОЕ МЕНЮ * / | |
ul # nav li: hover> ul { | |
позиция: абсолютная; | |
дисплей: блочный; | |
ширина: 920 пикселей; | |
высота: 45 пикселей; | |
позиция: абсолютная; | |
поле: 40 пикселей 0 0 0; | |
фон: # aa0000 url (.![]() | |
-moz-border-radius-bottomright: 10px; | |
-webkit-border-bottom-right-radius: 10px; | |
-moz-border-radius-bottomleft: 10px; | |
-webkit-border-bottom-left-radius: 10px; | |
} | |
ul # nav li: hover> ul li a { | |
поплавок: левый; | |
шрифт: полужирный 1.1em arial, verdana, tahoma, sans-serif; | |
высота строки: 45 пикселей; | |
цвет: #fff; | |
текст-украшение: нет; | |
тень текста: 1px 1px 1px # 110000; | |
маржа: 0; | |
отступ: 0 30 пикселей 0 0; | |
фон: # aa0000 url (../img/menu-child.png) repeat-x; | |
} | |
ul # nav li: hover> ul li a: hover { | |
цвет: # 120000; | |
текст-украшение: нет; | |
тень текста: нет; | |
} |

CSS: фиксированные меню
CSS: фиксированные менюСм. Также указатель всех подсказок.
На этой странице:
Закрепленное меню
Меню, которое вы видите справа на этой странице, представляет собой просто список UL. Но это остается неизменным при прокрутке страницы. (Возможно, вам придется сделать окно меньше, чтобы сначала получить полосу прокрутки.) Всю работу сделать она остается на месте по правилам таблицы стилей. Здесь разметка меню, берется прямо из источника этого страница:
В браузере без CSS или с выключенным CSS он просто будет нормальный список со ссылками. Но с CSS, благодаря правилам ниже, он будет «плавать» вверху страницы и прикреплен к правая часть окна браузера:
#menu { положение: фиксированное; справа: 0; верх: 50%; ширина: 8em; margin-top: -2.5em; }
Интересным правилом здесь является «положение : фиксированное
», которое заставляет DIV оставаться фиксированным на экране. Топ ‘:
50%
‘и’ справа: 0
‘определяют, где DIV
в данном случае отображается: 50% вниз от верхнего края окна,
и константа 0px справа. Прочие свойства, наценки,
границы, цвета и т. д. могут быть добавлены в соответствии с личным вкусом.
Существуют также свойства left и bottom для привязки элемент слева или внизу экрана.
Подробнее
Точнее: после того, как элемент был зафиксирован с ‘ position: fixed
‘, три свойства ‘left’, ‘width’ и
«право» вместе определяют горизонтальное положение и размер,
относительно окна. (CSS использует более общее слово viewport; окно является примером области просмотра.)
Вам нужно не более двух из трех свойств, т.е. left & ширина, правая и ширина или левая и правая. Установка только одного из возможно также три или вообще ни одного.В этом случае CSS будет использовать естественный («внутренний») размер и / или положение элемента, как необходимо, для любых свойств, для которых оставлено значение по умолчанию (‘авто’).
То же самое относится к трио «верх», «высота» и «низ». Ты необходимо установить не более двух из них: ‘top’, если вы хотите контролировать расстояние от верхней части окна, «низ» для управления расстояние от низа и «высота», если вы хотите указать фиксированная высота.
Если вы посмотрите на настоящую таблицу стилей, встроенную в эту страницу, вы увидит некоторые дополнительные правила, которые противоречат каждому Другие.Они предназначены для защиты от ошибок в нескольких старых браузеры. См. ниже.
Часто задаваемые вопросы: IE 5 и 6 в Windows?
Если вы посмотрите эту страницу с помощью Microsoft Internet Explorer 5 или 6 в Windows («WinIE5» и «WinIE6») вы заметите, что это не Работа. Многие спрашивают меня об этом, поэтому вот небольшое объяснение. Вкратце: ошибка в браузере, а не на этой странице.
WinIE5 и WinIE6 не реализуют «фиксированный». Это прискорбно,
но большая проблема в том, что они также не разбирают «позицию»
собственность правильно.Браузер, который не знает «исправлено», должен
отбросьте правило «положение: зафиксировано» и вернитесь к тому, что
предыдущее значение ‘position’ в таблице стилей было. Тогда мы могли бы
добавьте ‘position: absolute’ непосредственно перед ‘fixed’ и браузером
использовал бы это. Но в WinIE 5 и 6 этого не происходит.
По-видимому, ключевое слово «фиксированный» каким-то образом интерпретируется как «статический».
Вы не можете сделать поддержку WinIE5 и 6 «фиксированной», но есть решение проблемы синтаксического анализа.Йоханнес Кох предупредил меня о этот трюк (из его коллекции обходных путей [страница на archive.org]). Первый замените ‘position: fixed’ в правилах стиля выше на ‘position: absolute’, а затем вставьте следующее правило в таблица стилей:
*> # intro {position: fixed}
В результате браузеры, которые знают о ‘>’ (дочерний) селектор CSS будет использовать это правило, но браузеры, которые не, в частности WinIE5 и WinIE6, проигнорирует его.Правило Вместо этого будет использоваться ‘position: absolute’, и меню будет в в нужном месте, за исключением того, что оно не останется неизменным, когда вы прокрутка.
Важно, чтобы вокруг символа «>» не было пробелов.
: элемент раздела навигации — HTML: язык разметки гипертекста
Элемент HTML представляет собой раздел страницы, целью которого является предоставление навигационных ссылок либо в текущем документе, либо в других документах.Типичными примерами разделов навигации являются меню, оглавления и указатели.
Исходный код этого интерактивного примера хранится в репозитории GitHub. Если вы хотите внести свой вклад в проект интерактивных примеров, клонируйте https://github.com/mdn/interactive-examples и отправьте нам запрос на перенос.
Исходный код этого интерактивного примера хранится в репозитории GitHub. Если вы хотите внести свой вклад в проект интерактивных примеров, клонируйте https: // github.com / mdn / interactive-examples и отправьте нам запрос на перенос.
- Необязательно, чтобы все ссылки содержались в элементе
.
предназначен только для основного блока навигационных ссылок; Обычно элемент
часто имеет список ссылок, которые не обязательно должны быть в элементе
.
- Документ может иметь несколько элементов
, например, один для навигации по сайту и один для навигации внутри страницы.
aria-labelledby
можно использовать в таком случае для повышения доступности, см. Пример. - Пользовательские агенты, такие как программы чтения с экрана, нацеленные на пользователей с ограниченными возможностями, могут использовать этот элемент, чтобы определить, следует ли пропустить начальную визуализацию содержимого, предназначенного только для навигации.
В этом примере блок используется для хранения неупорядоченного списка (
) ссылок. С соответствующим CSS это может быть представлено как боковая панель, панель навигации или раскрывающееся меню.
Семантика элемента nav
заключается в предоставлении ссылок. Однако элемент nav
не обязательно должен содержать список, он также может содержать другие типы контента. В этом блоке навигации ссылки представлены в прозе:
Leave a Comment