Переходы между разделами страницы с использованием CSS3

В последнее время увеличивается количество одностраничных сайтов. которые используют JavaScript для формирования различных эффектов для переходов между разделами. В данном уроке мы рассмотрим как построить такой шаблон, но будем использовать средства CSS для формирования перехода между разделами.

 

Разметка HTML

Код HTML содержит пять основных разделов: заголовок и четыре секции с содержанием. Каждая секция содержания будет иметь ID и класс panel. Также мы добавим еще один раздел с классом content внутрь секции. Первая секция #home будет иметь класс content без дополнительного раздела:

<!-- Главная -->
<div id="home" class="content">
    <h2>Главная</h2>
    <p>Содержание</p>
    <!-- ... -->
</div>
<!-- /Главная -->
 
<!-- Портфолио-->
<div id="portfolio" class="panel">
    <div class="content">
        <h2>Портфолио</h2>
        <p>Содержание</p>
        <!-- ... -->
    </div>
</div>
<!-- /Портфолио -->
 
<!-- Описание -->
<div id="about" class="panel">
    <div class="content">
        <h2>Описание</h2>
        <p>Содержание</p>
        <!-- ... -->
    </div>
</div>
<!-- /Описание -->
 
<!-- Контакт -->
<div id="contact" class="panel">
    <div class="content">
        <h2>Контакт</h2>
        <p>Содержание</p>
        <!-- ... -->
    </div>
</div>
<!-- /Контакт -->


В заголовке будет размещаться описание и навигация:

		<!-- Загловок с навигацией -->
		<div id="header">
			<h1>Переходы между страницами на CSS3</h1>
			<ul id="navigation">
				<li><a id="link-home" href="#home">Главная</a></li>
				<li><a id="link-portfolio" href="#portfolio">Портфолио</a></li>
				<li><a id="link-about" href="#about">Описание</a></li>
				<li><a id="link-contact" href="#contact">Контакт</a></li>
			</ul>
		</div>

Причина, по которой такая "неупорядоченная" структура размещается в конце, заключается в том, что навигация становится доступной с помощью общего селектора соседей (~) и можно устанавливать свой цвет для каждого пункта.

Основная идея заключается в использовании псевдо-класса :target для того, чтобы организовать переход к текущей секции. В описанном примере используется выскальзывание панелей сверху. В демонстрации построено еще два разных эффекта перехода.

 

CSS

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

#header{
    position: absolute;
    z-index: 2000;
    width: 235px;
    top: 50px;
}
#header h1{
    font-size: 30px;
    font-weight: 400;
    text-transform: uppercase;
    color: rgba(255,255,255,0.9);
    text-shadow: 0px 1px 1px rgba(0,0,0,0.3);
    padding: 20px;
    background: #000;
}
#navigation {
    margin-top: 20px;
    width: 235px;
    display:block;
    list-style:none;
    z-index:3;
}
#navigation a{
    color: #444;
    display: block;
    background: #fff;
    background: rgba(255,255,255,0.9);
    line-height: 50px;
    padding: 0px 20px;
    text-transform: uppercase;
    margin-bottom: 6px;
    box-shadow: 1px 1px 2px rgba(0,0,0,0.2);
    font-size: 14px;
}
#navigation a:hover {
    background: #ddd;
}

Все секции, кроме #home, имеют класс panel. Здесь будет использоваться переход, когда элемент получает класс “targeted”. Трюк заключается в использовании отрицательного значения для поля в классе “normal” и отказ от поля в псевдо-классе :target. Добавлением перехода мы заставляем панель выскальзывать сверху, когда ее выбирают:

.panel{
    min-width: 100%;
    height: 98%;
    overflow-y: auto;
    overflow-x: hidden;
    margin-top: -150%;
    position: absolute;
    background: #000;
    box-shadow: 0px 4px 7px rgba(0,0,0,0.6);
    z-index: 2;
    -webkit-transition: all .8s ease-in-out;
    -moz-transition: all .8s ease-in-out;
    -o-transition: all .8s ease-in-out;
    transition: all .8s ease-in-out;
}
.panel:target{
    margin-top: 0%;
    background-color: #ffcb00;
}

Теперь определим стиль класса content:

.content{
    right: 40px;
    left: 280px;
    top: 0px;
    position: absolute;
    padding-bottom: 30px;
}
.content h2{
    font-size: 110px;
    padding: 10px 0px 20px 0px;
    margin-top: 52px;
    color: #fff;
    color: rgba(255,255,255,0.9);
    text-shadow: 0px 1px 1px rgba(0,0,0,0.3);
}
.content p{
    font-size: 18px;
    padding: 10px;
    line-height: 24px;
    color: #fff;
    display: inline-block;
    background: black;
    padding: 10px;
    margin: 3px 0px;
}

Для того, чтобы изменить цвет текущего элемента навигации будем использовать псевдо-класс :target с общим селектором соседей, чтобы получить соответствующий пункт:

#home:target ~ #header #navigation #link-home,
#portfolio:target ~ #header #navigation #link-portfolio,
#about:target ~ #header #navigation #link-about,
#contact:target ~ #header #navigation #link-contact{
    background: #000;
    color: #fff;
}

Готово!

Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/UChrUPzUlvI/lessons.php

Читать комменты и комментировать

Добавить комментарий / отзыв



Защитный код
Обновить

Переходы между разделами страницы с использованием CSS3 | | 2012-06-19 12:00:00 | | Статьи Web-мастеру | | В последнее время увеличивается количество одностраничных сайтов. которые используют JavaScript для формирования различных эффектов для переходов между разделами. В данном уроке мы рассмотрим как | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: