Оверлейное меню Safari не отображается - PullRequest
0 голосов
/ 06 августа 2020

У меня возникли проблемы с выяснением причины, по которой меню мобильной навигации для мобильных устройств не отображается в Safari. Он отлично работает на chrome и firefox. Изначально у меня было меню флажков, и оно делало то же самое. Поэтому я переключился на меню на основе классов, которое запускается с функциями javascript, и оно все еще работает.

Это модифицированная версия этого из w3schools https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_overlay

javascript просто добавляет и удаляет стили, mobile-overlay-button-hidden используется для того, чтобы кнопка исчезла за кнопкой закрытия. body.style.overflow = 'hidden' используется для предотвращения прокрутки, когда окно открыто.

Вот оно живое: ryanjthacker.com

image
nav {
  position: fixed;
  font-size: 14px;
  width: 100%;
  overflow: hidden;
  top: 0;
  padding-top: 14px;
  padding-bottom: 14px;
  z-index: 1;

  @media (max-width: #{map-get($breakpoints, "tablet")}) {
    width: 100vw;
    font-size: $font-size-mobile-p;
  }
}

.desktop-nav {
  @media (max-width: #{map-get($breakpoints, "tablet")}) {
    display: none;
  }
}

.nav-img {
  height: 20px;
  float: left;
  padding-left: 40px;
  margin: auto;
  z-index: 2;
  position: relative;

  @media (max-width: #{map-get($breakpoints, "tablet")}) {
    padding-left: 20px;
  }
}

.nav-links {
  margin-right: 60px;
  text-decoration: none;
  float: right;
  color: white;
  letter-spacing: 1.5px;

  @media (max-width: #{map-get($breakpoints, "tablet")}) {
    margin-top: 2px;
    margin-right: 20px;
  }
}

/* Mobile Menu Overlay */

.mobile-overlay {
  display: none;

  @media (max-width: #{map-get($breakpoints, "tablet")}) {
    display: block;
    height: 100%;
    width: 0%;
    position: fixed;
    z-index: 1;
    top: 0;
    right: 0;
    background-color: rgba(12, 12, 12, 0.959);
    overflow-x: hidden;
    transition: 0.7s;
  }
}

.mobile-overlay-content {
  position: relative;
  top: 50%;
  transform: translateY(-50%);
  width: 100%;
  text-align: center;
  margin-top: 30px;
}

.mobile-overlay a {
  padding: 15px;
  text-decoration: none;
  font-size: 26px;
  color: $clr-default;
  display: block;
  transition: 0.3s;
}

.mobile-overlay a:hover,
.mobile-overlay a:focus {
  color: $clr-default;
}

.mobile-overlay .closebtn {
  position: absolute;
  top: -30px;
  right: 4px;
  font-size: 50px;
}

.mobile-overlay-button {
  display: none;

  @media (max-width: #{map-get($breakpoints, "tablet")}) {
    display: block;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    right: 0;
    font-size: 30px;
    margin-right: 18px;
    cursor: pointer;
  }
}

.mobile-overlay-button-hidden {
  opacity: 0;
  transition: opacity 1s, height 0 1s;
  height: 0;
}
const mobileNav = document.getElementById('mobile-nav');
const closeBtn = document.querySelector('.closebtn');
const openBtn = document.querySelector('.mobile-overlay-button');
const body = document.querySelector('body');

function openNav() {
  mobileNav.style.width = '100%';
  closeBtn.classList.remove('mobile-overlay-button-hidden');
  openBtn.classList.add('mobile-overlay-button-hidden');
  body.style.overflow = 'hidden';
}

function closeNav() {
  mobileNav.style.width = '0%';
  closeBtn.classList.add('mobile-overlay-button-hidden');
  openBtn.classList.remove('mobile-overlay-button-hidden');
  body.style.overflow = 'visible';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...