Меню Навигации Вверх

#javascript #html #css

Вопрос:

Я хочу сделать так, чтобы при нажатии на кнопку переключения все содержимое (общее, трендовое, ваши сообщения) поднималось и выходило со страницы с переходом, и единственной оставшейся вещью на странице была бы кнопка переключения. Таким образом, при нажатии кнопки переключения содержимое должно увеличиваться и абсолютно не отображаться, но кнопка переключения все равно должна быть видна на экране, на случай, если пользователь захочет вернуть «общие, трендовые, ваши сообщения» с их без отображения. Большое вам спасибо, ответы приветствуются. Вот мой код:

 const navigation = document.querySelector('.navigation');
document.querySelector('.toggle').onclick = function() {
  this.classList.toggle('active');
  navigation.classList.toggle('active');
} 
 hr.two {
  height: 5px;
  border: 2px solid black;
  background: linear-gradient(to left, orange, blue, green, yellow, purple, red);
  margin-top: -5px;
  margin-left: -8px;
  width: 1436px;
  overflow: hidden;
}

@import url('https://fonts.googleapis.com/css2?family=Rajdhani:wght@600amp;display=swap');
.toggle {
  position: fixed;
  left: 1210px;
  top: 145px;
  width: 35px;
  height: 30px;
  background: orange;
  cursor: pointer;
  border: 5px solid #E0E0E0;
  border-radius: 50%;
  border-bottom-left-radius: 0px;
  border-bottom-right-radius: 0px;
}

.toggle::before {
  content: 'f077';
  font-family: fontAwesome;
  position: absolute;
  width: 100%;
  height: 100%;
  line-height: 30px;
  text-align: center;
  margin-top: 0px;
  font-size: 16px;
  color: black;
}

.toggle.active::before {
  content: 'f078';
}

.container .navigation {
  position: relative;
  width: 0px;
  height: 0px;
  background: #E0E0E0;
  border-radius: 10px;
  overflow: hidden;
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
  transition: 0.5s;
}

.container .navigation a {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  display: block;
}

.container .navigation.active {
  height: 0px;
  width: 0px;
  transition: 5s;
} 
 <hr class="two" style="margin-top:-235px">

<div class="navigation">
  <div class="container" style="position:fixed; margin-top:-7px">
    <a href="home.php" style="margin-left:1040px; text-decoration:none; color:orange; font-size:24px; border-top:8px solid blue; font-family:Verdana; margin-top:-1px; position:fixed">General</a>
    <a href="trending.php" style="margin-left:1153px; text-decoration:none; color:orange; font-size:24px; font-family:Verdana; margin-top:7px; position:fixed">Trending</a>
    <a href="yourposts.php" style="margin-left:1278px; text-decoration:none; color:orange; font-size:24px; font-family:Verdana; position:fixed; margin-top:8px">Your Posts</a>
  </div>
</div>


<div class="toggle"></div> 

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

1. Здравствуйте, прежде чем приступить к самому вопросу, я хочу сказать, что ваш css довольно плох, имо. Вы используете фиксированное позиционирование, фиксированные отрицательные поля и тому подобное, что делает веб-сайт практически отзывчивым (он даже не отображается во фрагменте кода).

Ответ №1:

Я думаю, что это то, что вы ищете:

 document.getElementById("toggleBtn").addEventListener("click", function() {
  document.querySelector("nav").classList.toggle("hidden");
}); 
 nav {
  transition: all 0.5s;
  height: 100%;
}

nav.hidden {
  transform: translateY(-100%);
  height: 0%;
}

nav {
  justify-content: flex-end;
  display: flex;
}

.navlink {
  display: block;
  margin: 1.5em;
  font-family: sans-serif;
  border: solid blue 2pt;
  padding: 1em 3em;
} 
 <hr />
<nav>
  <a class="navlink" href="home.php">General</a>
  <a class="navlink" href="trending.php">Trending</a>
  <a class="navlink" href="yourposts.php">Your Posts</a>
</nav>
<button id="toggleBtn">Toggle</button> 

Я делаю это, переводя навигацию по оси Y на -100%, что делает ее невидимой (если она находится в верхней части страницы). Я также попытался немного подражать вашему макету, но использовал гораздо более простой и отзывчивый CSS.

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

1. Единственное, что кнопка, которая находится внизу, не поднимается. Вы можете попробовать установить height:0px; nav.hidden значение, но плавного перехода не будет.