Красивое смещение блока
Сделал смещение текста подобным образом:
function move_left()
{
if (parseInt(document.getElementById('company_text').style.left ) > 20 )
{
clearTimeout(right_timeout);
text=text-10;
a=text+'%';
document.getElementById('company_text').style.left=a;
if (text < 30) {
document.getElementById('company_text').style.right=a-5;
document.getElementById('company_text').style.left=a;
}
image=image-10;
b=image+'%';
document.getElementById('company_image').style.left=b;
document.getElementById('company_img').style.left=b;
left_timeout=setTimeout("move_left()", 50);
}
}
Т.е. просто меняю координаты, захотелось, чтобы текст как бы подпружинивали в самом конце, т.е. мотался из стороны в сторону. Может кто подскажет? Заколебался уже с координатами возиться, никак не получается достичь нужного результат. |
Чтобы пружинился - это же задача механники ;) Ну или школьной физики ;)
По поводу кода - как-то сумбурно сделано, как я понял, где-то должна быть еще функция для движения вправо... Зачем-то каждый раз создаются и сбрасываются таймауты... Зачем-то всякий раз при обращении к элементу, он ищется по его id...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<body>
<div id="foo" style="border: 1px solid red; overflow: hidden; position: relative; zoom: 1;">
<div id="bar" style="border: 1px solid green; position: absolute; padding: 1px 2px;">Страдаю фигней :)</div>
</div>
<script type="text/javascript">
(function() {
var foo = document.getElementById('foo'), bar = document.getElementById('bar');
foo.style.height = bar.offsetHeight + 'px';
var x = 0, reverse = false;
window.setInterval(function() {
var l = foo.clientWidth - bar.offsetWidth;
x += Math.pow(6 - x * 4 / l, 2) / 4;
if (x >= l) x = 0, reverse = !reverse;
bar.style.left = Math.floor(reverse ? l - x : x) + 'px';
}, 10);
})();
</script>
</body>
</html>
|
Да вот именно, что не хочется физику вообще вспоминать, лень матушка) Сейчас попробую пошаманить надо кодом, только вот эту строчку не понял x += Math.pow(6 - x * 4 / l, 2) / 4; Там где l,2 - вот это что значит?
|
Выражение в квадрат возводится, запятая - разделитель между аргументами функции pow
|
Гугл упорно не хочет выдавать формулу по которой движется последняя точка пружины)) Может кто поможет найти?
|
поищи затухающие колебания...
Мне гугл сразу выдал ссылку на вики, где всё есть... |
Да, так и искал и в принципе нашел, но все равно почему-то не тот эффект который хотелось бы, хочется, чтобы в самом конце движение было из стороны в сторону, максимум чего добился, вот:
function move_left()
{
if (parseInt(document.getElementById('company_text').style.left) > 20 ){
if (parseInt(document.getElementById('company_text').style.left)>50){
text = text - 2;
} else{
text -= 20*Math.sin(0.5*text+60);
}
a=text+'%';
document.getElementById('company_text').style.left=a;
}
}
|
ты б что ли целую страничку запостил, а то желания доделывать не было
попробуй, может это тебе надо было
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<body>
<div id="foo" style="border: 1px solid red; overflow: hidden; position: relative; zoom: 1;">
<div id="bar" style="border: 1px solid green; position: absolute; padding: 1px 2px;">Страдаю фигней :)</div>
</div>
<script type="text/javascript">
(function() {
var foo = document.getElementById('foo'), bar = document.getElementById('bar');
foo.style.height = bar.offsetHeight + 'px';
var alpha = 0;
var fading = 1.1;
window.setInterval(function() {
var l = foo.clientWidth - bar.offsetWidth;
x = l/2 * Math.sin(alpha);
bar.style.left = Math.floor( x+l/2 ) + 'px';
alpha += Math.PI / 180 / fading;
fading += 0.001;
}, 10);
})();
</script>
</body>
</html>
|
| Часовой пояс GMT +3, время: 06:46. |