#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
значение, но плавного перехода не будет.