CSSでborderプロパティをアニメーション化する方法
CSSでは、@keyframesルールとanimationプロパティを組み合わせることで、要素の境界線(border)にもアニメーション効果を加えることができます。borderの太さ、スタイル(dashedやsolidなど)、色はすべてアニメーションの対象にでき、ホバー時の演出や注目させたい要素の強調などに活用できます。
実装のポイント
以下のサンプルコードでは、次のような仕組みでアニメーションを実現しています。
- @keyframes myanim:アニメーションの途中経過(20%の時点)における背景色、背景位置、背景サイズ、そしてborderの状態を定義しています。
- animation: myanim 3s infinite;:定義したキーフレームを3秒かけて再生し、無限に繰り返すよう指定しています。
- border:初期状態では「5px dashed yellow」ですが、アニメーション中は「25px solid orange」へと変化し、線が太くなりスタイルと色も切り替わります。
それでは、実際に以下のコードを実行して動作を確認してみましょう。
サンプルコード
<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 500px;
height: 400px;
background: yellow;
border: 5px dashed yellow;
background-image: url('https://www.tutorialspoint.com/latest/microservice_architecture.png');
animation: myanim 3s infinite;
background-position: bottom left;
background-size: 50px;
}
@keyframes myanim {
20% {
background-color: maroon;
background-position: bottom right;
background-size: 90px;
border: 25px solid orange;
}
}
</style>
</head>
<body>
<div></div>
</body>
</html>
動作の解説
このコードを実行すると、黄色い破線の境界線を持つ要素が表示され、3秒周期で以下のように変化していきます。
- アニメーション開始から20%のタイミング(約0.6秒後)で、境界線が「25px solid orange」へと滑らかに遷移し、太さ・スタイル・色が同時に変化します。
- 同時に、背景色がマルーン(栗色)に変わり、背景画像の位置とサイズも変化します。
infiniteが指定されているため、この一連の変化が無限に繰り返されます。
なお、border-style(dashed→solid)の変化は補間されずに瞬時に切り替わる点に注意してください。一方、border-widthとborder-colorは数値・色として補間されるため、滑らかなアニメーションになります。用途に応じてtransitionプロパティを使えば、マウスオーバー時など特定の操作に連動した境界線アニメーションも簡単に実装できます。
-
CSSのborder-imageプロパティ完全ガイド|画像ボーダーの使い方とブラウザごとの注意点
CSSのborder-imageプロパティは、初めて触れるときには少し理解しづらいプロパティの一つです。この記事では、border-imageプロパティとは何か、その基本的な使い方、そしてブラウザごとの特有の挙動について詳しく解説します。 borderプロパティのおさらい まず前提として、CSSの学習を進めていれば「border」プロパティはすでにご存じでしょう。おさらいとして、borderは要素の周囲に枠線を指定するためのショートハンド(一括指定)プロパティで、次のような構造を持っています。 border: 2px /* 幅 */ dashed /* スタイル
-
CSSのwidthプロパティをアニメーション化する方法
CSSで要素の width(幅)プロパティをアニメーションさせるには、@keyframes ルールと animation プロパティを組み合わせて使用します。幅の変化を滑らかに表現することで、開閉パネルやホバーエフェクトなど、さまざまなインタラクティブな演出が可能になります。実装のポイント@keyframes 内で、アニメーションの途中経過(例:30%)における幅の値を指定します。animation プロパティで、キーフレーム名・再生時間などを設定します。幅は数値(px など)で指定するため、ブラウザは値の補間を行い滑らかなアニメーションを実現します。サンプルコード以下のコードでは、div要素