CSSでflexプロパティをアニメーションさせる方法
CSSでは、flexプロパティも他のプロパティと同様に@keyframesを使ってアニメーションさせることができます。flexアイテムの伸縮を滑らかに変化させることで、動きのあるレイアウト表現が可能になります。
以下は、flexプロパティにアニメーションを適用する具体的なコード例です。
実装例
<!DOCTYPE html>
<html>
<head>
<style>
.box {
display: flex;
background-color: orange;
align-content: space-between;
height: 150px;
width: 600px;
flex-wrap: wrap;
}
.box > div {
background-color: white;
text-align: center;
line-height: 40px;
font-size: 25px;
width: 100px;
margin: 5px;
}
div {
animation: myanim 4s infinite;
}
@keyframes myanim {
50% {
flex: 1;
}
}
</style>
</head>
<body>
<h1>Quiz</h1>
<div class = "box">
<div style = "order: 8">Q1</div>
<div style = "order: 6">Q2</div>
<div style = "order: 2">Q3</div>
<div style = "order: 1">Q4</div>
<div style = "order: 7">Q5</div>
<div style = "order: 4">Q6</div>
<div style = "order: 3">Q7</div>
<div style = "order: 5">Q8</div>
</div>
</body>
</html>コードの解説
このサンプルのポイントは以下の通りです。
- コンテナ(.box):
display: flexとflex-wrap: wrapを指定し、複数行に折り返せるフレックスコンテナを作成しています。align-content: space-betweenにより、行間のスペースが均等に配分されます。 - アニメーションの定義:
@keyframes myanimの中で、アニメーションの途中(50%時点)にflex: 1を指定しています。これにより、各アイテムが一時的に均等に伸びてから元のサイズへ戻る動きを繰り返します。 - アニメーションの適用:
animation: myanim 4s infiniteによって、4秒周期でアニメーションが無限にループ再生されます。
ブラウザで表示すると、白いボックス(Q1〜Q8)が順番に伸び縮みしながら、オレンジ色のコンテナ内でダイナミックに動く様子を確認できます。flex-grow・flex-shrink・flex-basisの値を個別にキーフレームへ組み込めば、より細かい伸縮アニメーションも作成可能です。
-
CSSでz-indexプロパティをアニメーションさせる方法
CSSでは、z-indexプロパティもアニメーションの対象にできます。@keyframesルールの中でz-indexの値を段階的に変化させることで、要素の重なり順序を時間の経過とともに動的に変更できます。以下のコードを実行して、その動作を確認してみましょう。サンプルコード<!DOCTYPE html> <html> <head> <style>
-
HTML DOM スタイルのflexプロパティとは?使い方と設定例をわかりやすく解説
HTML DOM スタイルのflexプロパティとはHTML DOM の flex プロパティは、display プロパティが flex に設定されている要素に対して、柔軟な伸縮サイズを設定または取得するために使用されるプロパティです。このプロパティを利用することで、flexGrow(伸びる比率)、flexShrink(縮む比率)、flexBasis(基本サイズ)の3つのプロパティをまとめて操作できます。flexプロパティの構文flexプロパティを設定する場合の基本的な構文は以下の通りです。object.style.flex = flex-grow flex-shrink flex-basis|