Webmasters.BY

Главная Статьи Веб-программирование Эффект "размытия" элементов страницы при помощи CSS3 и jQuery
Эффект "размытия" элементов страницы при помощи CSS3 и jQuery
Рейтинг пользователей: / 1
ХудшийЛучший 
16.12.2011 12:56

Эффект "размытия" элементов страницы при помощи CSS3 и jQuery

Сегодня мы хотим показать вам, как создать простой эффект размытия для текстовых элементов. Идея заключается в том, что как только мы наводим курсор на набор текстовых блоков, они будут становиться размытыми и уменьшенными. Кроме элемента, на который непосредственно будет наведен курсор, он, наоборот, увеличится в масштабе. Это позволит создать своего рода эффект «фокуса», при котором всё внимание концентрируется на выделенном объекте.

Для создания эффектов мы будем использовать свойство CSS3 transitions, а также немного jQuery. Так как CSS3 transitions пока еще не поддерживаются всеми браузерами, демо-пример лучше всего смотреть в Safari или Chrome (чтобы увидеть гладкие переходы).

Итак, давайте начнем!

HTML-разметка

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

<section class="ib-container" id="ib-container">
 <article>
 <header>
 <h3><a href="#">Заголовок</a></h3>
 <span>некий текст</span>
 </header>
 <p>Краткое описание</p>
 </article>
 <article>
 <!-- ... -->
 </article>
 <!-- ... -->
</section>

CSS

Основной контейнер будет фиксированной ширины и расположен по центру:

.ib-container{
 position: relative;
 width: 800px;
 margin: 30px auto;
}

Тут мы зададим clear:both для элементов (статьи будут плавающие) с помощью псевдо-элементов :before и :after :

.ib-container:before,
.ib-container:after {
 content:"";
 display:table;
}
.ib-container:after {
 clear:both;
}

Теперь, давайте зададим стили для каждой статьи. Мы сделаем их плавающими (float:left) и добавим две тени (box-shadow), из которых белая, будет иметь большое расстояние распространения. Кроме того, мы добавим transition для трех свойств: opacity, transform (мы хотим увеличить её), и box-shadow:

.ib-container article{
 width: 140px;
 height: 220px;
 background: #fff;
 cursor: pointer;
 float: left;
 border: 10px solid #fff;
 text-align: left;
 text-transform: none;
 margin: 15px;
 z-index: 1;
 box-shadow:
 0px 0px 0px 10px rgba(255,255,255,1),
 1px 1px 3px 10px rgba(0,0,0,0.2);
 transition:
 opacity 0.4s linear,
 transform 0.4s ease-in-out,
 box-shadow 0.4s ease-in-out;
}

Для браузеров Webkit мы также добавим -webkit-backface-visibility: hidden, чтобы избежать коротких миганий. (Хотя Вы можете удалить это, если вы предпочитаете видеть четкий текст).

Теперь зададим стили для текстовых элементов:

.ib-container h3 a{
 font-size: 16px;
 font-weight: 400;
 color: rgba(0, 0, 0, 1);
 text-shadow: 0px 0px 0px rgba(0, 0, 0, 1);
 opacity: 0.8;
}
.ib-container article header span{
 font-size: 10px;
 font-family: "Big Caslon", "Book Antiqua", "Palatino Linotype", Georgia, serif;
 padding: 10px 0;
 display: block;
 color: rgba(255, 210, 82, 1);
 text-shadow: 0px 0px 0px rgba(255, 210, 82, 1);
 text-transform: uppercase;
 opacity: 0.8;
}
.ib-container article p{
 font-family: Verdana, sans-serif;
 font-size: 10px;
 line-height: 13px;
 color: rgba(51, 51, 51, 1);
 text-shadow: 0px 0px 0px rgba(51, 51, 51, 1);
 opacity: 0.8;
}

А теперь мы добавим transition для трех свойств opacity, text-shadow и color:

.ib-container h3 a,
.ib-container article header span,
.ib-container article p{
 transition:
 opacity 0.2s linear,
 text-shadow 0.5s ease-in-out,
 color 0.5s ease-in-out;
}

Класс blur будет применяться ко всем элементам, расположенным на одном уровне с пунктом, над которым находится курсор мыши. Мы также хотим уменьшить их и добавим большие белые тени, чтобы сделать блоки размытыми. Также уменьшим прозрачность немного:

.ib-container article.blur{
 box-shadow: 0px 0px 20px 10px rgba(255,255,255,1);
 transform: scale(0.9);
 opacity: 0.7;
}

Для того, чтобы текстовые элементы выглядели размыто, мы сделаем цвет прозрачным, установив значение прозначности в RGBA равное 0, и мы увеличим размытие text-shadow:

.ib-container article.blur h3 a{
 text-shadow: 0px 0px 10px rgba(0, 0, 0, 0.9);
 color: rgba(0, 0, 0, 0);
 opacity: 0.5;
}
.ib-container article.blur header span{
 text-shadow: 0px 0px 10px rgba(255, 210, 82, 0.9);
 color: rgba(255, 210, 82, 0);
 opacity: 0.5;
}
.ib-container article.blur  p{
 text-shadow: 0px 0px 10px rgba(51, 51, 51, 0.9);
 color: rgba(51, 51, 51, 0);
 opacity: 0.5;
}

Теперь активный пункт будет слегка увеличен. Мы также установим большое значение z-index, чтобы гарантировать что этот пункт будет всегда поверх остальных, когда мы наводим курсор мыши на него:

.ib-container article.active{
 transform: scale(1.05);
 box-shadow:
 0px 0px 0px 10px rgba(255,255,255,1),
 1px 11px 15px 10px rgba(0,0,0,0.4);
 z-index: 100;
 opacity: 1;
}

И последнее, но не менее важное, мы установим непрозрачность текстовых элементов равную 1:

.ib-container article.active h3 a,
.ib-container article.active header span,
.ib-container article.active p{
 opacity; 1;
}

Это все, что касается стилей! Давайте теперь посмотрим на JavaScript.

JavaScript

Итак, когда мы наводим курсор мыши на статью, мы установим для всех других статей класс blur, а текущий элемент получит класс active:

var $container    = $('#ib-container'),
 $articles    = $container.children('article'),
 timeout;

$articles.on( 'mouseenter', function( event ) {

 var $article    = $(this);
 clearTimeout( timeout );
 timeout = setTimeout( function() {

 if( $article.hasClass('active') ) return false;

 $articles.not($article).removeClass('active').addClass('blur');

 $article.removeClass('blur').addClass('active');

 }, 75 );

});

$container.on( 'mouseleave', function( event ) {

 clearTimeout( timeout );
 $articles.removeClass('active blur');

});

Это все! Надеюсь, вам понравился этот урок, и он будет Вам полезен!

Демонстрация

Скачать исходники

Перевод

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


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

Если вы заметили ошибку в тексте новости, пожалуйста, выделите её и нажмите Ctrl+Enter

Если у Вас возникли вопросы, то для скорейшего получения ответа рекомендуем воспользоваться нашим форумом

Обновлено 16.12.2011 12:57
 

Апельсин-1

Голосование

Ваш любимый html-редактор?

Новые файлы

Шпаргалка по HTML5 Canvas

Archive - бесплатный кириллический шрифт

Шпаргалка по HTML5 атрибутам обработчиков событий

См. также

activecloud.ru

TisRef

Баннер
Система Orphus

Кто онлайн

Сейчас 59 гостей и 1 пользователь онлайн

Комментарии

Статистика