Пять Полезные Интерактивные CSS / Jquery методы Deconstructed

С широкий спектр CSS3 и JavaScript методов, доступных сегодня, it’ проще, чем когда-либо, чтобы создать уникальные интерактивные веб-сайты, которые посетители восторг и обеспечить более привлекательные пользователь experience.

В этой статье we’ будете идти через пять интерактивных методов, которые вы можете начать использовать прямо сейчас.We’ VL обложки:

  1. Анимированные текст effects,
  2. Анимированные images без GIF,
  3. Более привлекательным раскрывающегося menus,
  4. Декоративной Слайд-шоу navigation,
  5. Анимированные icons для государственных наведении buttons.

Помимо обучения, как выполнить эти конкретные задачи, you’ также будете осваивать различные полезные CSS и JQuery tricks, что можно использовать при создании собственных интерактивных методов.Решения, представленные здесь, конечно, не идеальный, поэтому любые мысли, идеи и предложения о том, как вы бы решить эти проблемы проектирования было бы очень appreciated.

Итак, let’ с погружением в и начать строить более интересные сайты

1.Экструдированные текст Effect

Extruded text effect on David DeSandro's site

Колонтитул David DeSandro’ S website используются экструдированные текст, анимацию при наведении курсора мыши.Этот интерактивный текстовый эффект быстрый и впечатляющий способ добавить некоторую вспышку на ваш сайт.С помощью всего нескольких строк CSS3, мы можем сделать текст по всей видимости, выскочить из страницы в три dimensions.

Первый let’ S создан некоторый текст (Код скопирован с оригинального сайта):

<span class="extruded">Extrude Me</span>

А некоторые основные стили (код скопирован с оригинального сайта):

body {
    background-color: #444;
    text-align: center;
}

.extruded {
    color: #888;
    font-family: proxima-nova-1, proxima-nova-2, 'Helvetica Neue', Arial, sans-serif;
    font-size: 48px;
    font-weight: bold;
    text-shadow: #000 3px 3px;
}

Здесь мы применили некоторые основные стили и добавил, text-shadow.Но это текст-тень doesn’ T взгляд трехмерные; для выполнения экструдированного эффект, we’ должны будете добавить больше текста-shadows:

    text-shadow: #000 1px 1px, #000 2px 2px, #000 3px 3px;

Это добавит три различных текстовых тени, чтобы наш текст, уложенных друг на друга, чтобы создать трехмерный вид мы want.

Стайлинг Hover State

Следующее, let’ добавим наведении с большой текст-тень:

.extruded:hover {
    color: #FFF;
    text-shadow: #58E 1px 1px, #58E 2px 2px, #58E 3px 3px, #58E 4px 4px, #58E 5px 5px, #58E 6px 6px;
}

Здесь мы добавили еще три текстовых тени увеличить depth эффект выдавливания.Но этот эффект только слишком плоская;Мы хотим текст, чтобы выглядеть как it’ S появляться на этой странице.Таким образом, let’ S изменить текст, чтобы сделать его по всей видимости, расти выше от основания прессованного профиля:

.extruded {
    position: relative;
}

.extruded:hover {
    color: #FFF;
    text-shadow: #58E 1px 1px, #58E 2px 2px, #58E 3px 3px, #58E 4px 4px, #58E 5px 5px, #58E 6px 6px;
    left: -6px;
    top: -6px;
}

Сейчас в наведении государства, экструдированные текст перемещается вверх на таком же расстоянии, как наши макс text-shadow значение.Мы также добавили position: relative, который должен быть прикреплен к основанию государства, а не только состояние наведения, иначе это может вызвать проблемы, когда мы живы it.

Анимация Transition

Следующее, мы можем добавить CSS3 transition для нашего текста для анимации изменения цвета и выталкивать эффект:

.extruded {
     -moz-transition: all 0.3s ease-out; /* FF3.7+ */
       -o-transition: all 0.3s ease-out; /* Opera 10.5 */
  -webkit-transition: all 0.3s ease-out; /* Saf3.2+, Chrome */
          transition: all 0.3s ease-out;
}

Это вызывает плавную анимацию для нашего различные изменения CSS при наведении курсора мыши.В то время как doesn’ T работа во всех браузерах, она деградирует красиво основных наведении effect.

Приведение все это вместе:

body {
    background-color: #444;
    text-align: center;
}

.extruded {
    color: #888;
    font-family: proxima-nova-1, proxima-nova-2, 'Helvetica Neue', Arial, sans-serif; /* the original site doesn't use the @font-face attribute */
    font-size: 48px;
    font-weight: bold;
    text-shadow: #000 1px 1px, #000 2px 2px, #000 3px 3px;
    position: relative;
    -moz-transition: all 0.3s ease-out; /* FF3.7+ */
       -o-transition: all 0.3s ease-out; /* Opera 10.5 */
  -webkit-transition: all 0.3s ease-out; /* Saf3.2+, Chrome */
          transition: all 0.3s ease-out;
}

.extruded:hover {
    color: #FFF;
    text-shadow: #58E 1px 1px, #58E 2px 2px, #58E 3px 3px, #58E 4px 4px, #58E 5px 5px, #58E 6px 6px;
    left: -6px;
    top: -6px;
}

Shortcomings

При применении нескольких CSS3 Text-тени хорошо работает, когда текст является статичной, она падает немного короткий, когда используется наряду с переходом animation.

В короткой, самой большой текст-тень оживляет просто отлично, но других текстовых тени aren’ T применяться до завершения анимации.Это приводит к быстрой коррекции: браузер заикается с основным раскрывающемся тень перед заполнением остальной diagonally.

К счастью, мы можем сделать этот недостаток сравнительно незаметно, при условии, что мы следовать нескольким принципам стиля.В принципе, мы хотим, чтобы скрыть большую часть экструдированного часть с верхней текста.Это означает, что мы должны вообще использовать этот эффект с смелые шрифты, такие, как семья Proxima Nova использованы Дэвид DeSandro.Кроме того, мы должны быть осторожны, чтобы избежать текстовой тени, которые слишком велики для шрифта.Tweak настройки с учетом этого, пока анимированные выдавливания выглядит believable.

Наконец, этот метод не будет работать в IE, потому что text-shadow. Не поддерживается во всех версиях IE (даже IE9)

2.Анимация фона Image

Animated monster image from Love Nonsense

Хотя мы можем легко анимировать текст с помощью нескольких строк кода, анимации изображений обычно требуется больше и медленнее, активы, такие как анимированные GIFs или флэш или HTML5-видео.В то время как сложные анимации будет по-прежнему зависеть от этих технологий, мы можем создать убедительные иллюзии анимации с использованием CSS alone.

Любовь Nonsense использует эффект при наведении на изменение цвета изображений на веб-сайте.Хитрость тут в том, чтобы использовать прозрачный PNG с цветом фона.Цвет должен соответствовать PNGwebsite’ с фоном, так что все прозрачные области в PNG отображаться при заполнении цветом фона.Таким образом, PNG должна содержать отрицательные space. Образа, который вы хотите показать (т.е. форму вы хотите должна быть прозрачной, а все остальное должно быть того же цвета, что и фон)

Here’ S примеру Smashing Magazine логотип с негативным пространством:

Coloring the negative space of an image

Памятка В demo как, когда цвет фона установлен в оранжевом, он начинает больше походить на реальный thing.

Code

Во-первых, let’ S сделать некоторые основные наценка:

<div class="post-wrapper">
    <h2 class="post-title">
        This is the title you hover over

        <img src="knockout-image.png" class="post-image" alt="" />
    </h2>
    
    <p>Some more text here.</p>
</div>

Здесь есть пост с названием, наш нокаут изображения и пунктом text.

Следующее, let’ S настроить некоторые статические стили:

.post-wrapper {
    position: relative;
    padding-left: 240px;
}

.post-image {
    position: absolute;
    top: 0;
    left: 0;
    background-color: #bbb;
}

.post-title {
    color: #037072;
}

Здесь мы создали post’ обертку с с position: relative и с достаточно обивка на левой стороне, чтобы абсолютно позиционировать изображение слева от нашего поста.Мы также добавили цвет фона для нашего имиджа, так что теперь позитивного пространства в нашей PNG показывает, как свет gray.

Следующее, let’ добавим некоторые эффекты при наведении:

.post-title:hover {
    color: #d63c25;
}

.post-title:hover .post-image {
    background-color: #f04e36;
}

Теперь, когда мы наведите курсор мыши на название или изображение, как будет меняться color.

Мы можем взять этот эффект дальше, анимации переходов:

.post-image {
    -webkit-transition: background-color 400ms ease-in;
    -moz-transition: background-color 400ms ease-in;
    transition: background-color 400ms ease-in;
}

.post-title {
    -webkit-transition: color 400ms ease-in;
    -moz-transition: color 400ms ease-in;
    transition: color 400ms ease-in;
}

Здесь мы добавили CSS3 transition как изображение и название, которое сделает для плавного изменения цвета animation.

К сожалению, CSS3 переходы в настоящее время не поддерживается в IE9.Тем не менее, даже в неподдерживаемых браузерах, изменение цвета будет по-прежнему occur  —   он просто won’ T имеют гладкую animation.

Если полная кросс-браузерная поддержка анимации важно, вы всегда можете обеспечить JQuery версии анимации для неподдерживаемых браузерах.Имейте в виду, однако, что jQuery’ S animate() method браузер не поддерживает анимацию цвета, так you’ должны будете использовать Цвет плагин in.

Ввод всех CSS вместе:

.post-wrapper {
    position: relative;
    padding-left: 240px;
}

.post-image {
    position: absolute;
    top: 0;
    left: 0;
    background-color: #bbb;
    -webkit-transition: background-color 400ms ease-in;
    -moz-transition: background-color 400ms ease-in;
    transition: background-color 400ms ease-in;
}

.post-title {
    color: #037072;
    -webkit-transition: color 400ms ease-in;
    -moz-transition: color 400ms ease-in;
    transition: color 400ms ease-in;
}

/* add the hover states */

.post-title:hover {
    color: #d63c25;
}

.post-title:hover .post-image {
    background-color: #f04e36;
}

3.Mega Dropdown

Mega dropdown menu on Bohemia

Одна общая проблема дизайна с выпадающими меню является то, что они часто содержат много пунктов.Вместо того, чтобы представлять все его элементы в длинном один столбец, Чехия Design использования нескольких столбцов dropdown.Такой подход не только выглядит здорово, но дает возможность группе связей и выделить наиболее важные ones.

Let’ S воссоздать это меню с помощью CSS и jQuery.

Строительные Tabs

В идеале, мы хотели бы начать с худой и простой знак-up…

<nav>
    <li><a href="#">Tab 1</a></li>
    <li><a href="#">Tab 2</a></li>
    <li><a href="#">Tab 3</a></li>
    <li><a href="#">Tab 4</a></li>
    <li><a href="#">Tab 5</a></li>
</nav>

… и использования nav li a nav > li или nav li стиль списка в навигации.Селектор дочерних doesn’ T работает в IE6 и nav li повлечет за собой проблемы, так как есть дополнительная Lis вложенных в область содержимого выпадающего списка.Если вы абсолютно необходимо работу сайта для пользователей IE6, а также (и that’ то, что вы иногда придется делать), you’ должны будете иметь разметку похожа на оригинал наценку в этом примере:

<ul id="main-nav">
    <li class="main-nav-item">
        <a href="#" class="main-nav-tab">Tab 1</a>
    </li>
    
    <li class="main-nav-item">
        <a href="#" class="main-nav-tab">Tab 2</a>
    </li>
    
    <li class="main-nav-item">
        <a href="#" class="main-nav-tab">Tab 3</a>
    </li>
    
    <li class="main-nav-item">
        <a href="#" class="main-nav-tab">Tab 4</a>
    </li>
    
    <li class="main-nav-item">
        <a href="#" class="main-nav-tab">Tab 5</a>
    </li>
</ul>

Следующее, let’ Стиль эти пять вкладок:

#main-nav {
    width: 800px;
    height: 50px;
    position: relative;
    list-style: none;
    padding: 0;
}

#main-nav .main-nav-item {
    display: inline;
}

#main-nav .main-nav-tab {
    float: left;
    width: 140px;
    height: 30px;
    padding: 10px;
    line-height: 30px;
    text-align: center;
    color: #FFF;
    text-decoration: none;
    font-size: 18px;
}

Хотя много CSS является специфическим для нашего примера, есть несколько важных стилей note.

Во-первых, мы определили высоту и ширину для нашей общей площадью вкладки и соответствуют общей высоты и ширины всех пяти вкладок, так что мы можем позиционировать выпадающего правильно.Далее, мы определили position: relative для вкладки оболочку, которая позволит нам позиционировать выпадающего absolutely.

Затем мы добавили list-style: none к списку обертку, и display: inline к каждому элементу списка, чтобы исключить любую список styling.

Наконец, мы плыли все вкладки ссылки на left.

Строительные Dropdown

Теперь, давайте создадим выпадающее наценки в одном из наших обертках вкладки:

    <li class="main-nav-item">
        <a href="#" class="main-nav-tab">Tab 1</a>
            
        <div class="main-nav-dd">
            <div class="main-nav-dd-column">
            Column content here
            </div>
        </div>
        
        <div class="main-nav-dd">
            <div class="main-nav-dd-column">
            Column content here
            </div>
        </div>
        
        <div class="main-nav-dd">
            <div class="main-nav-dd-column">
            Column content here
            </div>
        </div>
    </li>

Следующее, let’ Стиль этой выпадающем:

#main-nav .main-nav-dd {
    position: absolute;
    top: 50px;
    left: 0;
    margin: 0;
    padding: 0;
    background-color: #FFF;
    border-bottom: 4px solid #f60;
}

#main-nav .main-nav-dd-column {
    width: 130px;
    padding: 15px 20px 8px;
    display: table-cell;
    border-left: 1px solid #ddd;
    *float: left;
    *border-left: 0;
}

#main-nav .main-nav-dd-column:first-child {
    border-left: 0;
}

Здесь мы расположили выпадающего абсолютно, прямо под первым tab.

Давайте положим display: table-cell по всем колонны оболочки, так что они отображаются рядом друг с другом.Но table-cell Не поддерживается в IE6 и 7, поэтому мы использовали атрибут hack В качестве альтернативы для IE6 и 7.Этот хак ставит звездочки (*) перед каждым из атрибутов, которые являются специфическими для IE6 и 7.

Таким образом, мы определили резервного копирования для неподдерживаемых IE, который является просто float: left.Это работает почти так же как display: table-cell, кроме того, что плавающих элементов don’ T совпадают друг с другом по высоте, так что границы между столбцами don’ T линию.Чтобы избежать этой незначительной проблемой, мы просто удаляем border-left, используя тот же звездочки hack.

Наконец, мы удаляем левой границе в первой колонке для всех браузеров.Несмотря на :first-child псевдо-класса doesn’ T работают должным образом в IE6, к счастью, doesn’ T изменить ситуацию, потому что мы уже скрыто в этих границахbrowsers.

Добавление Interaction

We’ ве построен разметки и стилей для наших выпадающее меню, но нам еще нужно сделать меню интерактивным.Let’ с использованием JQuery добавить класс для отображения и скрытия выпадающем:

$(function() {
    var $mainNav = $('#main-nav');
    
    $mainNav.children('.main-nav-item').hover(function(ev) {
        // show the dropdown
        $(this).addClass('main-nav-item-active');
    }, function(ev) {
        // hide the dropdown
        $(this).removeClass('main-nav-item-active');
    });
});

Здесь мы приложили наведении listener для каждого элемента списка, которая добавляет и удаляет класс main-nav-item-active.Приложите это к элементу списка, а не на вкладке сам, либо выпадающий исчезнет при наведении указателя мыши от вкладку и в выпадающем area.

Теперь мы можем использовать этот класс крюк, чтобы скрыть и показать выпадающий с CSS:

#main-nav .main-nav-dd {
    display: none;
}

#main-nav .main-nav-item-active .main-nav-dd {
    display: block;
}

Let’ S использовать active класс стиля активной вкладки:

#main-nav .main-nav-item-active .main-nav-tab {
    background-color: #FFF;
    color: #f60;
    -webkit-border-top-left-radius: 5px;
    -webkit-border-top-right-radius: 5px;
    -moz-border-radius-topleft: 5px;
    -moz-border-radius-topright: 5px;
    border-top-left-radius: 5px;
    border-top-right-radius: 5px;
}

Здесь мы изменили цвет фона и текста и закругленные верхние углы (в поддерживаемых браузерах)

Размещение Dropdown

Сейчас основное взаимодействие мышь была построена и выпадающий дисплеев при наведении курсора мыши.К сожалению, до сих пор не отрегулированы под каждую вкладку, так let’ добавим некоторый код, чтобы наши данные события:

$(function() {
    var $mainNav = $('#main-nav');
    
    $mainNav.children('.main-nav-item').hover(function(ev) {
        var $this = $(this),
        $dd = $this.find('.main-nav-dd');
        
        // get the left position of this tab
        var leftPos = $this.find('.main-nav-tab').position().left;

        // position the dropdown
        
        $dd.css('left', leftPos);
        
        // show the dropdown
        $this.addClass('main-nav-item-active');
    }, function(ev) {
    
        // hide the dropdown
        $(this).removeClass('main-nav-item-active');
    });
});

Здесь мы используем jQuery’ S position() method получить смещение влево от текущей вкладке.Затем мы используем это значение для позиционирования выпадающего непосредственно под соответствующим tab.

Однако, с выступами на правой стороне, в раскрывающемся меню в конечном итоге торчат из области вкладок.Помимо просмотра плохо, это может привести к переполнения issues с частями выпадающего падения вне браузера window.

Let’ S исправить позиционирования с некоторыми JavaScript:

$(function() {
...

Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров

Comments are closed.