Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

if (!time) time = 500;

if (!distance) distance = 5;

var originalStyle = e.style.cssText; // Сохранить оригинальный стиль e

e.style.position = "relative"; // Сделать относит, позиционируемым

var start = (new Date).getTime; // Запомнить момент начала анимации ;

animate // Запустить анимацию

// Эта функция проверяет прошедшее время и изменяет координаты е.

// Если анимацию пора завершать, восстанавливает первоначальное состояние

// элемента е. Иначе изменяет координаты е и планирует следующий свой вызов,

function animate {

var now = (new Date).getTime; // Получить текущее время

var elapsed = now-start; // Сколько прошло времени с начала?

var fraction = elapsed/time; // Доля от требуемого времени?

if (fraction < 1) { // Если рано завершать анимацию

// Вычислить координату х элемента е как функцию от доли общего

// времени анимации. Здесь используется синусоидальная функция,

// а доля общего времени воспроизведения умножается на 4pi,

// поэтому перемещение взад и вперед выполняется дважды,

var x = distance * Math.sin(fraction*4*Math.PI);

e.style.left = x + "px";

// Попробовать вызвать себя через 25 мсек или в конце запланированного

// отрезка общего времени воспроизведения. Мы стремимся сделать

// анимацию гладкой, воспроизводя ее со скоростью 40 кадров/сек.

setTimeout(animate, Math.min(25, time-elapsed));

}

else { // Иначе анимацию пора завершать

e.style.cssText = originalStyle // Восстановить первонач. стиль

if (oncomplete) oncomplete(e); // Вызвать ф-цию обратного вызова

}

}

}

// Растворяет е от состояния полной непрозрачности до состояния полной прозрачности

// за указанное количество миллисекунд. Предполагается, что, когда вызывается

// эта функция, е полностью непрозрачен, oncomplete - необязательная функция,

// которая будет вызвана с элементом е в виде аргумента по завершении анимации.

// Если аргумент time не задан, устанавливается интервал 500 мсек.

// Эта функция не работает в IE, но ее можно модифицировать так, чтобы

// в дополнение к свойству opacity она использовала нестандартное

// свойство filter, реализованное в IE.

function fadeOut(e, oncomplete, time) {

if (typeof e === "string") e = document.getElementByld(e);

if (!time) time = 500;

// В качестве простой "функции перехода", чтобы сделать анимацию немного

// нелинейной, используется Math.sqrt: сначала растворение идет быстро,

// а затем несколько замедляется,

var ease = Math.sqrt;

var start = (new Date).getTime; // Запомнить момент начала анимации

animate; // И запустить анимацию

function animate {

var elapsed = (new Date).getTime-start; // Прошедшее время

var fraction = elapsed/time; // Доля от общего времени

if (fraction < 1) { // Если не пора завершать

var opacity = 1 - ease(fraction); // Вычислить непрозрачн.

e.style.opacity = String(opacity); // Установить ее в e

setTimeout(animate, // Запланировать очередной

Math.min(25, time-elapsed)); // кадр

}

Поделиться:
Популярные книги

Бандит

Щепетнов Евгений Владимирович
1. Петр Синельников
Фантастика:
фэнтези
7.92
рейтинг книги
Бандит

Бастард Императора. Том 3

Орлов Андрей Юрьевич
3. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 3

Граф

Ланцов Михаил Алексеевич
6. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Граф

Газлайтер. Том 1

Володин Григорий
1. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 1

Хозяин Стужи 3

Петров Максим Николаевич
3. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
7.00
рейтинг книги
Хозяин Стужи 3

Дважды одаренный. Том VII

Тарс Элиан
7. Дважды одаренный
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Дважды одаренный. Том VII

Развод в 45. От любви до ненависти

Гофман Крис
6. Развод
Любовные романы:
остросюжетные любовные романы
5.40
рейтинг книги
Развод в 45. От любви до ненависти

Имперец. Том 3

Романов Михаил Яковлевич
2. Имперец
Фантастика:
боевая фантастика
попаданцы
альтернативная история
7.43
рейтинг книги
Имперец. Том 3

Паладин из прошлого тысячелетия

Еслер Андрей
1. Соприкосновение миров
Фантастика:
боевая фантастика
попаданцы
6.25
рейтинг книги
Паладин из прошлого тысячелетия

Мечник Вернувшийся 1000 лет спустя

Ткачев Андрей Юрьевич
1. Вернувшийся мечник
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Мечник Вернувшийся 1000 лет спустя

Чужак из ниоткуда 2

Евтушенко Алексей Анатольевич
2. Чужак из ниоткуда
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чужак из ниоткуда 2

Наша навсегда

Зайцева Мария
2. Наша
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Наша навсегда

Хозяин Теней

Петров Максим Николаевич
1. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней

Кодекс Крови. Книга Х

Борзых М.
10. РОС: Кодекс Крови
Фантастика:
фэнтези
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга Х