Jump to content
  • 0

Как привязать выпадающее меню к событию нажатия кнопки?


garmoni
 Share

Question

Нашла анимацию гамбургер меню из трех полосок в крестик. Не могу понять как к нему прикрепить появление самого меню при нажатии.

<nav class="nav">
                    <div class="nav__btn">
                              <a id="nav-toggle" href="#"><span></span>    </a>    
                    </div>
                        <ul class="nav__list">
                            <li>
                                <a href="#" class="nav__link">Episodes</a>
                            </li>
                            <li>
                                <a href="#" class="nav__link">Characters</a>
                            </li>
                            <li>
                                <a href="#" class="nav__link">Park</a>
                            </li>
                            <li>
                                <a href="#" class="nav__link">Gallery</a>
                            </li>
                            <li>
                                <a href="#" class="nav__link">actors</a>
                            </li>
                        </ul>
 </nav>
$(document).ready(function(){
   $('#nav-toggle').click(function(){
    $(this).toggleClass('active');
});
.nav__list {
	display: none;
}
#nav-toggle {position: relative; display: inline-block; width:42px; height:25px;}
#nav-toggle span { position: absolute; left: 0; top: 10px; }

#nav-toggle span, 
#nav-toggle span:before,
#nav-toggle span:after {
  position: absolute;
  display: block;
  content: '';
  height: 5px;
  width: 42px;
  background: #000;
  border-radius: 2px;
  cursor: pointer;
}
#nav-toggle span:before {
  top: -10px;
}
#nav-toggle span:after {
  bottom: -10px; 
}

/* Добавим анимацию всех свойств для блоков нашей иконки */
#nav-toggle span, #nav-toggle span:before, #nav-toggle span:after {
  transition: all 500ms ease-in-out;
}

/* Центральный блок делаем прозрачным */
#nav-toggle.active span {
  background-color: transparent;
}

/* Смещаем псевдо-элементы в центр иконки (на место основного блока) */
#nav-toggle.active span:before, #nav-toggle.active span:after {
  top: 0;
}

/* Наклоняем псевдо-элементы под углом 45 градусов, но в разные стороны */
#nav-toggle.active span:before {
  transform: rotate(45deg);

}
#nav-toggle.active span:after {
  transform: rotate(-45deg);

}

 

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Спасибо, получилось.

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

<nav class="nav">
					<div class="nav__btn">
						<a id="nav-toggle" href="#"><span></span>	</a>	
					</div>
						<ul class="nav__list">
							<li>
								<a href="#" class="nav__link">Episodes</a>
							</li>
							<li>
								<a href="#" class="nav__link">Characters</a>
								<ul>
	                                <li><a href="#">Dolores</a></li>
	                                <li><a href="#">Maeve</a></li>
	                                <li><a href="#">Bernard</a></li>
	                                <li><a href="#">Ford</a></li>
	                                <li><a href="#">Man in black</a></li>
	                            </ul>
							</li>
							<li>
								<a href="#" class="nav__link">Park</a>
							</li>
							<li>
								<a href="#" class="nav__link">Gallery</a>
							</li>
							<li>
								<a href="#" class="nav__link">actors</a>
							</li>
						</ul>
					</nav>
.nav__list {
	display: none;
}
.nav__list--opened {
	display: block;
	position: absolute;
	background: #efefef;
	right: -100px;
	top: -40px;
	width: 510px;
	height: 100vh;
	padding-top: 140px; 
	z-index: 98;
}
.nav__list ul {
	width: 120px;
}
.nav__list li {
	margin: 25px 0 25px 5px;
}
.nav__link {
	font-family: Colibri, sans-serif;
	text-transform: capitalize;
	font-size: 24px;
	color: #333;
}
.nav__list li ul {
	display: none;
}
.nav__list li ul li {
	margin-bottom: 22px;
}
.nav__list li ul li a {
	color: #8f8f8f;
	font-size: 20px;
}
.nav__list li:hover ul {
	display: block;
}
#nav-toggle {
	position: relative; 
	display: inline-block; 
	width:42px; 
	height:25px;
	z-index: 99;
}
#nav-toggle span { 
	position: absolute; 
	left: 0; 
	top: 10px; 
}
#nav-toggle span, 
#nav-toggle span:before,
#nav-toggle span:after {
  position: absolute;
  display: block;
  content: '';
  height: 5px;
  width: 42px;
  background: #000;
  border-radius: 2px;
  cursor: pointer;
}
#nav-toggle span:before {
  top: -10px;
}
#nav-toggle span:after {
  bottom: -10px; 
}

/* Добавим анимацию всех свойств для блоков нашей иконки */
#nav-toggle span, #nav-toggle span:before, #nav-toggle span:after {
  transition: all 500ms ease-in-out;
}

/* Центральный блок делаем прозрачным */
#nav-toggle.active span {
  background-color: transparent;
}

/* Смещаем псевдо-элементы в центр иконки (на место основного блока) */
#nav-toggle.active span:before, #nav-toggle.active span:after {
  top: 0;
}

/* Наклоняем псевдо-элементы под углом 45 градусов, но в разные стороны */
#nav-toggle.active span:before {
  transform: rotate(45deg);
  width: 32px;
}
#nav-toggle.active span:after {
  transform: rotate(-45deg);
  width: 32px;
}

 

Должно выглядеть так
 

Screenshot_2.png

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By RaiderCoder
      Здравствуйте , сделал макет сайта для интернет магазина . Но столкнулся с проблемой при верстке кнопок на главной странице и не нашел информации как можно уместить текст + несколько картинок в одну кнопку. Знает кто решение и реалезуемо оно вообще ?

    • By Etaro
      Я не понимаю, в чём проблема в вертикальном выпадающем меню. Где я мог напортачить? Нужно сделать, чтобы колонки были по вертикали, а не по горизонтали.


    • By Vic-Tor
      Всем привет!
      Может кто помочь, всунуть языковую кнопку на сайт. Сайт делал из шаблона, в html соображаю не очень сильно.
      Я так понимаю, можно сделать типа поддомен для другого языка или как проще?  Сайт ТУТ.
      Спасибо!
    • By Sve
      Всем привет :)
      Пытаюсь сверстать свой первый макет, и возникла проблема с меню. Должно быть, как на первой картинке - это макет из фш.
      Выходит, как на второй, меню спадает вниз. 
      Прошу, пожалуйста, тыкните на ошибку в коде, и, если есть возможность, объясните. буду очень рада ответам!
      Код кидаю:
      *{margin: 0; padding: 0; outline: 0} .clearfix::after { content:""; height: 0; display: block; clear: both; } div .container { width: 1300px; margin: auto; background: #fff; } header { width: 100%; height: 130px; border-top: 8px solid #a292b3; position: fixed; z-index: 2; } .logo { margin: 30px 0 20px 170px; } .menu { float: right; margin-right: 145px; } .menu li { display: inline-block; list-style: none; padding: 35px; }  


    • By Рома
      Доброго дня!
      Есть многоуровневое меню (картинка 1)
      Жму на кнопку Каталог - открывается блок с дополнительным содержимым. В этом содержимом есть подменю и под-под меню. Проблема тут такая часть содержимого из правого под-под меню не умещается на экране. Все потому, что блок с доп. содержимым относительно кнопки КАТАЛОГ открывается с выравниванием по левой своей части.
      Вот код в этом положении
      .cs-menu-container .dropdown, ul.type-category li .sub-cate { position: absolute; top: auto; left: 0; z-index: 1000; float: none; min-width: 230px; padding: 0; margin: 0; border: 1px solid #cccccc; border-top:2px solid #c04a62; background: #fff; Что я делаю: 
      меняю значение left: на -200px;
      В итоге получаю нужное мне расположение (картинка 2)
      Но тут же исправляя одно я получаю вторую проблему: блок содержимого кнопки ИНФОРМАЦИЯ уходит далеко влево от самой кнопки вызова (картинка 3)
       
      Какие мне элементы использовать в коде, чтобы выравнивание всех блоков меню (который появляется при нажатии на кнопку) происходило по центру самого блока относительно кнопки? Как правильно выровнять блок относительно кнопки?
       



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy