ページ上のテキストのアニメーションを作成しようとしています。このアニメーションは、数秒ごとに、ある単語をリストの別の単語に変更します。例:「これはかっこいい」というヘッダーがありますが、「かっこいい」を数秒ごとに「neat / awesome / groovy/etc」に置き換えたいと思います。
私は正直なところ、これを実行するための最良の方法(使用するテクノロジーの観点から)がわかりません。また、最新のブラウザーで機能するコードの宣伝文句を見つけることができません。ヘルプは大歓迎です!
ページ上のテキストのアニメーションを作成しようとしています。このアニメーションは、数秒ごとに、ある単語をリストの別の単語に変更します。例:「これはかっこいい」というヘッダーがありますが、「かっこいい」を数秒ごとに「neat / awesome / groovy/etc」に置き換えたいと思います。
私は正直なところ、これを実行するための最良の方法(使用するテクノロジーの観点から)がわかりません。また、最新のブラウザーで機能するコードの宣伝文句を見つけることができません。ヘルプは大歓迎です!
PureJSで
<script>
var words = ["neat", "great", "best", "groovy"];
var i = 0;
var text = "This is cool";
function _getChangedText() {
i = (i + 1) % words.length;
console.log(words[i]);
return text.replace(/cool/, words[i]);
}
function _changeText() {
var txt = _getChangedText();
console.log(txt);
$("#changer").text(txt);
}
setInterval("_changeText()", 1000);
</script>
<span id="changer">This is cool</span>
jQueryでは、次のようにします。
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() { // on document load
changer();
});
function changer() {
var words = ["nifty","groovy","far out"]; // add as many as you like
var idx = Math.floor(words.length * Math.random()); // randomizer
$('#change').text(words[idx]); // replaces the contents of "change"
var time = Math.floor(5000 * Math.random() + 3000); // in milliseconds
setTimeout(changer,time); // lather, rinse, repeat
}
</script>
...
<h2>This is <span id="change">cool</span></h2>
重要なのは、すばやく選択できるIDを持つSPANタグを使用することです。
この質問はかなり古いですが、私のためにグーグル検索で現れました。2018年には、追加のJavaScriptコードを必要とせずに、CSSアニメーションを使用してこの動作を簡単に実装できます。
以下はあなたが必要とするものをあなたに与えるはずです:
<!DOCTYPE html>
<html>
<head>
<style>
.animated{
display: inline;
text-indent: 8px;
}
.animated span{
animation: topToBottom 12.5s linear infinite 0s;
-ms-animation: topToBottom 12.5s linear infinite 0s;
-webkit-animation: topToBottom 12.5s linear infinite 0s;
color: red;
opacity: 0;
overflow: hidden;
position: absolute;
}
.animated span:nth-child(2){
animation-delay: 2.5s;
-ms-animation-delay: 2.5s;
-webkit-animation-delay: 2.5s;
}
.animated span:nth-child(3){
animation-delay: 5s;
-ms-animation-delay: 5s;
-webkit-animation-delay: 5s;
}
.animated span:nth-child(4){
animation-delay: 7.5s;
-ms-animation-delay: 7.5s;
-webkit-animation-delay: 7.5s;
}
.animated span:nth-child(5){
animation-delay: 10s;
-ms-animation-delay: 10s;
-webkit-animation-delay: 10s;
}
@-moz-keyframes topToBottom{
0% { opacity: 0; }
5% { opacity: 0; -moz-transform: translateY(-50px); }
10% { opacity: 1; -moz-transform: translateY(0px); }
25% { opacity: 1; -moz-transform: translateY(0px); }
30% { opacity: 0; -moz-transform: translateY(50px); }
80% { opacity: 0; }
100% { opacity: 0; }
}
@-webkit-keyframes topToBottom{
0% { opacity: 0; }
5% { opacity: 0; -webkit-transform: translateY(-50px); }
10% { opacity: 1; -webkit-transform: translateY(0px); }
25% { opacity: 1; -webkit-transform: translateY(0px); }
30% { opacity: 0; -webkit-transform: translateY(50px); }
80% { opacity: 0; }
100% { opacity: 0; }
}
@-ms-keyframes topToBottom{
0% { opacity: 0; }
5% { opacity: 0; -ms-transform: translateY(-50px); }
10% { opacity: 1; -ms-transform: translateY(0px); }
25% { opacity: 1; -ms-transform: translateY(0px); }
30% { opacity: 0; -ms-transform: translateY(50px); }
80% { opacity: 0; }
100% { opacity: 0; }
}
</style>
</head>
<body>
<h2>CSS Animations are
<div class="animated">
<span>cool.</span>
<span>neat.</span>
<span>awesome.</span>
<span>groovy.</span>
<span>magic.</span>
</div>
</h2>
</body>
</html>
これは、垂直方向のスライドの例にすぎないことに注意してください。アニメーション/トランジションに関して、CSSには基本的に無限の可能性があります。