HTMLの書き方
head終了タグ直前に自作のCSSを読み込みます。
<link rel="stylesheet" type="text/css" href="css/8-10.css">
body内のテキストを表示させたい場所にHTMLを記載します。
<p class="TextTyping">ABCDEFGHIJKLMN</p>
body 終了タグ直前にjQueryと、動きを制御する自作のJSの2つを読み込みます。
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<!--自作のJS-->
<script src="js/8-10.js"></script>
CSSの書き方
.TextTyping span {
display: none;
}
/*文字列後ろの線の設定*/
.TextTyping::after {
content: "|";
animation: typinganime .8s ease infinite;
}
@keyframes typinganime{
from{
opacity:0
}
to{
opacity:1
}
}
JSの書き方
// TextTypingというクラス名がついている子要素(span)を表示から非表示にする定義
function TextTypingAnime() {
$('.TextTyping').each(function () {
var elemPos = $(this).offset().top - 50;
var scroll = $(window).scrollTop();
var windowHeight = $(window).height();
var thisChild = "";
if (scroll >= elemPos - windowHeight) {
thisChild = $(this).children(); //spanタグを取得
//spanタグの要素の1つ1つ処理を追加
thisChild.each(function (i) {
var time = 100;
//時差で表示する為にdelayを指定しその時間後にfadeInで表示させる
$(this).delay(time * i).fadeIn(time);
});
} else {
thisChild = $(this).children();
thisChild.each(function () {
$(this).stop(); //delay処理を止める
$(this).css("display", "none"); //spanタグ非表示
});
}
});
}
// 画面をスクロールをしたら動かしたい場合の記述
$(window).scroll(function () {
TextTypingAnime();/* アニメーション用の関数を呼ぶ*/
});// ここまで画面をスクロールをしたら動かしたい場合の記述
// 画面が読み込まれたらすぐに動かしたい場合の記述
$(window).on('load', function () {
//spanタグを追加する
var element = $(".TextTyping");
element.each(function () {
var text = $(this).html();
var textbox = "";
text.split('').forEach(function (t) {
if (t !== " ") {
textbox += '<span>' + t + '</span>';
} else {
textbox += t;
}
});
$(this).html(textbox);
});
TextTypingAnime();/* アニメーション用の関数を呼ぶ*/
});// ここまで画面が読み込まれたらすぐに動かしたい場合の記述