Search
Write a publication
Pull to refresh

CSS3 анимация

В одной из задач возникла необходимость оживить фон.

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

Использовать GIF крайне не хотелось из за его ограничений при работе с прозрачностью. Было решено использовать CSS.

HTML заготовка получилась очень компактной:

<div class="pulsar">
    <div class="ring"></div>
    <div class="ring"></div>
    <div class="ring"></div>
    <div class="ring"></div>
</div>


Для уменьшения количество параметров описывающих размер, максимально используются относительные размеры:

.pulsar {
    width: 400px;
    height: 400px;
    margin: 0px auto;
    position: relative;
}

.pulsar .ring {
    box-sizing: border-box;
    position: absolute;
    top: 50%;
    left: 50%;
    border: 10px solid red;
    box-shadow: inset 0 0 10px 0 red;
    border-radius: 50%;
    width: 100%;
    height: 100%;
    margin-top: -50%;
    margin-left: -50%;
    -webkit-transform: scale(0);
    transform: scale(0);
}


Добавляем движение:

@keyframes pulsar {
    0% {
        transform: scale(0);
        opacity: 1;
    }
    75% {
        opacity: 1;
    }
    100% {
        transform: scale(1);
        opacity: 0;
    }
}

@-webkit-keyframes pulsar {
    0% {
        -webkit-transform: scale(0);
        opacity: 1;
    }
    75% {
        opacity: 1;
    }
    100% {
        -webkit-transform: scale(1);
        opacity: 0;
    }
}


А запускаем:

.pulsar .ring:nth-child(1) {
    -webkit-animation: pulsar 2s 0s linear infinite;
    animation: pulsar 2s 0s linear infinite;
}

.pulsar .ring:nth-child(2) {
    -webkit-animation: pulsar 2s .5s linear infinite;
    animation: pulsar 2s .5s linear infinite;
}

.pulsar .ring:nth-child(3) {
    -webkit-animation: pulsar 2s 1s linear infinite;
    animation: pulsar 2s 1s linear infinite;
}

.pulsar .ring:nth-child(4) {
    -webkit-animation: pulsar 2s 1.5s linear infinite;
    animation: pulsar 2s 1.5s linear infinite;
}


Рабочий пример тут: jsfiddle.net/lynxtver/w5gfu/3
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.