Проблемы с переключением маржи - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь создать мобильное меню с:

  • закрепленным заголовком
  • строкой поиска, которая появляется, когда вызывается как div под закрепленным заголовком
  • div меню содержимого, которое появляется либо под закрепленным заголовком, либо под строкой поиска, если панель поиска уже открыта.

Липкий заголовок имеет высоту 50px, поэтому я создал класс для содержимого тела, который устанавливает margin-top основного содержимого на 75px. Таким образом, верхняя часть содержимого тела не скрывается за липким заголовком.

Сначала проблема заключалась в том, что margin-top показывал полный 75px, когда я вызывал либо в строке поиска, либо в div содержимого, поэтому я создал функцию с переключателем, чтобы сказать «если поиск или отображаются полосы содержимого, затем измените верхнюю границу основного содержимого на 25 пикселей. .content-closed { margin-top: 75px; } .content-open { margin-top: 25px; } Это, похоже, работает нормально. Однако у меня все еще есть две проблемы, и я потратил слишком много времени, пытаясь понять их, и не могу!

Проблема 1: Если я открою как div поиска, так и div содержимого - margin-top переключается обратно на 75, оставляя слишком большой пробел. Я хочу сказать, что «если поиск или контент уже открыт, не переключайтесь при открытии другого - продолжайте использовать .content-open». Как я могу это сделать?

Проблема 2: div содержимого занимает дополнительное место над верхней ссылкой, когда отображаются как поиск, так и содержимое. Я не могу понять, почему это происходит или как это исправить. Любые идеи?

Обратите внимание, я пытаюсь использовать CSS и JS только для максимальной совместимости.

Третья проблема, если она не требует слишком много, и кто-то может помочь. Там есть ссылка, X в строке поиска, которая закрывает панель поиска, а в форме панели поиска есть увеличительное стекло. Я хочу, чтобы X исчез, если кто-то щелкнет увеличительное стекло, независимо от того, были ли они введены или не введены в критерии поиска. Может ли кто-нибудь помочь с этим тоже? Большое спасибо.

function myFunction() {
  var x = document.getElementById("menu-contents");
  if (x.style.display === "block") {
    x.style.display = "none";
  } else {
    x.style.display = "block";
  }
}

function myFunction3() {
  var element = document.getElementById("main-content");
  element.classList.toggle("content-open");
}

function myFunction2() {
  var x = document.getElementById("searchpop");
  if (x.style.display === "block") {
    x.style.display = "none";
  } else {
    x.style.display = "block";
  }
}
body {
  margin: 0;
}

.menutop {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 9999;
  height: 50px;
  width: 100%;
  background-color: #C6CFCD;
}

.content-closed {
  margin-top: 75px;
}

.content-open {
  margin-top: 25px;
}

.menu-logo {
  padding-left: 20px;
  padding-top: 5px;
  float: left;
}

.three-lines {
  font-weight: bold;
  font-size: 25px;
  color: #1E1C1C;
  float: right;
  padding-top: 5px;
  padding-right: 5px;
  text-decoration: none;
}

.three-lines a:link {
  color: #1E1C1C;
  text-decoration: none;
}

.three-lines a:visited {
  color: #1E1C1C;
  text-decoration: none;
}

.three-lines a:hover {
  color: #ff0000;
}

.three-lines a:active {
  color: #ff0000;
}

.menu-name {
  font-family: Lato;
  font-size: 28px;
  color: #333333;
  font-style: normal;
  font-weight: 700;
  text-decoration: none;
  float: right;
  padding-top: 5px;
  padding-left: 5px;
  padding-right: 20px;
}

.search-icon {
  font-size: 25px;
  color: #000000;
  float: right;
  padding-top: 5px;
  padding-left: 10px;
  padding-right: 20px;
}

#menu-contents {
  display: none;
  background-color: grey;
  padding-top: 50px;
  padding-bottom: 20px;
}

.menu-links {
  font-family: Lato;
  font-size: 18px;
  color: #333333;
  font-style: normal;
  font-weight: 400;
  text-decoration: none;
}

.menu-links a:link {
  color: #333333;
  font-weight: normal;
  text-decoration: none;
}

.menu-links a:visited {
  color: #333333;
  font-weight: normal;
  text-decoration: none;
}

.menu-links a:hover {
  color: #333333;
  font-weight: normal;
  text-decoration: none;
}

.menu-links a:active {
  color: #333333;
  font-weight: normal;
  text-decoration: none;
}

.li {
  margin: 0.3em 0;
}


/* This is the search pop out */

.searchnav {
  overflow: hidden;
  background-color: #ff0000;
  margin-top: 50px;
  display: none;
}

.searchnav .search-container {
  float: right;
}

.searchnav input[type=text] {
  padding: 6px;
  margin-top: 8px;
  font-size: 17px;
  border: none;
  width: 250px;
}

.searchnav .search-container button {
  float: right;
  padding: 6px 10px;
  margin-top: 8px;
  margin-right: 16px;
  background: #ddd;
  font-size: 17px;
  border: none;
}

.xexit {
  font-family: Lato;
  font-size: 28px;
  color: #333333;
  font-style: normal;
  font-weight: 700;
  text-decoration: none;
  float: right;
  padding-top: 5px;
  padding-left: 5px;
  padding-right: 20px;
}
image
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...