shake_shake1
@shake_shake1
HTML-программист, 1С-разработчик, чиню утюги.

Появление/скрытие сайдбара?

Есть резиновый макет, шириной 800px, в нем content и aside. Content имеет ширину 100%, но не меньше 500px. Aside имеет фиксированную ширину 300px и должен плавно скрываться/появляться, если ширина окна меньше/больше 700px, а контент должен растягиваться на освободившееся место,. Вроде бы легко, а сижу мучаюсь уже несколько часов. Пробовал с помощью media, с transition, с animation, но целиком сделать не получается - что-то всегда работает не так. В js я не очень-то разбираюсь, с ним тоже не получилось.
<header><button name="click-me" id="click-me">Войти</button></header>
		<div class="content-wrapper">
			<main>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? 
</main>
			<aside>
adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?
			</aside>
		</div>
		<footer></footer>
		<div class="popup" id="popup">
			<h4>Popup Window</h2>
			<button class="btn-close" id="btn-close">Закрыть</button>
		</div>
		<div id="hide-layout" class="hide-layout"></div>


@keyframes slider {
	from {
		width: 300px;
	}
	60% {
		opacity: 0;
		width: 0;
	}
	to {
		opacity: 0;
		position: absolute;
		left: -9999px;
	}
}

@keyframes slider-in {
	from {
		opacity: 0;
		position: absolute;
		width: 0;
		left: 300px;
	}
	60% {
		opacity: 0;
		position: relative;
		width: 0;
	}
	to {
		opacity: 1;
		width: 300px;
		position: relative;
	}
}



html {
	background-color: #eee;
	height: 100%;
}
body, html {
	padding: 0;
	margin: 0;
}
body, main, header, aside, footer, .content-wrapper {
	display: flex;
	flex-wrap: wrap;
}
body {
	margin: 0 auto;
	min-width: 500px;
	max-width: 800px;
	background-color: #fff; 
	font-size: 40px;
	
}
header {
	width: 100%;
	height: 50px;
	border-bottom: 1px solid #999;
	justify-content: flex-end;
}
.content-wrapper {
	width: 100%;
	min-height: calc(100% - 51px);
	flex-wrap: nowrap;
	max-width: 800px;
	overflow: hidden; //для скрытия сайдбара
}
main {
	width: 100%;
	max-width: 499px;
	height: 100%;
	padding: 10px 10px 51px 10px;
	box-sizing: border-box;
}
aside {
	width: 300px;
	border-left: 1px solid #ccc;
	box-shadow: -15px 0 15px -10px rgba(53, 53, 53, 0.5);
	//transition: all 2.25s ease-out;
	padding: 10px 5px 51px 5px;
	box-sizing: border-box;
}
footer {
	width: 100%;
	height: 50px;
	position: fixed;
	bottom: 0;
	max-width: 800px;
	border-top: 1px solid #999;
	background-color: #fff;
}

.hide-layout {
	background: #fc0;
	bottom: 0;
	height: 100%;
	width: 100%;
	opacity: 0.1;
	position: fixed;
	top: 0;
	left: 0;
	z-index: 998; /* z-index для перекрытия остальных элементов */
	display: none;
}
.popup {
	background-color: gray;
	color: #fff;
	padding: 10px;
	position: absolute;
	z-index: 999;
}
.popup h4 {
	margin: 0;
}
@media screen and (max-width: 700px) {
	aside {//opacity: 0;
		//width: 0;
		//white-space: nowrap;
		animation: slider 2s ease-in forwards;
	}
	main {width: 100%;
		max-width: 700px;} 
}
@media screen and (min-width: 700px) {
	animation: slider-in 2s linear forwards;
}
@media screen and (min-width: 800px) {
	body {width: 800px;}
}
@media screen and (max-width: 800px) {
	body {width: 100%;}
} 
@media screen and (max-width: 500px) {
	body {width: 500px;}
}
  • Вопрос задан
  • 378 просмотров
Решения вопроса 1
shake_shake1
@shake_shake1 Автор вопроса
HTML-программист, 1С-разработчик, чиню утюги.
Нужно было лишь убрать max-width: 499; у тега main.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы