Заходи
Гость

Хостинг

Статистика
Яндекс.Метрика Счетчик PR-CY.Rank
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Ccылки

Свежак

Главная » 2013 » Апрель » 6 » Создаем рекламный щит c эффектом вращения, на JQUERY и CSS
20:58
Создаем рекламный щит c эффектом вращения, на JQUERY и CSS

Создаем рекламный щит c эффектом вращения, на JQUERY и CSS

 

В этом уроке мы будем использовать несколько изображений, CSS и JQuery, чтобы создать эффект вращающегося рекламного щита с двумя объявлениями. Идея состоит в том, чтобы сделать один набор изображений исчезающий, а другой (другие объявления) появляется. Мы будем уменьшать ширину каждого исчезающего среза,  и увеличить ширину каждого появляющегося среза. Это даст эффект вращения, так же, как во вращающейся системе рекламного щита.

 

ПОСМОТРЕТЬ ДЕМО                           СКАЧАТЬ ИСХОДНИК

 

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

1. HTML

У нас будет довольно большая разметка для изображений  - это будет 22 фрагмента  для каждого объявления:

<div class="container">

    <div class="ad">

        <div id="ad_1" class="ad_1">

            <img class="slice_1" src="ads/ad1_slice01.jpg"/>

            <img class="slice_2" src="ads/ad1_slice02.jpg"/>

            <img class="slice_3" src="ads/ad1_slice03.jpg"/>

            <img class="slice_4" src="ads/ad1_slice04.jpg"/>

            <img class="slice_5" src="ads/ad1_slice05.jpg"/>

            <img class="slice_6" src="ads/ad1_slice06.jpg"/>

            <img class="slice_7" src="ads/ad1_slice07.jpg"/>

            <img class="slice_8" src="ads/ad1_slice08.jpg"/>

            <img class="slice_9" src="ads/ad1_slice09.jpg"/>

            <img class="slice_10" src="ads/ad1_slice10.jpg"/>

            <img class="slice_11" src="ads/ad1_slice11.jpg"/>

            <img class="slice_12" src="ads/ad1_slice12.jpg"/>

            <img class="slice_13" src="ads/ad1_slice13.jpg"/>

            <img class="slice_14" src="ads/ad1_slice14.jpg"/>

            <img class="slice_15" src="ads/ad1_slice15.jpg"/>

            <img class="slice_16" src="ads/ad1_slice16.jpg"/>

            <img class="slice_17" src="ads/ad1_slice17.jpg"/>

            <img class="slice_18" src="ads/ad1_slice18.jpg"/>

            <img class="slice_19" src="ads/ad1_slice19.jpg"/>

            <img class="slice_20" src="ads/ad1_slice20.jpg"/>

            <img class="slice_21" src="ads/ad1_slice21.jpg"/>

            <img class="slice_22" src="ads/ad1_slice22.jpg"/>

        </div>

        <div id="ad_2" class="ad_2">

            <img class="slice_1" src="ads/ad2_slice01.jpg"/>

            <img class="slice_2" src="ads/ad2_slice02.jpg"/>

            <img class="slice_3" src="ads/ad2_slice03.jpg"/>

            <img class="slice_4" src="ads/ad2_slice04.jpg"/>

            <img class="slice_5" src="ads/ad2_slice05.jpg"/>

            <img class="slice_6" src="ads/ad2_slice06.jpg"/>

            <img class="slice_7" src="ads/ad2_slice07.jpg"/>

            <img class="slice_8" src="ads/ad2_slice08.jpg"/>

            <img class="slice_9" src="ads/ad2_slice09.jpg"/>

            <img class="slice_10" src="ads/ad2_slice10.jpg"/>

            <img class="slice_11" src="ads/ad2_slice11.jpg"/>

            <img class="slice_12" src="ads/ad2_slice12.jpg"/>

            <img class="slice_13" src="ads/ad2_slice13.jpg"/>

            <img class="slice_14" src="ads/ad2_slice14.jpg"/>

            <img class="slice_15" src="ads/ad2_slice15.jpg"/>

            <img class="slice_16" src="ads/ad2_slice16.jpg"/>

            <img class="slice_17" src="ads/ad2_slice17.jpg"/>

            <img class="slice_18" src="ads/ad2_slice18.jpg"/>

            <img class="slice_19" src="ads/ad2_slice19.jpg"/>

            <img class="slice_20" src="ads/ad2_slice20.jpg"/>

            <img class="slice_21" src="ads/ad2_slice21.jpg"/>

            <img class="slice_22" src="ads/ad2_slice22.jpg"/>

        </div>

    </div>

</div>

 

<div class="billboard"></div>

У этих изображений, 22 фрагмента (каждый фрагмент 35 пикселей в ширину) от 770 пикселей в ширину и 340 пикселей с высоту изображения. Можно было бы думать, что это слишком много работы и что мы можем на самом деле взять одно целое изображение и создать дивы заставить действовать как фрагменты. Но тогда мы не смогли бы создать такой же эффект вращающегося среза (по крайней мере, мы не используем JavaScript, для этой витрины).

2. CSS

Стиль для кадра рекламного щита  будет следующим:

.billboard{

    position:absolute;

    bottom:0px;

    left:50%;

    margin-left:-447px;

    width:916px;

    height:599px;

    background:transparent url(../images/billboard.png) no-repeat 0px 0px;

}

Чтобы разместить элемент в центре страницы, мы устанавливаем значение слева на 50%.

Контейнер для объявления будет иметь тот же стиль, как щит, за исключением фонового изображения. Мы делаем это, потому что мы должны позиционировать содержащие элементы в том же месте, как рекламный щит. Мы должны разместить нашу рекламу внутри рекламного щита. Таким образом, мы делаем такой трюк и создаем еще один элемент с тем же позиционированием:

.container{

    position:absolute;

    bottom:0px;

    left:50%;

    margin-left:-447px;

    width:916px;

    height:599px;

}

.ad{

    width:800px;

    height:336px;

    position:relative;

    margin:35px 0px 0px 60px;

    background-color:#333;

}

.ad_1 img{

    width:35px;

    height:336px;

    position:absolute;   

}

.ad_2 img{

    width:0px;

    height:336px;

    margin-left:18px;

    position:absolute;

}

Фрагменты изображений для нашего объявления будут  35 пикселей в ширину. Фрагменты второго  объявления будет иметь такую же ширину, но изначально нам нужно установить его в 0. Мы также должны установить левое поле второго фрагмента до 18 пикселей, так как мы хотим создать вращающийся эффект. Я объясню подробнее об этом значение после того как мы определим CSS для фрагментов.

Фрагменты должны быть расположены следующим образом:

.slice_1{left:0px;}

.slice_2{left:36px;}

.slice_3{left:72px;}

.slice_4{left:108px;}

.slice_5{left:144px;}

.slice_6{left:180px;}

.slice_7{left:216px;}

.slice_8{left:252px;}

.slice_9{left:288px;}

.slice_10{left:324px;}

.slice_11{left:360px;}

.slice_12{left:396px;}

.slice_13{left:432px;}

.slice_14{left:468px;}

.slice_15{left:504px;}

.slice_16{left:540px;}

.slice_17{left:576px;}

.slice_18{left:612px;}

.slice_19{left:648px;}

.slice_20{left:684px;}

.slice_21{left:720px;}

.slice_22{left:756px;}

По позиционированию элементов на еще один пиксель влево, чем они есть на самом деле в ширину, мы создаем маленький разрыв между ними. Теперь, левое поле имеет значение 18 пикселей, потому что это половина фрагмента, плюс ее разрыв. Мы установили это, для того, чтобы фрагменты появлялись (или исчезали) из (или) в центр, а не только со стороны. Если мы просто установим  ширину среза до 0 пикселей изображение не будут казаться вращающимся.

И это все, CSS. 

Давайте создадим вращающийся эффект с JQuery.

3. JAVASCRIPT

Теперь мы создадим функцию для поворота фрагмента. Функция заставит первые фрагменты объявления исчезнуть, сделав их ширину 0 пикселей. Для достижения вращающегося эффекта, мы добавим с левого края 18 пикселей.

В то время как первые фрагменты объявления исчезают мы указываем  другим появляться путем удаления левого края 18 пикселей (что мы изначально настроили в CSS) и это дает им ширину 35 пикселей. 

$('#ad_1 > img').each(function(i,e){

       rotate($(this),500,3000,i);

   });

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

$(function() {           

    $('#ad_1 > img').each(function(i,e){

        rotate($(this),500,3000,i);

    });

    function rotate(elem1,speed,timeout,i){

        elem1.animate({'marginLeft':'18px','width':'0px'},speed,function(){

            var other;

            if(elem1.parent().attr('id') == 'ad_1')

                other = $('#ad_2').children('img').eq(i);

            else

                other = $('#ad_1').children('img').eq(i);

                other.animate({'marginLeft':'0px','width':'35px'},

                                  speed,function(){

                var f = function() { rotate(other,speed,timeout,i) };

                setTimeout(f,timeout);

            });

        });

    }

});

Таким образом, функция поворота выполняет сокрытие текущего элемента (для чего она была и создана), а затем определяет, какой элемент  в настоящее время вращается, так что еще один вызов функции поворота может быть выполнен  на других фрагментах объявления. 

ПОСМОТРЕТЬ ДЕМО                                  СКАЧАТЬ ИСХОДНИК

 

Ссылка на источник

Категория: jQuery/JS | Просмотров: 1306 | Добавил: Wrecker | Рейтинг: 5.0/2
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск

Статьи
[Прогараммирование]
Как работает CSS?
[Прогараммирование]
ЛЕКЦИЯ. Язык Pascal
[Прогараммирование]
Статический анализ: ошибки в медиаплеере и безглючная аська
[Устронение ошибок систем]
Устранение неполадок при возникновении (синего экрана) Blue Screen Of Death (BSOD) (2)
[Прогараммирование]
Разработка ПО с открытыми исходными текстами как особый вид прикладной науки
[Операционные системы]
Особенности применения технологий Lotus Domino и Notes в современных информационных системах
[Менеджмент]
Факторы микросреды организации
[Устронение ошибок систем]
Возможные нежелательные последствия разгона
[Прогараммирование]
ДОКУМЕНТИРОВАНИЕ ПРОГРАММ
[Безопасность систем]
Резервирование и восстановление

Категории
HTML/CSS [21]
jQuery/JS [36]
PHP [4]
Для Ucoz [38]

Популярный софт
Iron Kaspersky Internet Security 2015
Kaspersky Internet Security 2015
Iron Virtual DJ
Virtual DJ
Iron SoundForge 11
SoundForge 11
Iron Alcohol 120
Alcohol 120
Iron Norton Internet Security 2014
Norton Internet Security 2014
Iron Loaris Trojan Remover
Loaris Trojan Remover

Жми

Copyright MyCorp © 2024Конструктор сайтов - uCoz