Выдвигающаяся панель, реализованная на CSS3 и jQuery

demosourse

На многих сайтах используются выдвигающиеся панели. Сегодня мы покажем как реализовать подобный функционал.

Структура

HTML структура очень проста. Мы создали элемент <header>, который при прокрутке страницы, будет прикреплён к её верхней части. В отдельном элементе <div> поместим контент, а для панели заведём отдельный блок .cd-panel. В элементе <main> поместим основной контент.

<main class="cd-main-content">
	<!-- your main content here -->
</main>

<div class="cd-panel from-right">
	<header class="cd-panel-header">
		<h1>Title Goes Here</h1>
		<a href="#0" class="cd-panel-close">Close</a>
	</header>

	<div class="cd-panel-container">
		<div class="cd-panel-content">
			<!-- your side content here -->
		</div> <!-- cd-panel-content -->
	</div> <!-- cd-panel-container -->
</div> <!-- cd-panel -->

Стили

Несколько слов о CSS коде. Во-первых, почему мы поместили панель отдельно от <header>? Это необходимо для применения трансформаций через свойство translateX. В противном случае могут возникнуть ошибки отображения.

.cd-panel {
	/*...*/
  	visibility: hidden;
	transition: visibility 0s 0.6s;
}

.cd-panel.is-visible {
	visibility: visible;
	transition: visibility 0s 0s;
}

.cd-panel-header {
	/*...*/
	position: fixed;
	top: -50px;
	width: 90%;
	height: 50px;
	transition: top 0.3s 0s;
}

.is-visible .cd-panel-header {
	top: 0;
	transition: top 0.3s 0.3s;
}

.cd-panel-container {
	/*...*/
	position: fixed;
	width: 90%;
	height: 100%;
	top: 0;
	right: 0;

	transition-property: transform;
	transition-duration: 0.3s;
	transition-delay: 0.3s;

	transform: translate3d(100%, 0, 0);
}

.is-visible .cd-panel-container {
	transform: translate3d(0, 0, 0);
	transition-delay: 0s;
}

Стоит обратить внимание на свойство transition-delay. Оно отвечает за задержку анимации, что позволяет добиться интересного визуального эффекта.

Заметка: если сменить класс в .cd-panel с .from-right на .from-left, то панель будет появляться с левой стороны.

Обработка событий

Через jQuery мы просто добавляем/удаляем класс .is-visible для отображения/скрытия панели.

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: https://codyhouse.co/gem/css-slide-in-panel/
Перевел: Станислав Протасевич
Урок создан: 29 Марта 2016
Просмотров: 13127
Правила перепечатки


5 последних уроков рубрики "CSS"

или авторизуйтесь, чтобы добавлять комментарии, оценивать уроки и сохранять их в личном кабинете
  • 5 Апреля 2016 11:28
    shoydullo
    http://www.rd.uz/ru/index.php
  • 27 Апреля 2016 11:32
    steamtt
    Нужет совет по следующей ситуации. Каркас сайта - див с установленной фиксированной шириной, внутри него еще два дива с разной, тоже фиксированной, шириной. Нужно, чтобы панель выезжала точно до смежной границы этих двух внутренних дивов (в левом висит навигация, в правом - прочий переменный контент). "Вылет" боковой панели в % от ширины экрана позволяет решить проблему только для одной, конкретной ширины экрана. Меняется ширина экрана - панель начинает либо "наезжать" на левый навигационный див, либо "недозакрывает" правый, с контентом. Можно ли как то задать координату вылета панели в формате типа - "центр экрана +/- ХХХ пиксел влево/вправо от центра"?
^ Наверх ^