Как я могу добавить гамбургер в мобильное представление моего сайта

#javascript #html #css

#javascript #HTML #css

Вопрос:

Я должен добавить гамбургер для мобильного просмотра кода моего веб-сайта.

Я пытался с помощью w3 school, но это не работает нормально.

Я поделюсь своим html и css-кодом. Я добавил значок гамбургера, просто нужно сделать его активным.

Должен ли я писать код в отдельном файле JavaScript или добавлять любой код здесь, в моем HTML?

Я попытался добавить гамбургер из свойств HTML CSS

HTML и CSS для заголовка мобильного представления:

 .mobheader {
  width: 80%;
  height: auto;
  margin: 0px auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.hamburger {
  font-size: 33px;
  color: white;
  float: left;
  margin-top: 20px;
  margin-bottom: 20px;
}  
 <div class="mobheader">
  <div class="hamburger">
    <i class="fas fa-bars"></i>
  </div>
  <div class="logo">
    <h1>
      <a href="#"><img src="img/logomob.png" alt="logo"></a>
    </h1>
  </div>
  <div class="dots">
    <i class="fas fa-search"></i>
  </div>
</div>  

Я хочу, чтобы этот гамбургер работал таким образом, чтобы он отображал 3 меню при нажатии

Комментарии:

1. используйте bootstrap. проверьте ссылку. w3schools.com/bootstrap/bootstrap_navbar.asp

2. Но мой руководитель проекта не принимает bootstrap только JavaScript

Ответ №1:

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

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

Я нахожу codepen и добавляю к фрагменту, чтобы показать вам, что вы хотели.

Источник: https://codepen.io/mranenko/pen/wevamj

 (function() {

  var hamburger = {
    navToggle: document.querySelector('.nav-toggle'),
    nav: document.querySelector('nav'),

    doToggle: function(e) {
      e.preventDefault();
      this.navToggle.classList.toggle('expanded');
      this.nav.classList.toggle('expanded');
    }
  };

  hamburger.navToggle.addEventListener('click', function(e) {
    hamburger.doToggle(e);
  });

}());  
 /* imports */

@import url("https://fonts.googleapis.com/css?family=Source Sans Pro");

/* colors */


/* variables */


/* mixins */


/* resets and base styles */

* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  -webkit-text-size-adjust: 100%;
  -moz-text-size-adjust: 100%;
  -ms-text-size-adjust: 100%;
}

*:focus {
  outline: none;
}

html {
  background: #5634d1;
  color: white;
  font: normal 10px/1.42857 "Source Sans Pro", Helvetica, Arial, sans-serif;
}

body {
  background: none;
  color: inherit;
  font: inherit;
}

a {
  color: inherit;
  cursor: pointer;
  text-decoration: none;
}

a:hover {
  opacity: 0.8;
}


/* nav toggle */

.nav-toggle {
  -webkit-user-select: none;
  -moz-user-select: none;
  user-select: none;
  cursor: pointer;
  height: 2rem;
  left: 2rem;
  position: fixed;
  top: 2rem;
  width: 3.6rem;
  z-index: 2;
}

.nav-toggle:hover {
  opacity: 0.8;
}

.nav-toggle .nav-toggle-bar,
.nav-toggle .nav-toggle-bar::after,
.nav-toggle .nav-toggle-bar::before {
  position: absolute;
  top: 50%;
  -webkit-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  transform: translateY(-50%);
  -webkit-transition: all 0.5s ease;
  -moz-transition: all 0.5s ease;
  -ms-transition: all 0.5s ease;
  -o-transition: all 0.5s ease;
  transition: all 0.5s ease;
  background: white;
  content: '';
  height: 0.4rem;
  width: 100%;
}

.nav-toggle .nav-toggle-bar {
  margin-top: 0;
}

.nav-toggle .nav-toggle-bar::after {
  margin-top: 0.8rem;
}

.nav-toggle .nav-toggle-bar::before {
  margin-top: -0.8rem;
}

.nav-toggle.expanded .nav-toggle-bar {
  background: transparent;
}

.nav-toggle.expanded .nav-toggle-bar::after,
.nav-toggle.expanded .nav-toggle-bar::before {
  background: white;
  margin-top: 0;
}

.nav-toggle.expanded .nav-toggle-bar::after {
  -ms-transform: rotate(45deg);
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
}

.nav-toggle.expanded .nav-toggle-bar::before {
  -ms-transform: rotate(-45deg);
  -webkit-transform: rotate(-45deg);
  transform: rotate(-45deg);
}


/* nav */

.nav {
  -webkit-transition: left 0.5s ease;
  -moz-transition: left 0.5s ease;
  -ms-transition: left 0.5s ease;
  -o-transition: left 0.5s ease;
  transition: left 0.5s ease;
  background: #28dde0;
  color: white;
  cursor: pointer;
  font-size: 2rem;
  height: 100vh;
  left: -20rem;
  padding: 6rem 2rem 2rem 2rem;
  position: fixed;
  top: 0;
  width: 20rem;
  z-index: 1;
}

.nav.expanded {
  left: 0;
}

.nav ul {
  position: absolute;
  top: 50%;
  -webkit-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  transform: translateY(-50%);
  list-style: none;
  margin: 0;
  padding: 0;
}  
 <div class="nav-toggle">
  <div class="nav-toggle-bar"></div>
</div>
<nav class="nav">
  <ul>
    <li><a href="#">Portfolio</a></li>
    <li><a href="#">Services</a></li>
    <li><a href="#">Contact</a></li>
  </ul>
</nav>  

Комментарии:

1. Если это то, что вы хотели, отметьте ответ как правильный, пожалуйста. Надеюсь, это помогло вам 🙂 @KashifKhalid

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

3. Вы используете только чистый HTML и JS? @KashifKhalid

4. Да, HTML, CSS и JavaScript

5. @KashifKhalid Вам нужно создать div содержимого меню, которое вы хотите показать, и показывать его, когда пользователь нажимает на гамбургер, вам нужно перехватить это действие с помощью JavaScript и изменить класс содержимого меню. Пример: codepen.io/mranenko/pen/wevamj

Ответ №2:

Предполагая, что гамбургер — это изображение:

 <img src="img/hamburger.png" alt="hamburger"/>
  

Вам не нужны теги h1 для изображений, они предназначены для заголовков (т.Е. Текста)

Также помните «/», чтобы закрыть ваши теги img; у вашего логотипа их нет.

Комментарии:

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

2. Сначала вам нужно будет добавить его либо в виде значка, либо изображения, чтобы он отображался на странице. Для отображения меню, как вы хотите, потребуется гораздо больше кодирования, и это не то, что мы можем объяснить здесь в нескольких предложениях. Я бы посоветовал сначала отобразить ваше изображение, а затем попытаться отсортировать ваше меню. Удачи!

3. <div class=»hamburger»> <i class=»fas fa-bars»></i> </div>

4. Извините, теперь я понимаю. «Гамбургер» — это значок с 3 полосами, на который вы ссылаетесь. Возможно, эта страница может помочь: w3schools.com/howto/howto_js_dropdown.asp