Содержание

Меню навигации с выпадающим списком на чистом CSS

Чтобы сделать меню навигации с выпадающим списком на чистом CSS, мы воспользуемся возможностями CSS3, а именно, псевдоклассом :checked.

Этот псевдосласс применяется к элементам интерфейса, таким как переключатели (checkbox) и флажки (radio), когда они находятся в положение “включено”. Переключение элементов в такое состояние происходит с помощью атрибута checked тега <input> или пользователем.

Разметка

<nav>
	<div>Website</div>
	<ul>
		<li>
			<input type="radio" name="nav-group">
			<label for="home">Home</label>
			<label for="nav-close"></label>
			<div>
				<div>
					<ul>
						<li><a href="#">More about us 1</a></li>
						<li><a href="#">More about us 2</a></li>
						<li><a href="#">More about us 3</a></li>
					</ul>
				</div>
			</div>
		</li>
		<li>
			<input type="radio" name="nav-group">
			<label for="css">CSS</label>
			<label for="nav-close"></label>
			<div>
				<div>
					<ul>
						<li><a href="#">More about us 1</a></li>
						<li><a href="#">More about us 2</a></li>
						<li><a href="#">More about us 3</a></li>
					</ul>
				</div>
			</div>
		</li>
		<li>
			<input type="radio" name="nav-group">
			<label for="dropdown">Dropdown</label>
			<label for="nav-close"></label>
			<div>
				<div>
					<ul>
						<li><a href="#">More about us 1</a></li>
						<li><a href="#">More about us 2</a></li>
						<li><a href="#">More about us 3</a></li>
					</ul>
				</div>
			</div>
		</li>
	</ul>
	
	<input type="radio" name="nav-group">
</nav>

Стили

. nav-main {
	width: 100%;
	background-color: #222;
	height: 70px;
	color: #fff;
}

.nav-main .logo {
	float: left;
	height: 40px;
	padding: 15px 30px;
	font-size: 1.4em;
	line-height: 40px;
}

.nav-main > ul {
	margin: 0;
	padding: 0;
	float: left;
	list-style-type: none;
}

.nav-main > ul > li {
	float: left;
}

.nav-option {
	display: none;
}

.nav-option:checked ~ .nav-content {
	max-height: 400px;
	-webkit-transition: max-height 0.4s ease-in;
	-moz-transition: max-height 0.4s ease-in;
	transition: max-height 0.4s ease-in;
}

.nav-option:checked + label {
	background-color: #444;
}

.nav-option:checked ~ .nav-close {
	display: block;
}

.nav-item {
	display: inline-block;
	padding: 15px 20px;
	height: 40px;
	line-height: 40px;
	margin: 0;
}

.nav-item:hover {
	background-color: #444;
	cursor: pointer;
}

.nav-content {
	position: absolute;
	top: 70px;
	overflow: hidden;
	max-height: 0;
	background-color: #222;
	color: #fff;
}

.nav-content a {
	color: #fff;
	text-decoration: none;
}

.
nav-content a:hover { text-decoration: underline; } .nav-sub { padding: 20px; } .nav-sub ul { padding: 0; margin: 0; list-style-type: none; } .nav-sub ul a { display: inline-block; padding: 5px 0; } .nav-close { display: none; position: absolute; top: 70px; left: 0; height: 100%; width: 100%; } .nav-close-option { display: none; }

Результат:

Смотреть результат

Теги: css

Редактировать

Создаем анимированное выпадающее меню при помощи CSS3

Я убежден, что CSS3 функции, такие как переходы, анимация и трансформация могут добавить дополнительную привлекательность многим элементам в Ваших проектах.

В этой статье вы увидите, как можно построить симпатичное, анимированное выпадающее меню при помощи одного только CSS3.

Онлайн-демо

HTML

Структура меню очень простая — это неупорядоченный список с ссылками. Вот фрагмент его кода:

<ul>
 <li><a href=»#»>Home</a></li>
 <li>
 <a href=»#»>Categories</a>
 <ul>
 <li><a href=»#»>CSS</a></li>
 <li><a href=»#»>Graphic design</a></li>
 <li><a href=»#»>Development tools</a></li>
 <li><a href=»#»>Web design</a></li>

 </ul>
 </li>
 <li><a href=»#»>Work</a></li>
 <li><a href=»#»>About</a></li>
 <li><a href=»#»>Contact</a></li>
</ul>

CSS

Сначала сбрасываем стили по-умолчанию:

#menu, #menu ul {
 margin: 0;
 padding: 0;
 list-style: none;
}

Первый уровень меню.

Возможности CSS3 по созданию таких вещей как градиент, тени и закругленные углы легко позволят нам реализовать следующее:

#menu {

 width: 960px;
 margin: 60px auto;
 border: 1px solid #222;
 background-color: #111;
 background-image: -moz-linear-gradient(#444, #111);
 background-image: -webkit-gradient(linear, left top, left bottom, from(#444), to(#111));
 background-image: -webkit-linear-gradient(#444, #111);
 background-image: -o-linear-gradient(#444, #111);
 background-image: -ms-linear-gradient(#444, #111);
 background-image: linear-gradient(#444, #111);
 -moz-border-radius: 6px;
 -webkit-border-radius: 6px;
 border-radius: 6px;
 -moz-box-shadow: 0 1px 1px #777;
 -webkit-box-shadow: 0 1px 1px #777;
 box-shadow: 0 1px 1px #777;
}

Clear floats.

Это метод Nicolas Gallagher, который я обычно использую:

#menu:before,
#menu:after {
 content: «»;
 display: table;
}
#menu:after {
 clear: both;
}
#menu {
 zoom:1;
}

Список элементов.

Обратите внимание на селектор #menu li:hover>a. Это, пожалуй, наиболее важный CSS трюк для этого выпадающего меню.

Итак, вот как это работает: выбираем элемент «а», который является дочерним для «li», а элемент «li» должен быть в свою очередь потомком «#menu». Подробнее о селекторах читайте здесь.

#menu li {
 float: left;
 border-right: 1px solid #222;
 -moz-box-shadow: 1px 0 0 #444;
 -webkit-box-shadow: 1px 0 0 #444;
 box-shadow: 1px 0 0 #444;
 position: relative;
}
#menu a {
 float: left;
 padding: 12px 30px;
 color: #999;
 text-transform: uppercase;
 font: bold 12px Arial, Helvetica;
 text-decoration: none;
 text-shadow: 0 1px 0 #000;
}
#menu li:hover > a {
 color: #fafafa;
}
*html #menu li a:hover { /* IE6 only */
 color: #fafafa;
}

Подпункты меню.

С помощью свойства CSS3 transitions мы можем создать анимацию изменяя такие CSS-свойства, как margin или opacity.

И я использовал это для анимации подменю. Вот что в результате получилось:

#menu ul {
 margin: 20px 0 0 0;
 _margin: 0; /*IE6 only*/
 opacity: 0;
 visibility: hidden;
 position: absolute;
 top: 38px;
 left: 0;
 z-index: 9999;
 background: #444;
 background: -moz-linear-gradient(#444, #111);
 background: -webkit-gradient(linear,left bottom,left top,color-stop(0, #111),color-stop(1, #444));
 background: -webkit-linear-gradient(#444, #111);
 background: -o-linear-gradient(#444, #111);
 background: -ms-linear-gradient(#444, #111);

 background: linear-gradient(#444, #111);
 -moz-box-shadow: 0 -1px rgba(255,255,255,.3);
 -webkit-box-shadow: 0 -1px 0 rgba(255,255,255,.3);
 box-shadow: 0 -1px 0 rgba(255,255,255,.3);
 -moz-border-radius: 3px;
 -webkit-border-radius: 3px;
 border-radius: 3px;
 -webkit-transition: all .2s ease-in-out;
 -moz-transition: all .2s ease-in-out;
 -ms-transition: all . 2s ease-in-out;
 -o-transition: all .2s ease-in-out;
 transition: all .2s ease-in-out;
}
#menu li:hover > ul {
 opacity: 1;
 visibility: visible;
 margin: 0;
}
#menu ul ul {
 top: 0;
 left: 150px;
 margin: 0 0 0 20px;
 _margin: 0; /*IE6 only*/
 -moz-box-shadow: -1px 0 0 rgba(255,255,255,.3);
 -webkit-box-shadow: -1px 0 0 rgba(255,255,255,.3);
 box-shadow: -1px 0 0 rgba(255,255,255,.3);
}
#menu ul li {
 float: none;
 display: block;
 border: 0;
 _line-height: 0; /*IE6 only*/
 -moz-box-shadow: 0 1px 0 #111, 0 2px 0 #666;
 -webkit-box-shadow: 0 1px 0 #111, 0 2px 0 #666;
 box-shadow: 0 1px 0 #111, 0 2px 0 #666;
}
#menu ul li:last-child {
 -moz-box-shadow: none;
 -webkit-box-shadow: none;
 box-shadow: none;
}
#menu ul a {
 padding: 10px;
 width: 130px;
 _height: 10px; /*IE6 only*/
 display: block;
 white-space: nowrap;
 float: none;
 text-transform: none;
}
#menu ul a:hover {
 background-color: #0186ba;
 background-image: -moz-linear-gradient(#04acec,  #0186ba);
 background-image: -webkit-gradient(linear, left top, left bottom, from(#04acec), to(#0186ba));
 background-image: -webkit-linear-gradient(#04acec, #0186ba);
 background-image: -o-linear-gradient(#04acec, #0186ba);
 background-image: -ms-linear-gradient(#04acec, #0186ba);
 background-image: linear-gradient(#04acec, #0186ba);
}

Стили для первого и последнего элемента меню.

#menu ul li:first-child > a {
 -moz-border-radius: 3px 3px 0 0;
 -webkit-border-radius: 3px 3px 0 0;
 border-radius: 3px 3px 0 0;
}
#menu ul li:first-child > a:after {
 content: »;
 position: absolute;
 left: 40px;
 top: -6px;
 border-left: 6px solid transparent;
 border-right: 6px solid transparent;
 border-bottom: 6px solid #444;
}
#menu ul ul li:first-child a:after {
 left: -6px;
 top: 50%;
 margin-top: -6px;
 border-left: 0;
 border-bottom: 6px solid transparent;
 border-top: 6px solid transparent;
 border-right: 6px solid #3b3b3b;
}
#menu ul li:first-child a:hover:after {
 border-bottom-color: #04acec;
}

#menu ul ul li:first-child a:hover:after {
 border-right-color: #0299d3;
 border-bottom-color: transparent;
}
#menu ul li:last-child > a {
 -moz-border-radius: 0 0 3px 3px;
 -webkit-border-radius: 0 0 3px 3px;
 border-radius: 0 0 3px 3px;
}

jQuery


Данное меню работает во всех популярных современных браузерах, но если вам нужно добавить поддержку также IE6, то без использования JavaScript не обойтись.

$(function() {
 if ($.browser.msie &amp;&amp; $.browser.version.substr(0,1)<7)
 {
 $(‘li’).has(‘ul’).mouseover(function(){
 $(this).children(‘ul’).css(‘visibility’,’visible’);
 }).mouseout(function(){
 $(this).children(‘ul’).css(‘visibility’,’hidden’);
 })
 }
});

Онлайн-демо

Данное меню протестировано в Firefox 8, Chrome 15, Opera 11.52, Safari и IE7.

Скачать исходники.

Перевод


Если у Вас возникли вопросы, то для скорейшего получения ответа рекомендуем воспользоваться нашим форумом

сделать выпадающее меню на CSS и HTML.

Задача

Создать выпадающее меню инструментами CSS и HTML.

Решение

Для начала давайте создадим список, разместим его горизонтально и оформим его внешний вид. Это будет основное меню, а потом сделаем для его пунктов выпадающее меню.

<!DOCTYPE html>
<html>
<head>
	<title>Выпадающее меню</title>
<style>
        ul. menu{
            padding: 3px;       /* убираем отступы */
            margin-top: 50px;   /* для красоты отодвигаю вниз */
            text-align: center; /* выравниваю элементы спаска по центру */
        }
        ul.menu > li{
            list-style: none;	    /* убираем маркеры списка */
            display: inline-block;	/* разещаем списки горизонтально */
            background-color: #D87171;
            padding: 5px 15px;
        }
        /* устанавливаем стиль ссылок в меню */
        ul.menu > li > a{
            color: #FFFFFF;
            text-decoration: none;
        }
        /* устанавливаем стиль ссылок при наведении курсора */
        ul.menu > li > a:hover{
            text-decoration: underline;
        }
</style>
</head>
<body>
<ul>
	<li><a href="#">Главная</a></li>
	<li><a href="#">Контакты</a></li>
	<li><a href="#">Услуги</a></li>
</ul>

</body>
</html>

У нас получился список такого вида:

Рисунок 1. Подготовительные работы.

Обратите внимание: стиль ссылки меняется при наведении на неё курсора. Это реализовывается с помощью псевдокласса :hover. Этот псевдокласс задаёт стиль элемента при наведении на него курсора, при этом кнопка мыши не нажата. Если есть нажатие кнопки — это уже другой псевдокласс.

Теперь перейдём к решению нашей задачи. Сделаем выпадающее меню для пункта «Услуги», добавим выпадающие разделы: «Купить», «Продать», «Обменять». Эти пункты — это отдельный список, который вложен в тег <li>

Создадим этот список и добавим стили, описывающие его внешний вид.

<!DOCTYPE html>
<html>
<head>
	<title>Выпадающее меню</title>
<style>
    ul.menu{
        padding: 3px;       /* убираем отступы */
        margin-top: 50px;   /* для красоты отодвигаю вниз */
        text-align: center; /* выравниваю элементы спаска по центру */
    }
    ul.menu > li{
        list-style: none;	    /* убираем маркеры списка */
        display: inline-block;	/* разещаем списки горизонтально */
        background-color: #D87171;
        padding: 5px 15px;
    }
    /* устанавливаем стиль ссылок в меню */
        ul. menu > li > a{
        color: #FFFFFF;
        text-decoration: none;
    }
    /* устанавливаем стиль ссылок при наведении курсора */
    ul.menu > li > a:hover{
        text-decoration: underline;
    }
    /* устанавливаем стиль для внутреннего меню */
    .menuInner{
        list-style: none;
        padding: 4px;
        border: 1px solid #000000;
        border-radius: 5px;
        background-color: #FFFFFF;
        text-align: left;
    }
</style>
</head>
<body>
<ul>
	<li><a href="#">Главная</a></li>
	<li><a href="#">Контакты</a></li>
	<li><a href="#">Услуги</a>
		<ul>
			<li>Купить</li>
			<li>Продать</li>
			<li>Обменять</li>
		</ul>
	</li>
</ul>

</body>
</html>

Теперь у нас получился такой список:

Рисунок 2. Подготовительные работы.

Безусловно, это не то, что нам нужно. По умолчанию этот список должен быть скрыт и становиться видимым только при наведении мыши. Скрыть элемент можно при помощи правила правила {display: none}. А при наведении курсора его нужно активировать сделав снова видимым правила {display: inline-block}.

<!DOCTYPE html>
<html>
<head>
	<title>Выпадающее меню</title>
<style>
    ul.menu{
        padding: 3px;
        margin-top: 50px;
        text-align: center;
    }
    ul.menu > li{
        list-style: none;
        display: inline-block;
        background-color: #D87171;
        padding: 5px 15px;
    }
    /* устанавливаем стиль ссылок в меню */
        ul.menu > li > a{
        color: #FFFFFF;
        text-decoration: none;
    }
    /* устанавливаем стиль ссылок при наведении курсора */
    ul.menu > li > a:hover{
        text-decoration: underline;
    }
    /* устанавливаем стиль для внутреннего меню */
    .menuInner{
        display: none; /* делаем невидимым */
        list-style: none;
        padding: 4px;
        border: 1px solid #000000;
        border-radius: 5px;
        background-color: #FFFFFF;
        text-align: left;
    }
    /* делаем видимым при наведении курсора на блок li */
    . menu > li:hover > .menuInner{
        display: block;
    }
</style>
</head>
<body>
<ul>
	<li><a href="#">Главная</a></li>
	<li><a href="#">Контакты</a></li>
	<li><a href="#">Услуги</a>
		<ul>
			<li>Купить</li>
			<li>Продать</li>
			<li>Обменять</li>
		</ul>
	</li>
</ul>

</body>
</html>

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

Чтобы элемент отображался не влияя на отображение других элементов, его нужно спозиционировать со значением absolute.

<!DOCTYPE html>
<html>
<head>
	<title>Выпадающее меню</title>
<style>
    ul.menu{
        padding: 3px;
        margin-top: 50px;
        text-align: center;
    }
    ul.menu > li{
        position: relative;         /* добавляем позиционирование */
        list-style: none;
        display: inline-block;
        background-color: #D87171;
        padding: 5px 15px;
        height: 20px;               /* добавляем высоту */
    }
    /* устанавливаем стиль ссылок в меню */
        ul. menu > li > a{
        color: #FFFFFF;
        text-decoration: none;
    }
    /* устанавливаем стиль ссылок при наведении курсора */
    ul.menu > li > a:hover{
        text-decoration: underline;
    }
    /* устанавливаем стиль для внутреннего меню */
    .menuInner{
        display: none; /* делаем невидимым */
        list-style: none;
        padding: 4px;
        border: 1px solid #000000;
        border-radius: 5px;
        background-color: #FFFFFF;
        text-align: left;
    }
    .menu > li:hover > .menuInner{
        display: block;
        position: absolute;
        top: 30px;
        left: 0;
    }
</style>
</head>
<body>
<ul>
	<li><a href="#">Главная</a></li>
	<li><a href="#">Контакты</a></li>
	<li><a href="#">Услуги</a>
		<ul>
			<li>Купить</li>
			<li>Продать</li>
			<li>Обменять</li>
		</ul>
	</li>
</ul>

</body>
</html>

Что мы тут сделали:

  1. Добавили в родительский элемент <li> правило позиционирования {position: relative;}. Это сделано для того, чтобы отчёт координат абсолютного позиционирования вложенного списка начался с верхнего левого угла этого блока, а не угла экрана.
  2. Добавили в родительский элемент <li> правило {height: 20px;}. Задали ему высоту, чтобы удобней было позиционировать выпадающий список.
  3. Установили абсолютное позиционирование {position: absolute;} выпадающему списку и установили координаты: top и left.

Теперь выпадающее меню работает корректно.

Рисунок 3. Окончательный вариант.

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

Учебная задача решена. Пока.

Как сделать горизонтальное выпадающее меню на сайте

Перед прочтением предлагаю рассмотреть — горизонтальное меню для сайта.

Перед тем как начнем копаться в коде, отмечу: данное выпадающее меню реализовано без использования jQuery и JavaScript, а только при помощи CSS и новых свойств CSS3. Помимо навигации снабдим наше меню еще и красивым раздвижным полем поиска.

Итак, структура HTML:

<div>
   <!-- #navigation -->
  <div>
       <!-- #menu -->
        <div>
         <!-- #nav-->
          <ul>
               <!-- Home Item -->
                <li>
                  <a href="#">Главная</a>
                   <!-- Level 1 -->
                  <ul>
                      <li><a href="#">Пункт №1</a></li>
                     <li><a href="#">Пункт №2</a></li>
                     <li><a href="#">Пункт №3</a></li>
                     <li><a href="#">Пункт №4</a></li>
                     <li><a href="#">Пункт №5</a></li>
                     <li><a href="#">Пункт №6 - Урв. 2</a>
                           <!-- Level 2 -->
                          <ul>
                              <li><a href="#">Подпункт №1</a></li>
                              <li><a href="#">Подпункт №2</a></li>
                              <li><a href="#">Подпункт №3 - Урв.  3</a>
                                    <!-- Level 3 -->
                                  <ul>
                                      <li><a href="#">Подпункт №1</a></li>
                                      <li><a href="#">Подпункт №2</a></li>
                                      <li><a href="#">Подпункт №3 - Урв. 4</a>
                                            <!-- Level 4 -->
                                          <ul>
                                              <li><a href="#">Подпункт №1</a></li>
                                              <li><a href="#">Подпункт №2</a></li>
                                              <li><a href="#">Подпункт №3</a></li>
                                          </ul>
                                         <!-- END Level 4 -->
                                      </li>
                                 </ul>
                                 <!-- END Level 3 -->
                              </li>
                         </ul>
                         <!-- END Level 2 -->
                      </li>
                 </ul>
                 <!-- END Level 1 -->
              </li>
             <!-- END Home Item -->
                <!-- Portfolio Item -->
               <li>
                  <a href="#">Портфолио</a>
                 <ul>
                      <li><a href="#">Пункт №1</a></li>
                     <li><a href="#">Пункт №2</a></li>
                     <li><a href="#">Пункт №3</a></li>
                     <li><a href="#">Пункт №4</a></li>
                     <li><a href="#">Пункт №5</a></li>
                 </ul>
             </li>
             <!-- END Portfolio Item -->
               <!-- Blog Item -->
                <li>
                  <a href="#">Блог</a>
                  <ul>
                      <li><a href="#">Пункт №1</a></li>
                     <li><a href="#">Пункт №2</a></li>
                     <li><a href="#">Пункт №3</a></li>
                     <li><a href="#">Пункт №4</a></li>
                 </ul>
             </li>
             <!-- END Blog Item -->
                <li><a href="#">Сервисы</a></li>
              <li><a href="#">О нас</a></li>
                <li><a href="#">Написать нам</a></li>
         </ul>
         <!-- END #nav -->
         <!-- Search Form -->
          <form action="#"> 
             <input type="text" value="Поиск. .." onfocus="if (this.value == 'Поиск...') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Поиск...';}" />
         </form>
           <!-- END Search Form -->
      </div>
        <!-- END #menu -->
    </div>
    <!-- END #navigation -->
</div>

В оберточный div помещаем заготовку нашего меню и форму для строки поиска. Первый уровень нашего меню представляет собой основные пункты меню, которые будут видны всегда, запихнуты они в элементы li списка ul с id=nav. Обворачиваем их в ссылки и начинаем наращивать нашу структуру – кладем списки ul без id в нужные элементы li корневого списка. Необходим еще один уровень вложенности? — Всегда, пожалуйста, выбираем li и засовываем туда еще один список. Количество уровней не ограничено, но не злоупотребляйте этим, иначе меню станет просто неюзабельным.

Далее подключаем уже готовый файл CSS:

<link href="style-menu.css" rel="stylesheet" type="text/css" />

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

#nav li a:hover,
#nav li ul li a:hover{
  transition-property: color, background;
 transition-duration: 0.5s, 0.5s; 
   transition-timing-function: linear, ease-out;
}
.searchfield:focus,
.searchfield:not(:focus){
  transition-property: width; 
    transition-duration: 0.5s, 0.5s; 
   transition-timing-function: linear, ease-out;
}
#menu_div:hover,
#navigation:hover,
#nav li ul a, 
#menu_div,
#navigation, 
#nav li a, 
#menu_div:not(:hover), 
#navigation:not(:hover){
 transition-property: opacity;
   transition-duration: 0.5s, 0.5s;
    transition-timing-function: linear, ease-out;
}

В transition-property указываем необходимое нам свойство: цвет, прозрачность, длину, ширину, фон и т.п., transition-duration – задает скорость изменения указанного свойства, transition-timing-function – стиль изменения свойства – довольно интересный атрибут, но об этом расскажу как-нибудь в следующий раз.

Плавно открывающееся меню с помощью CSS

Осуществим нашу задумку с помощью самого обычного CSS. В следующей статье, если не забуду, то опишу этот же эффект с помощью jQuery. Но а пока, давайте приступим к разбору данного метода. Но, сначала предложу посмотреть, что получится в итоге:





Первым делом, давайте напишем HTML код нашего меню. Меню будет простейшим. Для примера у него будет 2 пункта у каждого из которых будет выпадающий список с подпунктами.


<nav>
	<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>

	</ul>
</nav>

Думаю тут все понятно, самое простое 2-х уровневое меню. Как и говорил, меню имеет два главных пункта, можете добавить сколько угодно, если нужно. Дальше нужно просто добавить стили, которые и сделают всю магию 🙂


#slow_nav > ul{
	width: 500px;
	margin:25px auto 0;
}

#slow_nav > ul > li{
	list-style: none;
	display: inline-block;
	position:relative;
	padding:0;
}

#slow_nav a{text-decoration:none;}

#slow_nav > ul > li > a{
	font-size:18px;
	padding:5px;
	background-color:#333;
	color:#fff;
}

#slow_nav li ul{
	position:absolute;
	list-style:none;
	text-align:center;
	top:15px;
	font-size:15px;
	left:0;
	margin:0;
	padding:0;

/* Данные строки нужны для правильной работы анимации */
	max-height:0px;
	overflow:hidden;
	-webkit-transition:max-height 0.4s linear;
	-moz-transition:max-height 0.4s linear;
	transition:max-height 0. 4s linear;
/* конец */
}

#slow_nav li:hover ul{
	max-height:300px;
}

#slow_nav li ul li{
	background-color:#333;
	border-bottom:1px solid #888;
}

#slow_nav li ul li:last-child{
	border-bottom:none;
}

#slow_nav li ul li a{
	padding:5px 12px;
	color:#fff;
	display:block;
}

#slow_nav li ul li:hover{
	background-color:#444;
}

#slow_nav li ul li:first-child{
	margin-top:25px;
	position:relative;
}

#slow_nav li ul li:first-child:before{
	content:'';
	position:absolute;
	width:1px;
	height:1px;
	border:5px solid transparent;
	border-bottom-color:#333;
	left:10px;
	top:-10px;
}

Код CSS не маленький., но по своей сути не сложный. Если Вы владеете навыками верстки, то запросто разберетесь что и как. Я лишь остановлюсь на некоторых моментах, которые являются важными.

Первым делом это сама анимация. Нужный код выделен комментариев в коде — /* Данные строки нужны для правильной работы анимации */. Удалять из нельзя, в противном случаи анимация перестанет работать. В данном отрезке кода, изначально мы задаем высоту в ноль пикселей —

max-height:0px; и прописываем свойство overflow:hidden;, чтобы скрыть наше дочернее меню, то есть выпадающее. Дальше уже прописываем кроссбраузерное свойство transition, которое совершит анимацию.


-webkit-transition:max-height 0.4s linear;
-moz-transition:max-height 0.4s linear;
transition:max-height 0.4s linear;

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


#slow_nav li:hover ul{
	max-height:300px;
}

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

Далее уже задаем стили для выпадающего меню, так что на них подробно останавливаться не буду. Ту как бы и все. Это и есть весь способ. Он простой и действенный и справляется со своей задачей на все 100%.

Данный способ можно применять не только к самописным меню но и к тем же динамическим меню, которые создаются системами управления сайтом, например WordPress. Для этого нужно немного подправить стили и все. То есть первый HTML код использовать не нужно, только стили. В стилях нужно заменить имя айди #slow_nav на то что будет у Вас, ну и возможно подправить еще что-то по мелочам. Подробно останавливаться не буду. Для каждого случая нужен персональный подход, так что уж извините 🙂 Я дал идею и способ, а Вам решать, применять его или нет.

На этом все, спасибо за внимание. 🙂

Как создать раскрывающееся меню в HTML

В HTML мы можем легко создать раскрывающееся меню в документе Html, используя следующие различные способы:

  1. Использование HTML-формы
  2. Использование внутреннего CSS

Использование HTML-формы

Если мы хотим создать раскрывающееся меню в документе Html с помощью формы, мы должны выполнить шаги, указанные ниже. Используя эти шаги, мы можем легко создать раскрывающееся меню:

Шаг 1: Во-первых, мы должны ввести код Html в любом текстовом редакторе или открыть существующий файл Html в текстовом редакторе, в котором мы хотим использовать форму для создания раскрывающегося меню.

<Голова> <Название> Создайте раскрывающееся меню с помощью HTML-формы <Тело> Эта страница поможет вам понять, как создать раскрывающееся меню в HTML-документе. И этот раздел поможет вам понять, как создать раскрывающееся меню с помощью формы Html.

Шаг 2: Теперь мы должны поместить курсор в ту точку тега тела документа Html, где мы хотим показать раскрывающееся меню.И затем мы должны ввести тег

в этой точке.

<Тело> Эта страница поможет вам понять, как создать раскрывающееся меню в документе Html. И этот раздел поможет вам понять, как создать раскрывающееся меню с помощью формы Html. <форма>

Шаг 3: Теперь мы должны определить теги

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

<форма> <выбор>

Шаг 5: И, наконец, мы должны сохранить файл Html, а затем запустить файл.

<Голова> <Название> Создайте раскрывающееся меню с помощью HTML-формы <Тело> Эта страница поможет вам понять, как создать раскрывающееся меню в HTML-документе. И этот раздел поможет вам понять, как создать раскрывающееся меню с помощью формы Html. <форма> <выбор>

Проверить это сейчас

Вывод вышеуказанного HTML-кода показан на следующем снимке экрана:

Использование внутреннего CSS

Если мы хотим создать раскрывающееся меню в документе Html с использованием таблицы стилей внутреннего каскадирования, мы должны выполнить шаги, указанные ниже.Используя эти шаги, мы можем легко создать раскрывающееся меню:

Шаг 1: Во-первых, мы должны ввести код Html в любом текстовом редакторе или открыть существующий файл Html в текстовом редакторе, в котором мы хотим использовать внутренний CSS для создания раскрывающегося меню.

Шаг 2: Теперь мы должны поместить курсор сразу после закрытия тега title в теге заголовка документа Html, а затем определить стили внутри тега

Шаг 3: Затем мы должны использовать другой класс, который определяет раскрывающийся список.

.падать { дисплей: встроенный блок; позиция: относительная }

Шаг 4: Теперь нам нужно создать еще один класс, который используется для описания того, как появляется раскрывающееся меню.Этот класс содержит различные атрибуты, которые показаны в следующем блоке.

.dropdown-content { позиция: абсолютная; цвет фона: светло-серый; минимальная ширина: 200 пикселей; дисплей: нет; z-индекс: 1; }

Шаг 5: Теперь нам нужно добавить еще один класс для определения цвета и размера текста в раскрывающемся меню.

.dropdown-content a { черный цвет; отступ: 12 пикселей 16 пикселей; текстовое оформление: нет; дисплей: блок; }

Шаг 6: И, наконец, в теге стиля мы должны отредактировать поведение раскрывающегося меню при наведении курсора.Итак, мы можем легко использовать следующий код в нашем теге стиля для редактирования.

.dropdown-content a: hover { цвет фона: оранжевый; } .dropdown: hover .dropdown-content { дисплей: блок; } .dropdown: hover .dropbtn { цвет фона: серый; }

Шаг 7: Теперь нам нужно поместить курсор в тег тела, где мы хотим показать раскрывающееся меню. Затем мы должны вставить следующий код в тег body.

Шаг 8: И, наконец, мы должны сохранить файл Html, а затем запустить файл в браузере.

<Голова> <Название> Создайте раскрывающееся меню с помощью внутреннего CSS <стиль> .dropbtn { цвет фона: желтый; черный цвет; отступ: 10 пикселей; размер шрифта: 12 пикселей; } .падать { дисплей: встроенный блок; позиция: относительная } .dropdown-content { позиция: абсолютная; цвет фона: светло-серый; минимальная ширина: 200 пикселей; дисплей: нет; z-индекс: 1; } .dropdown-content a { черный цвет; отступ: 12 пикселей 16 пикселей; текстовое оформление: нет; дисплей: блок; } .dropdown-content a: hover { цвет фона: оранжевый; } .dropdown: hover .dropdown-content { дисплей: блок; } .dropdown: hover .dropbtn { цвет фона: серый; } <Тело> Эта страница поможет вам понять, как создать раскрывающееся меню в HTML-документе. И этот раздел поможет вам понять, как создать раскрывающееся меню с помощью внутреннего CSS.

Проверить это сейчас

Вывод вышеуказанного Html-кода показан на следующем снимке экрана:


Как создать простое раскрывающееся меню CSS

Каскадные таблицы стилей (CSS) позволяют точно настроить дизайн вашего сайта и предоставляют быстрые и удобные методы для постоянной настройки внешнего вида ваших веб-страниц.В некоторых случаях они также включают мощные интерактивные функции без необходимости использования кода Javascript.

В этом руководстве мы покажем вам, как создать простое каскадное раскрывающееся меню, используя комбинацию правил HTML и CSS. Javascript не требуется!

Создание правил CSS

Создайте веб-страницу с помощью текстового редактора или специального редактора веб-сайтов, такого как Adobe Dreamweaver. В этом примере мы встроим код CSS в раздел веб-страницы, но при желании вы можете создать и связать внешнюю таблицу стилей CSS.

Введите следующий код:

  

Создать HTML-код для меню

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

  

Загрузить и протестировать

Сохраните файл и загрузите его на свой сервер с помощью FTP-клиента или файлового менеджера cPanel. Просмотрите файл в веб-браузере и при необходимости измените стиль CSS и содержимое меню HTML.

Если у вас возникнут дополнительные вопросы или вам потребуется помощь, откройте заявку в службу поддержки на панели инструментов HostPapa. Перейдите по этой ссылке, чтобы узнать, как это сделать.

Как создать раскрывающееся меню в WordPress

Плохие функции навигации могут повредить удобство использования и доступность веб-сайта с красивым дизайном. Чрезвычайно важно, чтобы ваши пользователи могли легко и быстро получить доступ ко всему, что им нужно на вашем сайте.

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

В этой статье мы рассмотрим, как создать раскрывающееся меню в WordPress. Давайте начнем!

Как добавить раскрывающееся меню: шаг за шагом

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

Пожалуй, наиболее распространенным типом является меню заголовка:

Однако боковые меню также очень заметны:

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

Последний пример, который мы создадим позже в этом посте, — это раскрывающееся меню. Как и в случае с гамбургер-меню, этот стиль экономит пространство на экране, поскольку большая часть содержимого скрывается до тех пор, пока оно не понадобится:

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

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

Шаг 1. Создание пунктов меню

Для начала перейдите к Внешний вид> Меню на панели инструментов WordPress.Доступные здесь параметры будут частично определяться вашей текущей темой.

Перейдите на вкладку Edit Menus , где вы можете создать новое меню:

Введите имя в поле ввода под разделом «Структура меню » , а затем щелкните « Создать меню» :

После того, как вы создали хотя бы одно меню, вы должны увидеть новую вкладку под названием Управление местоположениями , рядом с Редактировать меню .

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

Тот же процесс применяется к сообщениям. Если вы хотите добавить ссылку в свое меню, разверните раздел Пользовательские ссылки и введите URL-адрес, а также пользовательский текст:

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

Шаг 2. Настройте структуру меню

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

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

Закончив настройку структуры меню, не забудьте сохранить изменения. Также обратите внимание, что в зависимости от вашей темы вам может потребоваться назначить новое меню местоположению. Соответствующие параметры можно найти в разделе Настройки меню :

Затем вы можете проверить свой сайт во внешнем интерфейсе, чтобы увидеть меню в действии. Любые подпункты будут отображаться в раскрывающемся меню:

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

Шаг 3. Добавьте CSS в свое меню

Вы также можете добавить собственный стиль в раскрывающееся меню с помощью классов CSS. Для этого сначала нажмите Параметры экрана в верхней части панели инструментов:

Установите флажок CSS Classes :

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

Шаг 4. Предварительный просмотр меню

На этом этапе ваше меню почти готово к работе. Однако перед окончательной доработкой вы можете проверить это в настройщике WordPress. Это позволяет вам вносить изменения и видеть их эффект в режиме реального времени.

Нажмите Управление с предварительным просмотром в реальном времени , чтобы войти в интерактивный редактор:

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

Для предварительного просмотра изменений вам не потребуется новая вкладка, поскольку Настройщик показывает предварительный просмотр вашего веб-сайта в реальном времени.

Шаг 5. Опубликуйте свое меню

Когда вы будете готовы, вы можете оживить новое меню одним щелчком мыши. Просто нажмите кнопку Опубликовать :

Это сделает меню живым на вашем сайте и позволит посетителям начать им пользоваться.

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

С помощью Настройщика вы можете назначать меню для всех различных мест, поддерживаемых вашей темой.

Плагины раскрывающегося меню

Конечно, если вы предпочитаете использовать плагины для создания раскрывающихся меню, есть несколько вариантов. Вот некоторые из лучших плагинов меню для WordPress, как бесплатных, так и платных:

  1. Max Mega Menu : Бесплатный плагин, который добавляет множество опций в существующий редактор меню.
  2. Hero Menu : Инструмент с широкими возможностями настройки с упором на скорость отклика.
  3. UberMenu : Решение, которое дает вам максимальный контроль над стилем и функциональностью ваших меню.

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

Настройте свой сайт с помощью WP Engine

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

Чтобы поддерживать удобный веб-сайт, вам также потребуется доступ к нужным ресурсам и надежный хостинг.Наши планы могут помочь!

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

Это руководство поможет вам создать адаптивную раскрывающуюся навигацию только с использованием CSS с помощью CSS flexbox и «взлома флажков». Для дальнейшего изучения необходимы базовые знания HTML и CSS.

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

Приступим.

Your Designer Toolbox


Неограниченные загрузки: 500 000+ веб-шаблонов, наборов значков, тем и материалов для дизайна


СКАЧАТЬ

Mobile First

Мы будем следовать подходу «сначала мобильные», который предполагает разработку веб-сайта, начиная с мобильной версии, а затем переходя к дизайну для больших экранов. Узнайте больше о том, почему подход, ориентированный на мобильные устройства, важен в 2020 году.

Настройка

Создайте пустой документ HTML и назовите его index.html. Добавьте базовый скелет HTML. Если вы используете Visual Studio Code, все, что вам нужно сделать, это ввести «!» и нажмите Enter. У вас получится вот это.

 


   
   
    Документ 

 

 

Я использовал «Font Awesome» для значка меню гамбургера в правом верхнем углу.Поэтому добавьте следующую строку под тегом заголовка, чтобы иметь возможность использовать этот шрифт.

  

Создайте свою таблицу стилей и назовите ее styles.css . Свяжите таблицу стилей с вашим HTML-документом под ссылкой Font Awesome CDN, используя

  css"> 

Я использовал это изображение ниже в качестве логотипа. Вы можете сохранить то же, что и логотип.png или добавьте свой собственный.

HTML

Добавьте следующий HTML-код в тело

 <заголовок>
   

 

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

CSS

В вашем файле styles.css начните с нескольких общих стилей для всех элементов:

 * {
   маржа: 0;
   отступ: 0;
   размер коробки: рамка-рамка;
   семейство шрифтов: без засечек;
}
 

Добавьте эти стили в элемент заголовка.

 header {
   высота: 70 пикселей;
   цвет фона: # 22292F;
   отступ: 10 пикселей 0;
}
 

Теперь вы увидите темную панель навигации, занимающую всю ширину браузера.

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

Теперь добавьте эти стили в класс обтекания меню:

 .menu-wrap {
   дисплей: гибкий;
   justify-content: пробел между;
   отступ: 0 15 пикселей;
}
 

Мы используем display: flex , чтобы все дочерние элементы занимали свободное пространство, доступное по горизонтали. Свойство justify-content установлено на , расстояние между , чтобы растянуть эти элементы как можно дальше друг от друга.

Давайте стилизуем каждый из этих дочерних элементов один за другим.

 .logo-img {
   высота: 50 пикселей;
}
.menu-icon {
   размер шрифта: 2.4em;
   цвет: #ffffff;
   высота строки: 50 пикселей;
}
 

Таким образом, у нас есть логотип и значок в идеальном положении и правильного размера. Переходя к ссылкам меню — нам нужно абсолютно расположить все меню под полосой на мобильных телефонах.Первое добавление:

 nav {
   позиция: абсолютная;
   цвет фона: # 3D4852;
   верх: 70 пикселей;
   слева: 0;
   ширина: 100%;
}
 

Теперь стилизуйте список и ссылки:

 nav ul {
   тип-стиль-список: нет;
}
nav ul li {
   отступ: 0 15 пикселей;
}
nav ul li a {
   дисплей: встроенный блок;
   отступ: 12 пикселей;
   / * Добавьте свои собственные стили ниже, чтобы изменить внешний вид ссылок * /
   цвет: # DAE1E7;
   текстовое оформление: нет;
   межбуквенный интервал: 0. 05em;
}
 

Также добавьте стили наведения и фокуса для ссылок:

 nav ul li a: hover, nav ul li a: focus {
   цвет: # eb6f4a;
}
 

Теперь вы должны увидеть это:

Это меню сначала должно быть скрыто и появляться при щелчке значка. Поэтому добавьте эти дополнительные стили max-height , overflow и transition тоже к элементу nav ul :

 nav ul li a: hover, nav ul li a: focus {
   цвет: # eb6f4a;
}
 

Это скроет все меню, потому что max-height равно 0, а переполнение скрыто .Причина, по которой мы не используем отображение : none для скрытия меню, заключается в том, что нам нужен эффект анимации сползания меню вниз — эффект раскрывающегося списка — который может быть достигнут только с помощью свойства max-height .

«Взломать флажок»

Что это за «взлом с флажком»? Это самая важная часть этого урока. Внимательно прочитайте.

Теперь нам нужно переключить отображение меню, используя только CSS — без JavaScript. Лучший способ сделать это — использовать скрытый элемент флажка.Мы используем значок гамбургера в качестве метки для этого элемента флажка. Как только метка нажата, флажок устанавливается, и, следовательно, мы можем использовать селектор псевдокласса «: checked» для отображения меню!

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

HTML

В index.html добавьте элемент флажка перед элементом nav :

  

ПРИМЕЧАНИЕ. Очень важно добавить его перед nav , а не после.Потому что в CSS есть селектор для следующего брата, но не для предыдущего. Вы скоро это поймете.

Также окружите значок меню меткой

 
 

Здесь for = ”checkbox” гарантирует, что флажок будет отмечен / снят каждый раз при нажатии на эту метку.

CSS

Нам нужно сначала скрыть флажок. В стилях.css , добавьте это:

 #checkbox {
   дисплей: нет;
}
 

Вот самое сердце кода:

 #checkbox: checked ~ nav ul {
   максимальная высота: 200 пикселей;
   отступ: 15 пикселей 0;
   переход: все 0,5 с;
}
 

Символ ~ является общим родственным селектором, который разделяет два селектора ( #checkbox: checked и nav ul ) и соответствует второму элементу, только если он следует за первым элементом.Разберитесь с общим селектором братьев и сестер лучше с помощью нескольких здесь приведенных примеров. Это означает, что когда флажок установлен, меню скользит вниз, потому что max-height изменяется от 0 до большого числа.

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

СКАЧАТЬ

Для больших экранов

Мы определенно не хотим, чтобы значок гамбургера на больших экранах, где было достаточно места для непосредственного отображения ссылок.

Давайте добавим несколько медиа-запросов для размера планшета и выше, чтобы отображать ссылки напрямую вместо значка меню. В файле styles.css добавьте этот медиа-запрос:

 @media (min-width: 768px) {
}
 

Внутри него сначала скройте значок меню

 @media (min-width: 768px) {
  .menu-icon {
     дисплей: нет;
  }
}
 

Не забудьте увеличить размер экрана в браузере до значения, превышающего 768 пикселей в ширину, чтобы увидеть изменения в следующий раз.

Теперь добавьте стили, чтобы относительно позиционировать элемент nav и измените его цвет фона. Затем добавьте display: inline-flex для nav ul li , чтобы разместить ссылки рядом друг с другом.

 @media (min-width: 768px) {
  nav {
    положение: относительное;
    верх: -10px;
    цвет фона: прозрачный;
  }
  nav ul {
    максимальная высота: 70 пикселей;
    отступ: 15 пикселей 0;
    выравнивание текста: вправо;
  }
  nav ul li {
    дисплей: встроенный гибкий;
    отступ слева: 20 пикселей;
  }
}
 

Вот и все.

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

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

СКАЧАТЬ ИСТОЧНИК КОД

Этот пост может содержать партнерские ссылки. См. Раскрытие партнерских ссылок здесь .

Как разработать раскрывающееся меню HTML5 и CSS3 (Учебное пособие)

Стиль CSS

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

Создайте новый файл CSS с именем «style.css »и поместите его в тот же каталог, где размещен HTML-код, созданный на начальных этапах.

Добавьте разметку, показанную ниже, в файл CSS. Разметка объяснена под каждым фрагментом кода.

Шаг 4:

 ul {
отступ: 0;
маржа: 0;
тип-стиль-список: нет;
} 

Приведенная выше разметка удалит отступы и поля из всего неупорядоченного списка HTML-кода.

Шаг 5:

 ul # menu li {
фон: # 47a3da;
плыть налево;
} 

Приведенная выше разметка говорит, что перейдите к неупорядоченному списку с идентификатором «меню» и задайте стиль его элементов списка таким образом, чтобы цвет фона стал синим, а все элементы списка перемещались влево.

Это расположит все элементы верхнего уровня в одной строке. Он также удаляет маркеры из списка.

Шаг 6:

 ul # menu li a {
цвет: # 000000;
дисплей: блок;
отступ: 10px 25px;
текстовое оформление: нет;
нижняя граница: 2px solid # 000000;
} 

В приведенном выше коде говорится, что перейдите к неупорядоченному списку с идентификатором «меню», задайте стиль для всех ссылок внутри элементов списка, измените цвет на черный, измените стиль отображения на блокировку и добавьте верхний и нижний отступ в 10 пикселей, пока справа и отступ слева до 25 пикселей.

Далее, для text-decoration установлено значение none, что приведет к удалению подчеркивания ссылки.

Наконец, стилизована нижняя граница.

Шаг 7:

 ul # menu li a: hover {
фон: # 72caff;
} 

Эта разметка изменит цвет ссылок при наведении курсора на элементы списка верхнего уровня.

Шаг 8:

 ul # menu li ul li {
float: нет;
} 

В приведенном выше фрагменте кода говорится, что не следует размещать элементы списка внутреннего неупорядоченного списка.

 ul # menu li ul {
позиция: абсолютная;
дисплей: нет;
} 

Вышеупомянутая разметка скроет внутренний неупорядоченный список и установит его абсолютную позицию.

 ul {
ul # menu li: hover ul {
    дисплей: блок;
}
 

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

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

Bulma: Бесплатная современная CSS-структура с открытым исходным кодом на основе Flexbox

.

Выпадающий список Компонент — это контейнер для кнопки раскрывающегося списка и раскрывающегося меню.

  • раскрывающийся список основной контейнер
    • dropdown-trigger контейнер для кнопки
    • выпадающее меню переключаемое меню, скрыто по умолчанию
      • dropdown-content dropdown box , с белым фоном и тенью
        • dropdown-item каждый отдельный элемент раскрывающегося списка, который может быть a или div
        • выпадающий разделитель горизонтальная линия для разделения выпадающих элементов

HTML

    

Выпадающее содержимое #

В то время как раскрывающийся список может использоваться как якорная ссылка , вы также можете использовать

и вставить почти любого типа содержимого .

HTML

    

Hoverable или Toggable #

В раскрывающемся списке компонент имеет 2 дополнительных модификатора

  • is-hoverable : раскрывающийся список будет отображаться при наведении на выпадающий триггер
  • активен : в раскрывающемся списке постоянно отображается

Хотя реализация CSS : hover работает отлично, класс is-active доступен для пользователей, которые хотят управлять отображением раскрывающегося списка с помощью JavaScript .

HTML

    

HTML

  

В раскрывающееся меню можно вставить любой тип содержания .

Выровнен по правому краю #

Вы можете добавить модификатор is-right , чтобы выпадающий список был выровнен по правому краю.

HTML

  

Раскрывающийся список по умолчанию выровнен по левому краю .

HTML

  

Добавьте модификатор is-right для раскрывающегося с выравниванием по правому краю .

Dropup #

Вы можете добавить модификатор is-up , чтобы раскрывающееся меню отображалось над кнопкой раскрывающегося списка.

HTML

  

Вы можете добавить модификатор is-up , чтобы раскрывающееся меню отображалось над кнопкой раскрывающегося списка.

Переменные #

Имя

Тип

Ценность

Расчетное значение

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

  $ dropdown-content-background-color  

переменная

цвет

  $ dropdown-content-padding-bottom  

размер

  $ dropdown-content-padding-top  

размер

переменная

  0 0. 5em 1em -0.125em rgba ($ scheme-invert, 0,1), 0 0px 0 1px rgba ($ scheme-invert, 0,02)  

тень

  $ dropdown-item-hover-color  

переменная

цвет

  $ dropdown-item-hover-background-color  

переменная

цвет

  $ dropdown-item-active-color  

переменная

цвет

  $ dropdown-item-active-background-color  

переменная

цвет

  $ dropdown-divider-background-color  

переменная

цвет

Раскрывающееся меню

находится под изображениями В IE — HTML и CSS — Форумы SitePoint

CSS Проблема:

Круто спасибо всем за помощь!

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

 
html, body, address, blockquote, div, form, fieldset, caption, h2, h3, h4, h5, h5, h6, hr, ul, ol, ul, li, table, tr, td, th, p, img {
маржа: 0;
отступ: 0;
}

ul, ol, li {
тип-стиль-список: нет;
}

img, fieldset {
граница: нет;
}

html, body {
высота: 100%;
}

тело {
фон: #EAEAEA url (../ images / bg.gif) repeat-x;
шрифт: Arial, Helvetica, без засечек 100%;
цвет: # 474747;
}

#wrapper {
ширина: 766 пикселей;
минимальная высота: 100%;
маржа: 0 авто;
размер шрифта: .875em;
положение: относительное;
}

* html #wrapper {
высота: 100%;
}

#header {
ширина: 100%;
положение: относительное;
z-индекс: 10;
}

#логотип заголовка {
ширина: 145 пикселей;
плыть налево;
}

#header .logo h2 a {
ширина: 145 пикселей;
высота: 104 пикселей;
дисплей: блок;
фон: url (../ images / logo.gif) no-repeat;
преобразование текста: прописные буквы;
текстовый отступ: -999em;
}

#header . headline {
ширина: 569 пикселей;
высота: 40 пикселей;
высота строки: 40 пикселей;
плыть налево;
выравнивание текста: центр;
}

#header .headline h2,
#header .headline h3 {
плыть налево;
семейство шрифтов: Тахома, Женева, без засечек;
размер шрифта: 160%;
font-weight: 700;
цвет: # 000;
}

# заголовок.заголовок h2 span {
цвет: # FF0000;
}

#header .headline h3 {
маржа: 4px 0 0 15px;
размер шрифта: 110%;
}

# заголовок .top-nav,
#header .bottom-nav {
поле справа: 20 пикселей;
float: right;
граница: сплошная #FFF;
ширина границы: 1px 1px 0 1px;
семейство шрифтов: Arial, Helvetica, sans-serif;
размер шрифта: 105%;
}

#header .bottom-nav {
маржа слева: -145 пикселей;
}

# заголовок .top-nav li,
#header .bottom-nav li {
плыть налево;
}

#header .top-nav li a,
#header .bottom-nav li a {
высота: 31 пикс;
высота строки: 31 пикселей;
отступ: 0 12 пикселей;
дисплей: блок;
фон: # 9966FF;
выравнивание текста: центр;
цвет: #FFF;
текстовое оформление: нет;
}

# заголовок.bottom-nav li a {
отступ: 0 20 пикселей;
фон: # 1F78FD url (. ./ images / bottom-line.png) 100% 0 no-repeat;
}

#header .bottom-nav li a span {
font-weight: 700;
}

#header .bottom-nav li a.last {
отступ: 0 12 пикселей;
фон: # 1F78FD нет;
}

#header .secure {
 ширина: 52 пикселя;
высота: 104 пикселей;
float: right;
фон: url (../ images / secure.gif) слева вверху без повтора;
}

#содержание {
ширина: 100%;
маржа: 40px 0;
плыть налево;
переполнение: скрыто;
z-индекс: 1;
}

#content .left,
#content .right {
ширина: 536 пикселей;
минимальная высота: 100 пикселей;
поле справа: 20 пикселей;
плыть налево;
дисплей: встроенный;
фон: #CCC;
}

#содержание .правильно {
ширина: 210 пикселей;
поле справа: 0;
дисплей: блок;
}

#content .left p,
#content .right p {
маржа: 15 пикселей;
размер шрифта: 1.2em;
}

# footer-wrapper {
ширина: 100%;
положение: относительное;
переполнение: скрыто;
фон: #DDDDDD url (../ images / footer.gif) repeat-x;
}

#footer {
ширина: 766 пикселей;
маржа: 0 авто;
переполнение: скрыто;
}

# footer-nav {
ширина: 766 пикселей;
маржа сверху: 4px авто 0;
положение: относительное;
выравнивание текста: центр;
}

# footer-nav li {
ширина: 191 пикс;
плыть налево;
}

# footer-nav li a {
ширина: 45%;
высота: 28 пикселей;
высота строки: 28 пикселей;
дисплей: встроенный блок;
выравнивание текста: центр;
цвет: #FFF;
текст-оформление: подчеркивание;
}

# footer-nav li a. клиенты {
отступ слева: 18 пикселей;
фон: url (../ images / clients.gif) 3px 6px no-repeat;
}

# footer-nav li a.chat {
отступ слева: 18 пикселей;
фон: url (../ images / live_chat.gif) 3px 8px без повтора;
}

# footer-nav li a.order {
отступ слева: 18 пикселей;
фон: url (../ images / order_now.gif) 3px 6px no-repeat;
}

# footer-nav li a.affiliates {
отступ слева: 10 пикселей;
фон: url (../ images / affiliates.gif) 3px 4px no-repeat;
}

# footer-copyright,
# footer-payments {
ширина: 668 пикселей;
высота: 70 пикселей;
высота строки: 70 пикселей;
маржа: 0 0 0 49px;
плыть налево;
выравнивание текста: центр;
}

# footer-copyright {
семейство шрифтов: Arial, Helvetica, sans-serif;
}

# footer-payments {
фон: url (../images/payments.gif) без повтора;
}

# footer-text {
ширина: 766 пикселей;
отступ: 40 пикселей 0;
положение: относительное;
переполнение: скрыто;
ясно: оба;
}

# footer-text p {
маржа: 20px 0;
размер шрифта: 1.2em;
высота строки: 1,2;

}

# footer-text p: first-child {
margin-top: 0;
}

  
 
 0 Strict // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">



 1 Tech Mediat 
<ссылка rel = "таблица стилей"
type = "текст / css"
        href = "css / layout.css "
        media = "экран, печать" />





 


1 Tech Media © 2010 & # 9474; Юридический документ и политика конфиденциальности защищены COMODO ™

Добро пожаловать в 1 Tech Media, одного из ведущих провайдеров хостинга и веб-услуг в Интернете. Мы предлагаем доступный безлимитный веб-хостинг cPanel ™, чтобы сделать ваше присутствие в Интернете заметным. Мы предлагаем неограниченное пространство для хранения и неограниченную передачу файлов, поэтому вы можете быть уверены, что вам никогда не будет выставлен счет за превышение ограничений. Наше решение WHM / cPanel ™ Reseller Hosting было разработано, чтобы помочь вам повысить ваши продажи, предлагая превосходную поддержку и быстрые серверы. Учетные записи реселлеров WHM / cPanel ™ имеют неограниченное пространство для хранения и неограниченную передачу файлов, так что вы можете смотреть, как растет ваш бизнес без границ.1 Tech Media предлагает безлимитный хостинг для ведущих реселлеров WHM / cPanel ™, который разработан для серьезных веб-хостинговых компаний, которые хотели бы создать учетные записи посредников для своих клиентов. Мгновенно создавайте неограниченные учетные записи посредников из панели управления WHM / cPanel ™. Одним из наших самых уникальных планов является наше решение безлимитного хостинга для реселлеров WHM / cPanel ™ Alpha, в котором вы можете создавать неограниченные учетные записи главного посредника WHM / cPanel ™, неограниченные учетные записи посредников WHM / cPanel ™ и неограниченные обычные учетные записи cPanel ™ для своих клиентов. Альфа-реселлер - это последняя учетная запись реселлера, которая вам когда-либо понадобится.

Мы предлагаем услугу «Виртуальный частный сервер», где вы получаете полный контроль над сервером. Сюда входит WHM / cPanel ™, где вы можете создавать неограниченное количество учетных записей cPanel ™. Также включен Fantastico, который автоматизирует установку скриптов для ваших веб-сайтов. Если у вас есть выделенная активность сервера, мы рекомендуем наш полу-выделенный сервер, на котором вы получаете огромное количество серверных ресурсов и очень небольшое количество клиентов на сервере.Это сделает ваш сайт мощным и включает передачу файлов размером 5000 ГБ.

Наши услуги профессионального веб-дизайна очень популярны для создания высококачественных веб-сайтов, которые приносят результаты. Мы будем работать с вами, чтобы создать ваш идеальный веб-сайт, используя передовое программное обеспечение для проектирования и творческих веб-дизайнеров. Наша профессиональная установка скриптов очень доступна, и большинство скриптов устанавливаются менее чем за 12 часов. Мы установили много скриптов для клиентов и используем передовые методы установки.

Благодаря нашей бесплатной партнерской программе клиенты получают партнерскую панель управления, отслеживание партнерских кампаний, статистику в реальном времени, баннеры и ссылки, а также заявки на круглосуточную поддержку и поддержку. чат. Платежи отправляются еженедельно чеком, если вы заработали 25 долларов или больше. Нет абсолютно никакой платы за установку, а регистрация на 100% бесплатна.

Мы тщательно составили наши сервисные решения, чтобы удовлетворить потребности всех потенциальных пользователей, от домашних пользователей до коммерческих пользователей.1 Tech Media зарекомендовала себя как лидер в сфере технологических услуг. Мы никуда не денемся и обеспечили долгое будущее в этом бизнесе.

Надеюсь, ты сможешь что-нибудь сделать с этим

.
Автор записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *