Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Открытие и закрытие одной кнопкой (https://javascript.ru/forum/dom-window/69132-otkrytie-i-zakrytie-odnojj-knopkojj.html)

Jolly 31.05.2017 22:28

Открытие и закрытие одной кнопкой
 
Вложений: 1
Здравствуйте.

Помогите пожалуйста, еще плохо разбираюсь в js, как в выдвижном меню сделать открытие и закрытие на текст "Меню". Когда ставлю один класс, то меню открывается и сразу закрывается. Вот код:
<html>
  <head>
    <style type="text/css">
   /* Body */
body {
	width: 750px;
	margin: auto;
}

.block {
  margin: 0 auto;
  overflow: hidden;
  position: relative;
  width: 750px;
}


/* Menu */

.menu {
  background: #555 url('images/menu-bg.jpg') repeat left top;
  left: -285px;
  height: 100%;
  position: fixed;
  width: 285px;
}


/* Basic CSS */

.background {
  background-image: url('images/chicago-night.jpg'); 
  height: 100%;
  width: 100%;
  -webkit-background-size: cover;
     -moz-background-size: cover;
       -o-background-size: cover;
          background-size: cover;
}

.menu ul {
  border-top: 1px solid #555;
  list-style: none;
  margin: 0;
  padding: 0;
}

.menu li {
  border-bottom: 1px solid #555;
  font-family: 'Open Sans', sans-serif;
  line-height: 45px;
  padding-bottom: 3px;
  padding-left: 20px;
  padding-top: 3px;
}

.menu li:hover {
  cursor: pointer;
  background-color: #555;
  }

.menu a {
  color: #fff;
  font-size: 15px;
  text-decoration: none;
  text-transform: uppercase;
}

.icon-close {
  cursor: pointer;
  padding-left: 10px;
  padding-top: 10px;
  padding-bottom: 6px;
}

.icon-menu {
  cursor: pointer;
  font-family: 'Open Sans', sans-serif;
  font-size: 20px;
  padding-bottom: 25px;
  padding-left: 25px;
  padding-top: 25px;
  text-decoration: none;
  text-transform: uppercase;
}

.icon-menu img {
  margin-right: 5px;
}
  </style>
  </head>
  <body>
  
  <div class="icon-menu">
        Menu
      </div>
	  
	  <div class="block">
  
  <div class="background">

    <div class="menu">
      
      <!-- Иконка меню -->
      <div class="icon-close">
        <img src="images/close-btn.png">
      </div>

      <!-- Меню -->
      <ul>
        <li><a href="#">About</a></li>
        <li><a href="#">Blog</a></li>
        <li><a href="#">Help</a></li>
        <li><a href="#">Contact</a></li>
      </ul>
    </div>
	</div>
	</div>
    
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script src="menu.js"></script>
  </body>
</html>

/* Открытие меню */
var main = function() { //главная функция
    $('.icon-menu').click(function() { //выбираем класс icon-menu и добавляем метод click с функцией, вызываемой при клике
        $('.menu').animate({ //выбираем класс menu и метод animate
            left: '285px' //теперь при клике по иконке, меню, скрытое за левой границей на 285px, изменит свое положение на 0px и станет видимым
        }, 200); //скорость движения меню в мс
        
        $('.block').animate({ //выбираем тег body и метод animate
            left: '285px' //чтобы всё содержимое также сдвигалось вправо при открытии меню, установим ему положение 285px
        }, 200); //скорость движения меню в мс
    });


/* Закрытие меню */
    $('.icon-close').click(function() { //выбираем класс icon-close и метод click
        $('.menu').animate({ //выбираем класс menu и метод animate
            left: '-285px' //при клике на крестик меню вернется назад в свое положение и скроется
        }, 200); //скорость движения меню в мс
        
    $('.block').animate({ //выбираем тег body и метод animate
            left: '0px' //а содержимое страницы снова вернется в положение 0px
        }, 200); //скорость движения меню в мс
    });
};

$(document).ready(main); //как только страница полностью загрузится, будет вызвана функция main, отвечающая за работу меню

рони 31.05.2017 23:07

Jolly,
может как-то так ...
<!DOCTYPE html>
<html>
  <head>
    <style type="text/css">
   /* Body */
body {
  position: relative;
}

.block {
  margin: 0 auto;
  overflow: hidden;
  position: absolute;
  width: 285px;
  left: -300px;
  transition: left .8s ease-in-out;
}


/* Menu */

.menu {
  background: #555 url('images/menu-bg.jpg') repeat left top;
  height: 100%;
  width: 100%;
}


/* Basic CSS */

.background {
  background-image: url('images/chicago-night.jpg');
  height: 100%;
  width: 100%;
  -webkit-background-size: cover;
     -moz-background-size: cover;
       -o-background-size: cover;
          background-size: cover;
}

.menu ul {
  border-top: 1px solid #555;
  list-style: none;
  margin: 0;
  padding: 0;
}

.menu li {
  border-bottom: 1px solid #555;
  font-family: 'Open Sans', sans-serif;
  line-height: 45px;
  padding-bottom: 3px;
  padding-left: 20px;
  padding-top: 3px;
}

.menu li:hover {
  cursor: pointer;
  background-color: #555;
  }

.menu a {
  color: #fff;
  font-size: 15px;
  text-decoration: none;
  text-transform: uppercase;
}

.icon-close {
  cursor: pointer;
  padding-left: 10px;
  padding-top: 10px;
  padding-bottom: 6px;
}

.icon-menu {
  cursor: pointer;
  font-family: 'Open Sans', sans-serif;
  font-size: 20px;
  padding-bottom: 25px;
  padding-left: 25px;
  padding-top: 25px;
  text-decoration: none;
  text-transform: uppercase;
}

.icon-menu img {
  margin-right: 5px;
}

.block.open {
   left: 0px
}

  </style>
  </head>
  <body>

  <div class="icon-menu">
        Menu
      </div>

    <div class="block">

  <div class="background">

    <div class="menu">

      <!-- Иконка меню -->
      <div class="icon-close">
        <img src="images/close-btn.png">
      </div>

      <!-- Меню -->
      <ul>
        <li><a href="#">About</a></li>
        <li><a href="#">Blog</a></li>
        <li><a href="#">Help</a></li>
        <li><a href="#">Contact</a></li>
      </ul>
    </div>
  </div>
  </div>

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script>
$(function() {
/* Открытие меню */
 //главная функция
    $('.icon-menu').click(function() {
        $('.block').toggleClass('open')
    });


/* Закрытие меню */
    $('.icon-close').click(function() {
    $('.block').removeClass('open')
    });



});
  </script>
  </body>
</html>

Jolly 01.06.2017 12:24

Отлично! Спасибо Огромное!!!:dance:


Часовой пояс GMT +3, время: 02:35.