我已经找到并调整了代码,可以以正弦的方式逐个字母地动画一个句子。然而,有几个问题:几句话/文字正弦波jquery动画
- 我似乎无法让它在几个句子上工作,基本上想象下面的例子中的两个或三个以上的句子,以便所有的句子都在下面对方同时动画
- 无法弄清楚如何使句子动画结束,并在列表中选择开始再次在页面的左上角再次出现DIV阻止
Here is the link 下面是代码
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div id="options">
<ul id="list" style="">
<li>ABOUT</li>
</br>
<li>THE STREAM</li>
</br>
<li>TELL YOUR STORY</li>
</br>
<li>COMING EVENTS</li>
</br>
<li>CONTACT</li>
</ul>
</div>
<div id="sentences_block">
<div id="elements" style="margin-left:50px;"></div>
<div>
</body>
<style type="text/css">
.letter {
font-family: sans-serif;
font-size: 40px;
font-weight: bold;
position: absolute;
top: -100px;
left: 0px;
}
#list {
list-style-type: none;
color: #0067CE;font-weight: bold;
font-style:arial;
font-size:15px;
float:right;
}
#options {
margin-right:20px;
}
</style>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(document).ready(function() {
var width = $(window).width() - 0;
var starttime = new Date().getTime();
var letters = document.location.hash ? document.location.hash.substr(1) : 'sentence';
var elements = $('#elements');
for (i = 0; i < letters.length; i++) {
$('<div>', {
html: letters[i]
})
.addClass('letter')
.appendTo(elements);
}
function run() {
var elapsed = new Date().getTime() - starttime;
var pos = elapsed * 0.2;
$('div.letter').each(function(index, letter) {
var posx = (pos + 40 * index) % width;
var posy = 200 + Math.sin(posx/50) *25;
$(letter).css('left', posx + 'px');
$(letter).css('top', posy + 'px');
});
}
setInterval(run, 3);
});
</script>
</html>
能否请您解释一下您的两个问题吗?因为我认为我可以为你解答,但不明白你真正需要什么。你的第一个问题意味着你想要多于一个句子,在第一个问题显示并离开页面后播下第二个问题?或者你想同时在第一个下面显示第二个?你的第二个问题是,你想修改'sentences_block''div'的宽度而不是100%的页面,它应该在'options'' div'之前结束?这两个是正确的吗? – EhsanT
@EhsanT我想在第一个下面显示第二个和第三个句子,它们都是同时动画的。是的,第二个,你得到它,我试图给句子块添加边距或填充,它不工作(我无法修复块的屏幕宽度可能会有所不同,具体取决于分辨率或设备)。 – user3241846