Javascript 如何使文本显示变慢?
如何使任何文本(例如Javascript 如何使文本显示变慢?,javascript,html,css,Javascript,Html,Css,如何使任何文本(例如h1tag)在我的网页上的显示速度变慢,就像CSS3tag-webkit过渡持续时间/过渡持续时间一样 我没有任何代码可以提供,因为我只是好奇,而且,我也没有在互联网上找到任何有用的东西(不能保证我已经搜索了每个页面)或“相关”问题 它是否需要JavaScript?(如果我不够清楚,我可以提供一个示例)。您可以通过CSS3动画轻松做到这一点: h1{ 动画:fadeIn 5s; } @关键帧淡入淡出{ 0%{不透明度:0;} 80%{不透明度:0;} 100%{不透明度:1
h1
tag)在我的网页上的显示速度变慢,就像CSS3
tag-webkit过渡持续时间
/过渡持续时间
一样
我没有任何代码可以提供,因为我只是好奇,而且,我也没有在互联网上找到任何有用的东西(不能保证我已经搜索了每个页面)或“相关”问题
它是否需要JavaScript
?(如果我不够清楚,我可以提供一个示例)。您可以通过CSS3动画轻松做到这一点:
h1{
动画:fadeIn 5s;
}
@关键帧淡入淡出{
0%{不透明度:0;}
80%{不透明度:0;}
100%{不透明度:1;}
}
我淡入
这完全取决于你想做什么。如果您只想同时淡入文本(或其他动画),css3
可能足以处理此问题
如果您试图一个字母一个字母地显示文本(例如,在RPG中可以找到),则需要代码对字符串进行迭代,并一次编写一个字母
下面是javascript
中的一个例子,直接取自对类似问题的回答:
var showText = function (target, message, index, interval) {
if (index < message.length) {
$(target).append(message[index++]);
setTimeout(function () { showText(target, message, index, interval); }, interval);
}
}
请注意,此方法和我之前添加的方法都使用jQuery
($
符号是jQuery
前缀)。如果单击指向第二个答案的链接,有一个剪报可以让你尝试这段代码。使用javascript结合CSS3动画,你可以实现这一点,用span
将每个字母包装起来,并根据字母的位置向其中添加CSS动画,延迟值取决于该字母,例如,你可以逐个字母淡入文本:
var$test=document.getElementById('test').innerHTML,$html='',$i;
对于($i=0;$i<$test.length;$i++){
$html+=''+($test[$i])+'';
}
document.getElementById('test')。innerHTML=$html代码>
@关键帧foo{
0%, 10% {
不透明度:0;
}
15%, 100% {
不透明度:1;
}
}
我是示例文本
那么,你想在页面加载后淡入吗?是的,就像淡入一样@JacobGrayNope,JS不需要,比如说不透明度上的css动画可以做到这一点,并且需要很长或很短的时间,只要你想要3秒的淡入时间,有没有办法一次显示一个字母/单词?@JamesSnowy这需要非常混乱的HTML,只需使用JS就更容易了that@JamesSnowy-您必须将每个字母包装在
中,或者使用JSHm,很有趣,您想去聊天室进一步讨论这个问题吗?哦,好的,谢谢您提供JavaScript
,非常感谢!如果我想一次淡入一个单词,你认为什么最合适JavaScript
或CSS3
?@jamessnow我认为JavaScript在这里是“最简单的”,除非你恰巧在评论中提到每个单词都有单独的标签。我正试图编写一个简单的实现,一次只写一个单词,但我对JavaScript不是很在行。我将很快编辑这篇文章,但请恕我直言:)谢谢你的一切,我期待着演示!:)@JamesSnowy请看我的编辑-我已经添加了另一个链接到一个现有的答案,逐字显示文本,并添加了一些代码正在做什么的解释。
var textToDisplay = "Even more awesome text inside here, but displayed one word at a time",
$output = $("p");
$("button").click(function() {
var displayInt;
textToDisplay = textToDisplay.split(' '); //split the text variable into an array
$output.empty(); //clear out the $output variable
displayInt = setInterval(function() {
var word = textToDisplay.shift(); //removes the first word ("Even") and sets the word variable to that value
if (word == null) { return clearInterval(displayInt); } //if we're out of words to append
$output.append(word + ' '); //else, add the word and then a space (.split(' ') will not carry over the spaces)
}, 300); //setInterval is delayed 300ms, so a word will be added every 300ms
});