У меня есть текст, масштабированный и перемещенный с помощью JavaScript/jQuery. Я не могу использовать jQuerys animate(), потому что он должен исчезать и исчезать и должен повторяться и с большим количеством элементов (конечный результат: «летать» со фона, перемещаться в разные стороны и исчезать).Масштабирование и перемещение текста гладко с помощью javascript
Моя проблема: он не работает плавно и вызывает довольно частое использование процессора. Вот урезанная версия:
<!DOCTYPE html>
<html>
<head>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script type="text/javascript">
var steps = 300; // steps from start to finish
// the final css values
var endValueTop = 300;
var endValueLeft = 300;
var endValueFontSize = 100;
// the current css values (get encreased in doAnimation())
var currentValueTop = 100;
var currentValueLeft = 100;
var currentValueFontSize = 0;
// the added values in each step
var stepsTop = (endValueTop - currentValueTop)/steps;
var stepsLeft = (endValueLeft - currentValueLeft)/steps;
var stepsFontSize = (endValueFontSize - currentValueFontSize)/steps;
function doAnimation() {
// increase current values
currentValueTop += stepsTop;
currentValueLeft += stepsLeft;
currentValueFontSize += stepsFontSize;
// apply them
$("#hello").css({
top: currentValueTop,
left: currentValueLeft,
fontSize: currentValueFontSize
});
// restart if there are steps left
if (steps--) {
window.setTimeout(function(){
doAnimation();
}, 50);
}
}
// start the first time
doAnimation();
</script>
<style>
article, aside, figure, footer, header, hgroup,
menu, nav, section { display: block; }
body { position: relative; }
p#hello { position: absolute; top: 100px; left: 100px; font-size: 0px; }
</style>
</head>
<body>
<p id="hello">Hello World</p>
</body>
</html>
Запуск примера на JS BIN.
Любые предложения? Бонус: как уменьшить нагрузку на процессор? Большое спасибо!
Штеффен
Что случилось с использованием '.animate()'? Ниже приведена демонстрация - http://jsbin.com/oxode/2. Вы можете угаснуть и выдохнуть без проблем, используя 'animate' слишком –
@ Russ Cam: увеличение и уменьшение непрозрачности за один проход (и другие вещи) не дай мне. Хотелось бы, чтобы я мог ... –
Как насчет того, если он был разделен на несколько вызовов 'animate', которые заставляли текст расти непрерывно, а его положение на странице сдвигалось вправо и вправо, но также позволяло вам делать вызовы для изменения непрозрачности исчезают и исчезают? –