Выпадающее меню исчезает слишком быстро
У меня есть небольшой фрагмент кода, написанный в HTML и CSS, который создает выпадающее меню. При наведении курсора на кнопку «E» появится всплывающее меню. Однако меню исчезает слишком быстро, чтобы я мог получить к нему доступ. Есть ли способ сделать так, чтобы меню оставалось достаточно времени для того, чтобы я мог получить к нему доступ при наведении кнопки «E» ?
Вот код:
#topbar {
padding: 0px;
background: black;
height: 10%;
}
#e_button {
position: relative;
width: 40px;
height: 100%;
}
#zul_menu {
border: 1px black solid;
display: none;
position: absolute;
top: 80px;
//margin: 0;
//padding: 0px;
//overflow: hidden;
z-index: 1;
}
#e_button:hover~#zul_menu {
display: block;
}
html css<div> <p>Up...</p> </div> <div> <button>E</button> <ul> <li><a href="mainPage.php">Home</a></li> <li><a href="Cats.php"> Cats</a></li> <li><a href="Dogs.php">Dogs</a></li> <li><a href="#contact">Contact</a></li> </ul> </div> <div> <p>Down...</p> </div>
Поделиться Источник Orc2000 20 июня 2018 в 10:46
3 ответа
- css выпадающее меню исчезает за содержимым
На этой странице http://www.futureworkinstitute.com/2013/ я использую выпадающее меню отсюда http:/ / www.kriesi.at/archives/create-a-multilevel-dropdown-menu-with-css-and-improve-it-via-jquery/ но, как вы можете видеть, меню исчезает, как только оно покидает #navbar div.
- Выпадающее меню исчезает
Я довольно новичок в веб-дизайне и работаю над CSS способом создания выпадающего меню, которое изначально появляется при наведении родительского div. Однако, как только он будет виден, мне нужно, чтобы меню оставалось включенным до тех пор, пока мышь не будет перемещена со всего меню. Мне удалось…
3
Добавьте обертку div вокруг кнопки и выпадающего списка, сделайте ее относительной и добавьте стили к ее наведению.
#topbar { padding: 0px; background: black; height: 10%; } #e_button { width: 40px; height: 100%; } #zul_menu { border: 1px black solid; display: none; position: absolute; top: 2px; //margin: 0; //padding: 0px; //overflow: hidden; z-index: 1; } #button_wrapper { position: relative; display: inline-block; } #button_wrapper:hover #zul_menu { display: block; }
<div>
<p>Up...</p>
</div>
<div>
<div>
<button>E</button>
<ul>
<li><a href="mainPage.php">Home</a></li>
<li><a href="Cats.php"> Cats</a></li>
<li><a href="Dogs.php">Dogs</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</div>
</div>
<div>
<p>Down...</p>
</div>
Поделиться Nandita Sharma 20 июня 2018 в 10:50
1
скрыть с помощью анимации
используйте opacity
вместо display: none/block
Вы можете использовать opacity: 0;
, чтобы скрыть его, и transition: opacity 0.5s 1s;
, чтобы анимировать … :hover
, используйте opacity: 1;
и transition: opacity 0.5s;
#topbar {
padding: 0px;
background: black;
height: 10%;
}
#e_button {
position: relative;
width: 40px;
height: 100%;
}
#zul_menu {
border: 1px black solid;
opacity: 0;
transition: opacity 0.5s 1s;
position: absolute;
top: 80px;
//margin: 0;
//padding: 0px;
//overflow: hidden;
z-index: 1;
}
#e_button:hover~#zul_menu {
opacity: 1;
transition: opacity 0.5s;
}
<div> <p>Up...</p> </div> <div> <button>E</button> <ul> <li><a href="mainPage.php">Home</a></li> <li><a href="Cats.php"> Cats</a></li> <li><a href="Dogs.php">Dogs</a></li> <li><a href="#contact">Contact</a></li> </ul> </div> <div> <p>Down...</p> </div>
Поделиться לבני מלכה 20 июня 2018 в 10:51
- Выпадающее меню slideup идет слишком быстро
мое решение : Я использую это: http://www.kriesi.at/архивы/create-a-multilevel-dropdown-menu-with-css-and-improve-it-via-jquery А здесь на jsfiddle: http://jsfiddle.net/nBKZ9 / Спасибо вам, ребята, за вашу помощь! У меня есть это выпадающее меню, которое работает с этим маленьким кодом: $(…
- Выпадающее Меню Исчезает
Я создал выпадающее меню. Когда пользователь наводит курсор на навигационную кнопку, используя переходы CSS3, класс ‘dropdown-content’ исчезает, как показано в демо-версии ниже: https://jsfiddle.net/4xk78qse / Чего я не могу понять, так это как исчезнуть ‘dropdown-content’, когда пользователь не…
0
Ну, это немного странно, выпадающий список с таким запасом от триггера, но если вам это нравится, вы можете добиться этого, изменив свойство отображения на видимость и переход; также вам нужно будет добавить поведение # zul_menu:hover (поэтому, когда вы зависаете над выпадающим списком, он не будет закрываться):
#topbar { padding: 0px; background: black; height: 10%; } #e_button { position: relative; width: 40px; height: 100%; } #zul_menu { border: 1px black solid; visibility: hidden; position: absolute; top: 80px; z-index: 1; transition: all 1s; } #e_button:hover~#zul_menu, #zul_menu:hover { visibility: visible; }
<div>
<p>Up...</p>
</div>
<div>
<button>E</button>
<ul>
<li><a href="mainPage.php">Home</a></li>
<li><a href="Cats.php"> Cats</a></li>
<li><a href="Dogs.php">Dogs</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</div>
<div>
<p>Down...</p>
</div>
Поделиться Damià 20 июня 2018 в 11:00
Похожие вопросы:
Css меню исчезает слишком быстро, когда я перемещаю мышь
Вот моя проблема http://jsfiddle.net/yf4W8/4 / Когда я пытаюсь получить доступ к пунктам меню, меню исчезает слишком быстро. Как я могу решить ?
Выпадающее меню исчезает прежде чем я добираюсь до ссылок
Взгляните на ссылку тура в меню на этой странице . Когда я навожу курсор на Тур, он должен показать меню и позволить мне выбрать, на какое из подменю я хочу нажать, но оно исчезает слишком быстро….
CSS выпадающее меню исчезает под слайд-шоу
Я создаю сайт , Домашняя страница состоит из четырех дивов , первый содержит выпадающее меню , следующий содержит слайд-шоу , проблема в том , что когда я помещаю слайд-шоу на этот div, выпадающее…
css выпадающее меню исчезает за содержимым
На этой странице http://www.futureworkinstitute.com/2013/ я использую выпадающее меню отсюда http:/ / www.kriesi.at/archives/create-a-multilevel-dropdown-menu-with-css-and-improve-it-via-jquery/ но,…
Выпадающее меню исчезает
Я довольно новичок в веб-дизайне и работаю над CSS способом создания выпадающего меню, которое изначально появляется при наведении родительского div. Однако, как только он будет виден, мне нужно,…
Выпадающее меню slideup идет слишком быстро
мое решение : Я использую это: http://www.kriesi.at/архивы/create-a-multilevel-dropdown-menu-with-css-and-improve-it-via-jquery А здесь на jsfiddle: http://jsfiddle.net/nBKZ9 / Спасибо вам, ребята,…
Выпадающее Меню Исчезает
Я создал выпадающее меню. Когда пользователь наводит курсор на навигационную кнопку, используя переходы CSS3, класс ‘dropdown-content’ исчезает, как показано в демо-версии ниже:…
Навигационное меню SlideToggle исчезает слишком быстро
у меня есть эта функция slidetoggle: jQuery(document).ready(function(){ jQuery(.menu-trigger).click(function (){ jQuery(.nav-menu).slideToggle(400, function(){…
Сделать выпадающее меню исчезает
У меня есть код от W3schools, в котором мы получаем выпадающее меню после нажатия на кнопку. Выпадающее меню не исчезает, когда мы нажимаем в другом месте. Я немного серфил, но это кажется…
Меню наведения исчезает слишком быстро
У меня возникла проблема, я не знаю, в чем проблема с меню наведения, но оно исчезает слишком быстро <div> <li> <a…
Как сделать выпадающее меню списком?
Как вариант так:
HTML
<h2>Vertical Submenu</h2> <nav> <ul> <li><a href="#">Menu 1</a> <ul> <li><a href="#">Sub Menu 1</a></li> <li><a href="#">Sub Menu 2</a></li> <li><a href="#">Sub Menu 3</a></li> <li><a href="#">Sub Menu 4</a> <ul> <li><a href="#">Deep Menu 1</a> <ul> <li><a href="#">Sub Deep 1</a></li> <li><a href="#">Sub Deep 2</a></li> <li><a href="#">Sub Deep 3</a></li> <li><a href="#">Sub Deep 4</a></li> </ul> </li> <li><a href="#">Deep Menu 2</a></li> </ul> </li> <li><a href="#">Sub Menu 5</a></li> </ul> </li> </ul> </nav>
CSS
#primary_nav_wrap
{
margin-top:15px
}
#primary_nav_wrap ul
{
list-style:none;
position:relative;
float:left;
margin:0;
padding:0
}
#primary_nav_wrap ul a
{
display:block;
color:#333;
text-decoration:none;
font-weight:700;
font-size:12px;
line-height:32px;
padding:0 15px;
font-family:"HelveticaNeue","Helvetica Neue",Helvetica,Arial,sans-serif
}
#primary_nav_wrap ul li
{
position:relative;
float:left;
margin:0;
padding:0
}
#primary_nav_wrap ul li.current-menu-item
{
background:#ddd
}
#primary_nav_wrap ul li:hover
{
background:#f6f6f6
}
#primary_nav_wrap ul ul
{
display:none;
position:absolute;
top:100%;
left:0;
background:#fff;
padding:0
}
#primary_nav_wrap ul ul li
{
float:none;
width:200px
}
#primary_nav_wrap ul ul a
{
line-height:120%;
padding:10px 15px
}
#primary_nav_wrap ul ul ul
{
top:0;
left:100%
}
#primary_nav_wrap ul li:hover > ul
{
display:block
}
https://jsfiddle.net/rrub99sy/
student_aPnalwdy
Горизонтальное выпадающее меню на CSS
Вы здесь: Главная — CSS — CSS Основы — Горизонтальное выпадающее меню на CSS
Я уже когда-то писал о том, как сделать вертикальное выпадающее меню на CSS. В этой же статье я расскажу о том, как сделать горизонтальное выпадающее меню на CSS.
Привожу HTML-код:
<ul>
<li>
<a href="#">Главная</a>
</li>
<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="#">Подменю4</a>
</li>
<li>
<a href="#">Подменю 5</a>
</li>
<li>
<a href="#">Подменю 6</a>
</li>
<li>
<a href="#">Подменю7</a>
</li>
<li>
<a href="#">Подменю 8</a>
</li>
</ul>
</li>
</ul>
И CSS-код:
ul.menu {
display: inline-block;
margin: 0;
padding: 0;
}
ul.menu li {
float: left;
list-style: none;
}
ul.menu li a {
display: block;
padding: 8px 20px 10px;
text-decoration: none;
}
ul.menu li ul {
display: none;
padding-left: 10px;
}
ul.menu li:hover ul {
display: block;
position: absolute;
}
ul.menu li:hover ul li {
float: none;
}
ul.menu li:hover ul li a {
padding: 6px 0 8px;
}
Безусловно, здесь дан чуть ли не минимум свойств. Чтобы это всё украсить, нужно менять стили. Что касается HTML-кода, то он идентичен и для горизонтального, и для вертикального меню.
Теперь у Вас не должно быть проблем с созданием горизонтального выпадающего меню на CSS.
Полный курс по HTML, CSS и по вёрстке сайтов: http://srs.myrusakov.ru/makeup
- Создано 06.03.2013 04:25:07
- Михаил Русаков
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
-
Кнопка:
<a href=»https://myrusakov.ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>Она выглядит вот так:
-
Текстовая ссылка:
<a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>Она выглядит вот так: Как создать свой сайт
- BB-код ссылки для форумов (например, можете поставить её в подписи):
[URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]
Выпадающее горизонтальное меню с поиском на CSS3 и HTML5
Время чтения: 3 мин.В данной статье мы создадим выпадающее горизонтальное меню с полем для поиска с помощью CSS3 и HTML5.
Пример данного меню можно увидеть здесь:
Посмотреть примерСкачать
HTML часть
Навигации состоит из маркированного списка (с классом .nav), который содержит внутри:
- Элементы списка, которые содержат обычные ссылки и не имеют никакого идентификатора или класса;
- #settings внутри которого изображения как ссылки;
- #search содержит поле для поиска и кнопку отправки текста;
- #options содержит ссылку и список( с классом .subnav), который работает как выпадающее меню.
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 | <ul> <li> <a href="#"><img src="images/settings.png"></a> </li> <li> <a href="#">Приложения</a> </li> <li> <a href="#">Сервис</a> </li> <li> <form action="" method="get"> <input name="search_text" placeholder="Поиск..." type="text"> <input name="search_button" type="button"> </form> </li> <li> <a href="#">Меню</a> <ul> <li><a href="#">Настройки</a></li> <li><a href="#">Приложения</a></li> <li><a href="#">Сервис</a></li> <li><a href="#">Разное</a></li> </ul> </li> </ul> |
CSS часть
Базовые стили:
1 2 3 4 | * { margin: 0; padding: 0; } |
Навигация и вид списка
1 2 3 4 5 6 7 8 9 10 11 | .nav { background: #232323; height: 60px; display: inline-block; } .nav li { float: left; list-style-type: none; position: relative; } |
Здесь задали фон для меню, а также расположили горизонтально элементы списка.
Ссылки в меню
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | .nav li a { font-size: 16px; color: white; display: block; line-height: 60px; padding: 0 26px; text-decoration: none; border-left: 1px solid #2e2e2e; font-family: sans-serif, Arial; text-shadow: 0 0 1px rgba(255, 255, 255, 0.5); } .nav li a:hover { background-color: #2e2e2e; } #settings a { padding: 18px; height: 24px; font-size: 10px; line-height: 24px; } |
Ссылки имеют высоту блока, то есть весь блок будет ссылкой. При наведении на ссылку фон меняется на серый. Блок с идентификатором #settings содержит изображение, поэтому для него задали такие свойства.
Поле поиска
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 32 33 34 35 36 37 38 39 40 41 42 43 44 | #search { width: 357px; margin: 4px; } #search_text { width: 297px; padding: 15px 0 15px 20px; font-size: 16px; font-family: sans-serif, Arial; border: 0 none; height: 52px; margin-right: 0; color: white; outline: none; background: #1f7f5c; float: left; box-sizing: border-box; transition: all 0.15s; } ::-webkit-input-placeholder { /* WebKit браузеры */ color: white; } :-moz-placeholder { /* Mozilla Firefox 4 to 18 */ color: white; } ::-moz-placeholder { /* Mozilla Firefox 19+ */ color: white; } :-ms-input-placeholder { /* Internet Explorer 10+ */ color: white; } #search_text:focus { background: rgb(64, 151, 119); } #search_button { border: 0 none; background: #1f7f5c url("../images/search.png") center no-repeat; width: 60px; float: left; padding: 0; text-align: center; height: 52px; cursor: pointer; } |
Здесь идет оформление поля с поиском. Заданы разные свойства, при наведении, при фокусе и т.д.
Выпадающая часть
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 | #options a { border-left: 0 none; } #options>a { background-image: url("../images/triangle.png"); background-position: 85% center; background-repeat: no-repeat; padding-right: 42px; } .subnav { visibility: hidden; position: absolute; top: 110%; right: 0; width: 200px; height: auto; opacity: 0; transition: all 0.1s; background: #232323; } .subnav li { float: none; } .subnav li a { border-bottom: 1px solid #2e2e2e; } #options:hover .subnav { visibility: visible; top: 100%; opacity: 1; } |
Блок с классом .subnav изначально спрятан, и появляется он только при наведении.
Если есть какие-то вопросы, задавайте их в комментариях ниже.
Успехов!
Создание простого меню для сайта на HTML и CSS
И снова всех приветствую на нашем проекте! Сегодня у нас будет рассмотрен урок на тему создание простого меню для сайта. Тема очень распространенная, но надеюсь Вы сможете для себя, как новичок, получить полезные знания и возможно просто разобраться, как это реализуется.
Данный урок был записан по просьбе одного из наших постоянных читателей, поэтому другие темы и не рассматривались. После чего я, вместе со своим напарником по разработке, Евгением Кузьменко, подготовил для Вас выпадающее меню для сайта. С данным уроком Вы можете ознакомиться, как на сайте прочитав статью, так и по видео уроку, чтобы более детально понять основные принципы реализации выпадающего меню. Кстати, по поводу создания меню, также рассказывали и в других уроках, например таких как: Создание меню в Битрикс, Делаем меню как в nexus или например, как Адаптивное меню SlickNav, поэтому можете рассмотреть и их, вдруг что-то окажется полезным и пригодится!
Первый шаг. HTML.
И так, переходим к первому шагу данного урока и сначала нам нужно подключить файл demo.css, который лежит у нас в папочке css, а затем уже подключаем шрифт Open Sans. Ребята, я рассказываю все по демо, поэтому Вы можете все делать по своему усмотрению.
<link rel="stylesheet" href="css/demo.css"> <link href="http://allfont.ru/allfont.css?fonts=open-sans" rel="stylesheet" type="text/css" />
Далее нам нужно создать обычный маркированный список ul li, а также задать первому ul идентификатор nav, чтобы мы могли работать через него, обращаясь к стилям css. Делается это очень просто, не знаю, что тут можно описать, поэтому скидываю сразу структуру, как в демо.
<ul> <li> <a href="">Ссылка</a> <ul> <li><a href="">Ссылка</a></li> <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> <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> <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> <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> <li><a href="">Ссылка</a></li> <li><a href="">Ссылка</a></li> </ul> </li> </ul>
Второй шаг. CSS.
Переходим к стилям CSS и первым делом, мы должны установить тот шрифт, который прописали вначале данного урока, а именно Open Sans. После того, как наш шрифт успешно прописан, переходим уже к самому каркасу нашего маркированного списка, которому зададим определенные свойства, а также расположение и позиционирование элементов. Заметим, что мы создаем горизонтальное меню, поэтому применяем свойство float left.
#nav{ font-family: 'Open Sans', arial; } #nav li{ float:left; /* все ссылки идут слева на право */ position:relative; list-style:none; /* убираем точки */ background:#ff3131; width:190px; }
Убираем у каждой ссылки нашего меню нижнее подчеркивание, а также придаем белый цвет. Далее, чтобы при наведении на выпадающее меню основная ссылка была выделена, задаем идентификатор active, а также не забываем про сам цвет при наведении всех элементов данного меню. Так как у нас имеется выпадающее меню, нам соответственно нужно его будет скрыть. Для этого прописываем свойство visible и указываем ему параметр hidden, а также не забываем про абсолютное позиционирование данного элемента.
#nav a{ text-decoration:none; display:block; /* делаем блочным элементов тег "a" */ padding:35px 65px; color:#ffffff; } #active a, #nav li:hover > a{ background:#b32424; } #nav ul { visibility:hidden; /* скрываем выпадающее меню */ padding:0; position:absolute; }
Теперь после того, как наше меню успешно скрыто, нам нужно сделать выпадающее меню. Это реализовать достаточно просто, нужно задать элементу меню с идентификатором nav свойство visible. Тем самым мы получим результат выпадающего меню. Далее все по стандарту, изменяем выпадающее меню на наше усмотрение, задаем ему отступы и цвет. Не забываем указать свойство left 0 при ховере, ведь без него все выпадающее меню поедет и соответственно будет не очень красиво. (пункт 1)
#nav li:hover > ul{ visibility:visible; /* показываем выпадающее меню при наведении */ position: relative; } #nav ul a{ padding:18.5px 65px; /* делаем отступы выпадающего меню меньше от основного */ } #nav ul li:hover{ background:#d92a2a; } #nav li:first-child:hover > ul{ left: 0px; /* при наведении на первый элемент чтобы не съежало выпадающее меню */ }
Так как Евгений, подготовил макет данного меню, то все моменты связанные с его дизайном, мы реализовали с Вами в соответствии. Теперь, нам нужно реализовать border меню, так как он имеют некую функциональную особенность. Давайте ее рассмотрим. Для начала нам потребуется сделать border справа для основного меню, затем чтобы border не было слева нам нужно указать основному меню задать свойство none.
#nav > li{ border-right: 2px solid #d92a2a; /* добавляем рамку к основному меню справа */ } #nav > li:last-child{ border-right: none; /* убираем рамку справа основного меню */ }
Теперь, пора перейти к выпадающему меню, где функциональные свойства намного покажутся сложнее основного меню, ведь нам придется задавать определенные свойства элементам. Для начала укажем border для двух сторон выпадающего меню, а именно для правой стороны и левой. И напоследок нам будет необходимо скрыть с помощью свойства border none правую и левую сторону меню.
#nav > li ul li{ border-left: 2px solid #d92a2a; /* добавляем рамку к выпадающему меню слева */ border-right:2px solid #d92a2a; /* добавляем рамку к выпадающему меню справа */ } #nav li:first-child ul li,#nav li:first-child ul{ border-left:none; /* убираем рамку у выпадающего меню слева */ } #nav li:last-child ul li,#nav li:last-child ul{ border-right:none; /* убираем рамку у выпадающего меню справа */ }
Проверяем все на сайте и видим, что все отлично работает, кроме одной детали, а именно наше выпадающее меню при наведении на вторую ссылку и последующую сдвигается немного вправо. Для этого, чтобы устранить данную проблему, мы задаем элементу меню с идентификатором nav свойство left и в качестве параметра даем ему минус два. (см. пункт 1)
#nav li:hover > ul{ left: -2px; /* смещаем выпадающее меню слева от размера рамки*/ }
Проверяем все на сайте и видим, что мы теперь действительно все сделали верно и можем заканчивать данный урок.
Я благодарю Вас за ваше внимание, за ваши комментарии, а также за то, что Вы ознакомились с данным уроком и надеюсь, смогли для себя что-то выделить и подчеркнуть. А я с Вами прощаюсь и в следующем уроке мы рассмотрим тему меню сопровождением звуковой анимацией. Всем удачи!)
Роман Краутер
Как сделать выпадающее меню html 🚩 выпадающие списки html 🚩 Веб-программирование
Инструкция
Составьте меню, определите его структуру. Расположите элементы в удобном для будущего пользователя порядке. Подумайте над понятными и грамотными названиями разделов. Определите пункты, которые должны быть выпадающими, и подпункты, которые будут в этих выпадающих списках.
Оформите придуманную структуру с помощью html-тэгов. Это будет выглядеть примерно следующим образом: <div> <ul> <li><a href=»#»>Ссылка 1.</a></li> <li><a href=»#»>Ссылка 2.</a> <ul> <li><a href=»#»>Пункт 2.1.</a></li> <li><a href=»#»>Пункт 2.2.</a></li> <li><a href=»#»>Пункт 2.3.</a></li> </ul></li> <li><a href=»#»>Ссылка 3.</a> <ul><li><a href=»#»>Пункт 3.1.</a></li> <li><a href=»#»>Пункт 3.2.</a></li> <li><a href=»#»>Пункт 3.3.</a></li> <li><a href=»#»>Пункт 3.4.</a></li></ul> </li></ul> </div>
Поместите все меню в блок <div>. Задайте идентификатор id, что позволит в дальнейшем присваивать особенности только этому блоку, не затрагивая остальные. Укажите в идентификаторе некое имя, свойства для которого опишите в следующих шагах.
Создайте списки, где <ul> — сам список, а <li> — каждая из его строк. Добавьте для всех будущих ссылкок, которые должны создавать выпадающее меню, свой список с подпунктами. Превратите названия пунктов меню в ссылки, заключив их в тэг <a>. Присвойте его параметру href адрес страницы, на которую будет указывать ссылка.
Задайте свойства списка через css, внеся их в css-файл: #vmenu ul { margin:0px; padding:0px; list-style:none; width:250px; }. Задайте равными нулю отступы padding — отступ внутри и margin — отступ снаружи элемента списка. Укажите list-style — стиль маркированного списка, по умолчанию с точками, которые при значении none убираются. Введите ширину списка width.
Добавьте свойства элемента списка: #vmenu ul li { position:relative; }. Укажите параметр позиционирования, то есть расположения элементов position. Присвойте ему относительное значение relative, чтобы определять расположение выпадающего меню относительно изначального. Создаваемое меню будет вертикальным.
Укажите свойства для списка, расположенного в элементе другого списка: #vmenu li ul { position:absolute; left:250px; top:0; display:none; }. Присвойте параметру позиционирования position значение absolute, чтобы осуществлять абсолютное позиционирование подменю относительно пункта меню. Задайте расположение с помощью отступа пространства слева left и сверху top. Определите параметр отображения элемента display как none, поскольку изначально выпадающий список не должен быть виден.
Внесите параметры для ссылок: #vmenu ul li a { display:block; padding:5px; text-decoration:none; color:#606060; background:#d8d8d8; }. Присвойте параметру отображения display значение block, делающее элемент блочным. При этом он видимый и ведет себя, как блок. Задайте отступ padding, цвет текста ссылки color, цвет фона ссылки background, стиль ссылки text-decoration. Значением none убирает подчеркивание по умолчанию.Задайте действие при наведении курсора: #vmenu li:hover ul { display: block; }. Укажите, что при наведении курсора на строку списка li, список ul, расположенный в нем, становится видимым.
Добавьте по желанию параметры цвета или изображения для фона, горизонтальные черты, шрифт ссылок и другие свойства, определяющие внешний вид меню.
Как сделать выпадающее меню для поискового робота?
В статье «Почему не стоит увлекаться меню на основе скриптов» мы говорили о том, что использование выпадающих-выезжающих-скользящих и прочих функционально-визуализированых меню, разработанных на основе скриптов, может отрицательно сказаться на индексации вашего сайта поисковыми машинами.
Однако возможны ситуации в которых или заказчик настаивает на реализации именно выпадающего меню, или же структура сайта предполагает большое количество главных разделов при компактном дизайне, или же необходимо вынести несколько разделов и подразделов в качестве основных, выделив их в отдельное меню.
Что же делать в этом случае и каким образом с одной стороны реализовать требуемое условие, а с другой — не повредить будущей индексации сайта?
Напомним, что главной задачей навигационных элементов сайта является их удобство как для пользователя, так и для поисковой машины. Основной проблемой индексации большинства скриптовых меню является не столько то, что они расположены между тегами <script>, а тот факт, что ссылка в них собирается из нескольких частей, или же они вообще расположены в отдельных массивах данных. И то, что с недавнего времени Google «научился» ограничено воспринимать ссылки в JavaScript так же как и HTML ссылки, не означает, что он стал вычленять их из массивов или запрашивать из базы данных. Кроме того, как говорится — «не Google единым» — существуют также и другие поисковые машины, чьи алгоритмы в данный момент не способны воспринимать ссылки в Javascript.
Для того, чтобы наглядно продемонстрировать отличие между Javascript и HTML ссылками, давайте рассмотрим два простых примера:
Вот так выглядит код обычной (HTML) ссылки:
<a href=»//www.proofsite.com.ua»>Proofsite.com.ua — Ваш сайт должен продавать!</a>
Вот так выглядит один из вариантов кода ссылки, формируемой с помощью Javascript:
if(lnk==»#») str+=’return false’
str+=’» class=»clSlideLinks»> ‘+text+'</a>
Риторический вопрос — во втором случае ссылку вы где-нибудь видите ссылку? Вот точно так же и робот поисковой машины ее не видит. Однако за счет того, что сам URL хранится в отдельном массиве, при загрузке страницы и поддержке Javascript в браузере, для обычного посетителя такая ссылка будет работать.
Главным условием, которое должно соблюдаться при разработке навигационных элементов, является возможность предоставить поисковому роботу обычную гиперссылку, по которой он сможет перейти на внутренние страницы вашего сайта.
Теперь перейдем непосредственно к вопросу, озвученному в названии статьи — как сделать выпадающее меню, чтобы было удобно и поисковому роботу и посетителю?
Вторым набором инструментария, с помощью которого можно создать выпадающее меню, является использование для этих целей Каскадных листов стилей (CSS).
CSS (англ. Cascading Style Sheets — каскадные листы стилей) — технология описания внешнего вида документа, написанного языком разметки. CSS используется создателями веб-страниц для задания цветов, шрифтов, расположения и других аспектов представления документа.Основной целью разработки CSS являлось разделение содержимого (написанного на HTML или другом языке разметки) и представления документа (написанного на CSS). Это разделение может увеличить доступность документа, предоставить большую гибкость и возможность управления его представлением, а также уменьшить сложность и повторяемость в структурном содержимом.
По материалам Википедии
Главным преимуществом меню, созданном с помощью CSS, является обратный от Javacript принцип его разработки: если в Javascript используется методика «собери/создай меню из элементов», то в случае использования CSS, методика звучит «загрузи меню и управляй его элементами». То есть, при использовании CSS мы, по-сути дела, изначально загружаем полностью весь код меню, а дальше, в зависимости от действий мыши пользователя, или показываем или скрываем его части.
Итак, как же выглядит код выпадающего меню, визуализированного с помощью CSS? Я не буду приводить весь код, а также стили CSS, которые применяются для управления (с ними можно ознакомиться, например, в одном из популярных меню Suckerfish Dropdowns) — в данный момент нас интересует исключительно та часть, которая отвечает за вывод непосредственно ссылок.
Для этого откроем работающий пример меню, созданного с помощью CSS и посмотрим непосредственно на ту часть кода, где выводятся навигационные ссылки.
<div><a>Overview</a></div> <ul> <li></li> <li>Classification</li> <li>Physcial Characteristics</li> <li>Habitat</li> <li>Lifestyle</li> <li>Evolution</li> <li>Distribution</li> </ul> |
<div><a>Overview</a></div> <ul> <li></li> <li>Classification</li> <li>Physcial Characteristics</li> <li>Habitat</li> <li>Lifestyle</li> <li>Evolution</li> <li>Distribution</li> </ul>
На выходе получился навигационный элемент, состоящий исключительно из обычных гиперсссылок, что позволит поисковому роботу без труда проиндексировать все внутренние страницы вашего сайта. Кроме того, как можно увидеть на примере, никаких ограничений в функциональных возможностях нет — в качестве якорей ссылок можно использовать как текст, так и изображения.
Однако необходимо понимать, что не все типы меню могут быть сделаны с помощью исключительно CSS. Например, большинство меню «аккордеонного» типа (разворачивающиеся вниз при наведении мыши или клику) или же так называемые «док-меню» (выезжает и прячется за край экрана) сделаны все же на основе Javascript.
Разрабатывая или же заказывая разработку сайта, обязательно прописывайте в Техническом Задании необходимость создания индексируемого поисковыми роботами меню. Это позволит в будущем не тратить дополнительные средства на вынужденную переделку сайта.
Как решить проблему индексации сайта, в том случае, если уже используется Javascript-навигация или же использование скриптовых меню обязательно — мы рассмотрим в следующей статье.
Часть 1. Почему не стоит увлекаться меню на основе скриптов
Создание раскрывающегося меню навигации с помощью HTML5 и CSS3
Есть несколько отличных решений для раскрывающихся меню навигации, например, плагин jquery superfish. Многие из них используют много файлов и ресурсов для создания раскрывающихся списков, но иногда они вам не нужны. Я хочу показать вам, как создать собственное простое, но стильное раскрывающееся меню, используя новые теги HTML5 и великолепные стили CSS3.
Nav Menu (8168 загрузок)Раскрывающийся список, который мы собираемся создать, скрывается и открывается при наведении курсора, используя только CSS.Используя новые функции переходов CSS3, мы анимируем состояния наведения и раскрывающиеся списки. Эти эффекты действуют точно так же, как эффекты javascript, которые вы использовали. Структура файлов проста. Вам понадобятся файлы index.html и style.css для хранения стилей css.
Вот предварительный просмотр того, что мы построим сегодня:
Начнем со структуры HTML. Это головная часть:
Раскрывающееся меню навигации HTML5 / CSS3
В основной части мы добавим html-код для навигационного меню. Каждый список ul внутри li представляет собой раскрывающееся меню. Я добавил «» к каждому родительскому li, чтобы показать иерархию. Код создает двойные кавычки под прямым углом к элементу.