Падающий мяч JavaScript

Всем привет! В этом небольшом уроке я покажу, как можно сделать анимацию падающего с высоты мяча!

Описание

Наш мяч будет падать с высоты на стол, от которого будет отпрыгивать до тех пока, пока не остановится на столе.

С каждым отскоком мяч будет подниматься на все более меньшую, по сравнению с первоначальной, высоту.

Вот так вот будет выглядеть наш мяч:

А вот так стол:

Реализация

Реализовывать описанную выше анимацию будем с использованием библиотеки Jquery.

Давайте рассмотрим HTML верстку:

        <div id="wrap">
                <img id="ball" src="http://sergey-oganesyan.ru/wp-content/uploads/2014/11/ball.png">
                <img id="table" src="http://sergey-oganesyan.ru/wp-content/uploads/2014/11/table.jpg">        
        </div>

Общий блок с идентификатором wrap содержит 2 картинки – картинку мяча (с прозрачным фоном в формате png) и картинку стола, от которого будет отпрыгивать мяч.

CSS верстка:

#wrap{
    width: 200px;
    margin: 0 auto;
}
#ball{
        width:60px;
    margin: 0 auto;
    margin-top: 0;
    display: block;
    cursor: pointer;
        position: absolute;
}
#table{
        width: 400px;
    margin: 260px 0 0 -170px;
}

Общий блок с id wrap выравниваем по центру, #ball – стили для мяча (изначально отступ сверху равен нулю, чтобы мяч был над столом). И #table – это соответственно стили для стола.

Итак, теперь давайте разберем JavaScript (Jquery) код:


По клику на элемент с id ball (нажали на мяч) происходит поочередное выполнение анимации – поднимание и опускание мяча.

Например:

.animate({ marginTop: '300px'}, 400) - означает, что у мяча изменится отступ сверху с первоначального значения до 300 пикселей за 400 миллисекунд.

То есть вся анимация основана на том, что у мяча изменяется отступ сверху за определенное время, – изменяя значение отступа сверху и скорость (время) можно управлять анимацией.

Когда отступ сверху равен 0 – мяч находится вверху (верхняя точка), когда отступ равен 300 пикселям – мяч находится на столе (нижняя точка).

Я постарался сделать наиболее реалистичный отскок, но с точки зрения физики, я думаю, здесь есть над чем поработать.

Если вы хотите изменить плавность и реалистичность отскоков, либо изменить количество отскоков, то просто измените (добавьте) строчку вида:

.animate({ marginTop: 'Xpx'}, Y)

где X - количество пикселей, а Y - время в миллисекундах.

Теперь можете взглянуть на реальный пример и скачать его к себе на компьютер!

Посмотреть результат

Скачать

На этом у меня все, надеюсь, вам пригодится данный урок, желаю вам удачи, пока!

Если вам нужна помощь в создании какого-либо функционала, сайта, сервиса, тестов или калькуляторов, то готов помочь, подробнее на странице услуг.