Анимация числа, при изменении ширина HTML элемента
Здравствуйте! Помогите разобраться с динамической анимацией числа в блоке, интересует решение только на чистом javascript.
Имеется блок с размерами 25 на 25px, в блоке находится число (0%), при клике по этому блоку происходит событие, которое задает блоку величину (в данном случае 75%), после чего его ширина плавно увеличивается на заданную величину. Но как привязать это динамическое увеличение и к числу, чтобы увеличение числа так же происходило синхронно при увеличении ширины блока до заданного числа, то есть до 75%? Вот пример http://jsfiddle.net/...mbedded/result/ Может есть какое то событие, которое отслеживает состояние блока? Буду благодарен, если подтолкнете в нужном направлении:) |
akkord87, а что заставляет изменять ширину блока? Вот туда и нужно просто добавить ещё и изменение числа.
|
Цитата:
|
akkord87, там при изменении блока, у самого скрипта, который меняет этот блок, у него должно быть событие изменения размера - туда и подставляйте.
this.innerHTML = this.style.width; |
Это понятно) Не понятно, как сделать так, чтобы увеличение числа шло плавно (анимировано) 0% 1% 2% 3% ... 75% http://goo.gl/3VH4ID
|
|
Интересный пример) Но мне нужно увеличить число от 0 до 75%, анимировать сам процесс увеличения)
|
akkord87,
Нет разницы от скольки и до скольки увеличивать, это настраивается стилями. И время анимации тоже. |
Цитата:
|
Ой, html стилями менять не выйдет, не внимательно посмотрел.
<div style="background: green; width: 0%">0%</div> <script> var animate = function (options) { var start = Date.now(); // сохранить время начала requestAnimationFrame(function tick() { var timePassed = Date.now() - start; var progress = timePassed / options.duration; var timeFunction = options.timeFunction || function (progress) { return progress; }; progress = progress > 1 ? 1 : progress; options.step(timeFunction(progress)); if (progress === 1) { options.complete(); } else { requestAnimationFrame(tick); } }); }; var div = document.querySelector('div'); animate({ duration: 5000, step: function (progress) { var percent = Math.round(75 * progress) + '%'; div.innerHTML = percent; div.style.width = 75 * progress + '%'; }, complete: function () {} }); </script> |
Часовой пояс GMT +3, время: 10:53. |