Скрыть боковую панель на устройствах со средним и маленьким экраном

Я хочу сделать боковую панель на своем веб-сайте видимой только на устройствах с большим экраном и по умолчанию скрывать ее на устройствах малого и среднего размера и сделать кнопку для ее отображения. Я хочу, чтобы этот сайт вел себя так же: https://colorlib.com/preview/theme/elen/index.html

Я сделал этот код:

HTML:

<template>
  <div id = "app">
    <div class = "main-container">
      <div class = "side-panel">
        <div class = "side-panel bg-golden h-100">
          <div class = "container h-100">
            <div class = "row h-100 pt-5 justify-content-center align-items-center">
              <div class = "col-12 text-center text-secondary">
                <h5>AYMAN TARIG</h5>
                <ul class = "list-group pt-5 pb-4">
                  <li class = "list-group-item bg-transparent">HOME</li>
                  <li class = "list-group-item bg-transparent">ABOUT</li>
                  <li class = "list-group-item bg-transparent">ARTICLES</li>
                  <li class = "list-group-item bg-transparent">CONTACT</li>
                </ul>
                <div id = "footer">
                  <h6 class = "pt-5">Copyright ©2019 All rights reserved | Ayman Tarig</h6>
                  <h6 class = "pt-4">
                    <i class = "fab fa-facebook-f p-2"></i>
                    <i class = "fab fa-google-plus-g p-2"></i>
                  </h6>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <div class = "content">
        <div id = "background" class = "h-100">
          <div class = "container p-5 h-100">
            <div class = "row h-100 justify-content-center align-items-center">
              <div class = "col-12">
                <h3 class = "text-center text-dark pt-4">AYMAN TARIG</h3>
                <h6
                  class = "text-center text-secondary pb-4"
                >Lorem ipsum dolor, sit amet consectetur adipisicing elit. Accusantium, voluptatem sit? Nihil architecto deserunt, consequuntur distinctio expedita molestiae a, provident eos tenetur nostrum odit. Minus optio veritatis tenetur iure eos, officia dolorem sit obcaecati aliquam, ipsum beatae atque. Dolor, deleniti!</h6>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

CSS:

<style scoped>
.main-container {
  display: flex;
  align-items: stretch;
  min-height: 100vh;
}

h1 {
  text-decoration: underline #3a3939;
}
#background {
  background: url("./imgs/80911.jpg");
  background-size: cover;
}

h2 > i {
  cursor: pointer;
}

.side-panel {
  position: fixed;
  height: 100vh;
  width: 25%;
}

ul {
  list-style: none;
}

li:hover {
  background-color: #eeeeee !important;
  color: #02131f !important;
}

i:hover {
  color: #ffffff;
}

.bg-golden {
  background-color: #02131f;
}

.content {
  width: 100%;
  margin-left: 25%;
}

@media (max-width: 540px) {
  .main-container {
    display: block;
    flex-wrap: wrap;
  }

  .content {
    width: 100%;
    margin-left: 0;
  }

  .side-panel {
    position: static;
    width: 100%;
    min-height: 250px;
    height: auto;
  }

  #footer {
    display: none;
  }
}
</style>

Может ли кто-нибудь помочь мне изменить мой код и достижение

Что вы пробовали? Никто не поможет вам, если вы сделаете это за вас только одного человека... Для начала я бы посоветовал вам поиграть со свойством перехода css и @media, которые вы уже использовали.

Mikel Ferreiro 28.03.2019 09:18

Я на самом деле не знаю, как это сделать, я все еще учусь @MikelFerreiro

Ayman Tarig 28.03.2019 09:20

Вы пытались сначала изучить @media и переход в css?

Francis ask question 28.03.2019 09:24

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

Mikel Ferreiro 28.03.2019 09:27

См. этот вопрос: stackoverflow.com/questions/48996084

Zim 28.03.2019 12:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
4 475
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если вы ориентируетесь на мобильные устройства с помощью @media (max-width: 540px), добавьте display: none в определение .side-panel.

В противном случае добавьте новый медиа-запрос

@media (max-width: 375px) {
  .side-panel {
    position: absolute;
    display: none;
  }
}

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

Ayman Tarig 28.03.2019 09:22

@AymanTarig У вас уже есть кнопка для этого в обычном случае? Если да, то вам нечего делать, иначе вам придется изначально скрыть кнопку, а в запросе @media (max-width: 375px) вы можете определить кнопку для отображения.

varun agarwal 28.03.2019 09:44
Ответ принят как подходящий

Я работаю над чем-то подобным, вам нужно будет настроить код в соответствии с вашими потребностями:

Редактировать: Фиксированное положение боковой панели.

/* JS */

var sidebar = $("#sidebar");
var hamburger = $('#navTrigger');

hamburger.click(function(e) {
  e.preventDefault();
  $(this).toggleClass('is-active');
  // This will add `sidebar-opened`
  $('#wrapper').toggleClass("sidebar-opened");
  // Remove magin left
  sidebar.toggleClass('ml-0');
});
/* CSS */

body {
  overflow-x: hidden;
}


/* Sidebar */

#sidebar {
  -webkit-transition: margin .25s ease-out;
  transition: margin .25s ease-out;
  padding: 15px;
  width: 250px;
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  z-index: 999;
}

#content {
  -webkit-transition: margin .25s ease-out;
  transition: margin .25s ease-out;
}

.sidebar-opened #content {
  margin-left: 250px;
}

@media (max-width: 992px) {
  #sidebar {
    margin-left: -251px;
  }
}

@media (min-width: 992px) {
  #content {
    margin-left: 250px;
  }
}


/* Hamburger Menu */

.nav-trigger {
  cursor: pointer;
  width: 45px;
  height: 45px;
  padding: 1rem;
  display: inline-block;
  z-index: 999;
  position: absolute;
  right: -45px;
  top: 0;
}

.nav-trigger:hover .hamburger {
  transition: transform 50ms;
  transform: scale(.95);
}

.nav-trigger .hamburger {
  position: relative;
  width: 45px;
  height: 45px;
  transition: transform 500ms ease-in-out;
}

.nav-trigger .hamburger::before,
.nav-trigger .hamburger::after,
.nav-trigger .hamburger .hamburger-icon {
  content: '';
  position: absolute;
  width: 25px;
  height: 2px;
  background: #222;
  transform-origin: 100% 50%;
  transition: transform .5s;
}

.nav-trigger .hamburger::before {
  top: 5px;
}

.nav-trigger .hamburger::after {
  top: 17px;
}

.nav-trigger .hamburger .hamburger-icon {
  width: 25px;
  top: 11px;
  transform-origin: 50% 50%;
}

.nav-trigger.is-active .hamburger::before,
.nav-trigger.is-active .hamburger::after,
.nav-trigger.is-active .hamburger .hamburger-icon {
  background: #222;
}

.nav-trigger.is-active .hamburger::before {
  transform: translate3d(-5px, 0px, 0) rotateZ(-45deg);
}

.nav-trigger.is-active .hamburger .hamburger-icon {
  transform: rotateY(-90deg);
}

.nav-trigger.is-active .hamburger::after {
  transform: translate3d(-5px, 5px, 0) rotateZ(45deg);
}


/* Navbar */

.navbar-link {
  padding: .5rem 1rem;
  display: block;
  color: #fff
}

.navbar-link:hover {
  background-color: #eeeeee;
  color: #02131f;
  text-decoration: none;
}

i:hover {
  color: #fff;
}


/* Content */

.bg-golden {
  background-color: #02131f;
  color: #fff
}

.bg-fullscreen {
  background-image: url(https://via.placeholder.com/1280x720.png/DCDCDC/fff);
  background-position: center center;
  background-repeat: no-repeat;
  background-size: cover;
  height: 100vh;
  position: relative;
  background-attachment: scroll;
}
<script src = "https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity = "sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin = "anonymous"></script>
<script src = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity = "sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin = "anonymous"></script>
<link href = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel = "stylesheet" />
<link rel = "stylesheet" href = "https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity = "sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin = "anonymous">

<div id = "app">
  <div class = "main-container" id = "wrapper">
    <div class = "d-flex vh-100">

      <!-- Sidebar -->
      <aside id = "sidebar" class = "side-panel d-flex flex-column h-100 bg-golden">
        <!-- d-lg-none will hide the button on medium and large screens -->
        <a id = "navTrigger" class = "d-lg-none nav-trigger" role = "button" title = "sweet hamburger">
          <span class = "hamburger">
							<span class = "hamburger-icon"></span>
          </span>
        </a>
        <h5 class = "sidebar-heading mt-5">AYMAN TARIG</h5>
        <ul class = "navbar-nav bd-navbar-nav py-5">
          <li class = "nav-item"><a class = "navbar-link" href = "#">HOME</a></li>
          <li class = "nav-item"><a class = "navbar-link" href = "#">ABOUT</a></li>
          <li class = "nav-item"><a class = "navbar-link" href = "#">ARTICLES</a></li>
          <li class = "nav-item"><a class = "navbar-link" href = "#">CONTACT</a></li>
          </li>
        </ul>
        <div id = "footer" class = "mt-auto">
          <small class = "">Copyright ©2019 All rights reserved | Ayman Tarig</small>
          <p class = "pt-4">
            <i class = "fab fa-facebook-f p-2"></i>
            <i class = "fab fa-google-plus-g p-2"></i>
          </p>
        </div>
      </aside>

      <!-- Content -->
      <div id = "content" class = "w-100">
        <!-- seciton 1 -->
        <div id = "background" class = "bg-fullscreen h-100">
          <div class = "container p-5 d-flex h-100">
            <div class = "row justify-content-center align-items-center">
              <div class = "col-12">
                <h3 class = "text-center text-dark pt-4">AYMAN TARIG</h3>
                <h6 class = "text-center text-secondary pb-4">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Accusantium, voluptatem sit? Nihil architecto deserunt, consequuntur distinctio expedita molestiae a, provident eos tenetur nostrum odit. Minus optio veritatis tenetur iure eos,
                  officia dolorem sit obcaecati aliquam, ipsum beatae atque. Dolor, deleniti!</h6>
              </div>
            </div>
          </div>
        </div>
        <!-- seciton 2 -->
        <div class = "section-2 bg-warning" style = "height: 1000px">
          <div class = "container p-5 d-flex h-100 text-center">
            <div class = "row justify-content-center align-items-center">
              <div class = "col-12">
                <h2 class = "display-4">Another section</h2>
                <h6 class = "lead">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Accusantium, voluptatem sit? Nihil architecto deserunt, consequuntur distinctio expedita molestiae a, provident eos tenetur nostrum odit. Minus optio veritatis tenetur iure eos,
                  officia dolorem sit obcaecati aliquam, ipsum beatae atque. Dolor, deleniti!</h6>
              </div>
            </div>
          </div>
        </div>
        <!-- seciton 3 -->
        <div class = "section-3 bg-info" style = "height: 1000px">
          <div class = "container p-5 d-flex h-100 text-center">
            <div class = "row justify-content-center align-items-center">
              <div class = "col-12">
                <h2 class = "display-4">Another section</h2>
                <h6 class = "lead">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Accusantium, voluptatem sit? Nihil architecto deserunt, consequuntur distinctio expedita molestiae a, provident eos tenetur nostrum odit. Minus optio veritatis tenetur iure eos,
                  officia dolorem sit obcaecati aliquam, ipsum beatae atque. Dolor, deleniti!</h6>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

Хорошо, но я заметил одну небольшую проблему: текст в div с нижним колонтитулом id перекрывается с элементами списка над ним на некоторых экранах.

Ayman Tarig 29.03.2019 06:59

И боковая панель не фиксируется на своем месте при прокрутке

Ayman Tarig 29.03.2019 07:00

Вы не упомянули, что вам нужно исправить боковую панель :) Я обновил ответ, пожалуйста, проверьте его.

awran5 29.03.2019 09:49

Теперь все хорошо, но текст все еще накладывается на боковую панель

Ayman Tarig 29.03.2019 11:05

У меня это работает нормально, я добавил класс начальной загрузки py-5 в список навигации, который добавляет одинаковое верхнее/нижнее заполнение. не изменяйте размер экрана, чтобы проверить его, попробуйте вместо этого использовать инструмент разработчика хром.

awran5 29.03.2019 11:31

@ awran5 как сделать так, чтобы боковая панель перекрывала другой контент, чтобы другой div не сжимался

sanoj lawrence 22.10.2019 07:11

@sanojlawrence Вам нужно использовать ширину вместо поля, проверьте это codepen.io/awran5/pen/vYYxyMO

awran5 23.10.2019 05:32

Другие вопросы по теме