gpt4 book ai didi

javascript - 几个句子/文本正弦波Jquery动画

转载 作者:可可西里 更新时间:2023-11-01 14:46:00 26 4
gpt4 key购买 nike

我已经找到并调整了代码,可以使一个句子以正弦方式逐个字母地动画化。但是,存在一些问题:

  • 我似乎无法让它在几个句子上工作,基本上可以想象像下面示例中的句子那样的两三个句子,这样所有句子都在彼此下面并同时动画
  • 无法弄清楚如何使句子动画结束并在列表选项 div block 的开头再次出现在页面左侧

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>

最佳答案

多个句子的一个解决方案是让每个字母 div 高几行。您需要计算字母元素的最大数量并保持每个句子的长度相同,但是使用空格可以得到几乎任何您想要的句子,同时保持您的实际代码结构。像这样:

   var letters = document.location.hash ? document.location.hash.substr(1) : 'sentence';
var line_2 = document.location.hash ? document.location.hash.substr(1) : 'another ';
var line_3 = document.location.hash ? document.location.hash.substr(1) : ' again ';

$('<div>', {
html: letters[i]+'<br>'+line_2[i]+'<br>'+line_3[i]
})

对于宽度,我不太清楚,但是如果你想让动画在选项开始的地方停止,选项的宽度可以通过加上#list的宽度加上 margin ,加上填充。或者,更简单地说,动画的宽度可以等于列表的左偏移量。像这样:

var width = $('#list').offset().left

参见代码笔:http://codepen.io/anon/pen/GJNMMP

关于javascript - 几个句子/文本正弦波Jquery动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30449000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com