コピペで使えるCSSアニメーションをメモしておきます。
よかったらご自由にコピペして使ってください。
一文字ずつふわっと表示テキストアニメーション
<h1 class="title">
<span>テ</span>
<span>キ</span>
<span>ス</span>
<span>ト</span>
<span>ア</span>
<span>ニ</span>
<span>メ</span>
<span>ー</span>
<span>シ</span>
<span>ョ</span>
<span>ン</span>
</h1>
.title {
display: flex;
overflow: hidden;
}
.title span {
display: block;
transform: translate(0, 105%);
transition: transform cubic-bezier(0.215, 0.61, 0.355, 1) 0.5s;
}
.title.-visible span {
transform: translate(0, 0);
}
.title span:nth-child(2) {
transition-delay: 0.06s;
}
.title span:nth-child(3) {
transition-delay: 0.12s;
}
.title span:nth-child(4) {
transition-delay: 0.18s;
}
.title span:nth-child(5) {
transition-delay: 0.24s;
}
.title span:nth-child(6) {
transition-delay: 0.30s;
}
.title span:nth-child(7) {
transition-delay: 0.36s;
}
.title span:nth-child(8) {
transition-delay: 0.42s;
}
.title span:nth-child(9) {
transition-delay: 0.48s;
}
.title span:nth-child(10) {
transition-delay: 0.54s;
}
.title span:nth-child(11) {
transition-delay: 0.6s;
}
<script src="https://code.jquery.com/jquery-3.6.0.slim.min.js"></script>
<script type="text/javascript">
const CLASSNAME = "-visible";
const $target = $(".title");
setInterval(() => {
$target.addClass(CLASSNAME);})
</script>
※jQueryのCDNを先に読み込まないと動きません。
背景が幕のように上がって文字がふわっと表示される
<div class="bg">
<span class="title">
<span class="text01">ANIMATION</span>
<span class="text02">BACKGROUND</span>
<span class="text03">テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</span>
</span>
</div>
.bg {
display: flex;
flex-direction: column;
justify-content: center;
position: relative;
overflow: hidden;
width: 100%;
height: 100vh;
color: #fff;
padding:0 100px;
}
.bg:before {
display: block;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #62c9c7;
transform: translate(0, 100%);
transition: transform cubic-bezier(0.215, 0.61, 0.355, 1) 1s;
content: '';
}
.bg.-visible:before {
transform: translate(0, 0);
}
/* テキストのスタイル */
.title {
display: block;
color: #fff;
text-align: center;
}
.title span {
display: block;
opacity: 0;
transition: transform cubic-bezier(0.215, 0.61, 0.355, 1) 1s, opacity linear 2s;
}
.title .text01 {
transform: translate(0, 40px);
font-size: 20px;
transition-delay: .5s;
}
.title .text02{
transform: translate(0, 30px);
font-size: 48px;
transition-delay: .7s;
}
.title .text03 {
margin-top: 18px;
transform: translate(0, 30px);
font-size: 16px;
transition-delay: 1s;
}
.bg.-visible .title span {
opacity: 1;
transform: translate(0, 0);
}
<script src="https://code.jquery.com/jquery-3.6.0.slim.min.js"></script>
<script type="text/javascript">
const CLASSNAME = "-visible";
const $target = $(".bg");
setInterval(() => {
$target.addClass(CLASSNAME);
});
</script>
画像使わずCSSのみでローディングアニメーション
<i class="loading-icon"></i>
.loading-icon {
display: inline-block;
box-sizing: border-box;
width: 15px;
height: 15px;
border-radius: 50%;
box-shadow:
0 -30px 0 #eee, /* 上 */
21px -21px 0 #ddd, /* 右上 */
30px 0 0 #ccc, /* 右 */
21px 21px 0 #bbb, /* 右下 */
0 30px 0 #aaa, /* 下 */
-21px 21px 0 #999, /* 左下 */
-30px 0 0 #666, /* 左 */
-21px -21px 0 #000; /* 左上 */
animation: rotate 1s steps(8) 0s infinite;
}
@keyframes rotate {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
参考サイト
簡単CSSアニメーション&デザイン20選(ソースコードと解説付き)
こちらのページを参考にさせてもらいながら、メモの記述は少しアレンジしました。
ソースコードと解説がわかりやすく書かれていて、とても参考になりました。ありがとうございます。
メモ以外のステキなtipsもたくさん書かれているので、良かったら覗いてみてください。