アニメーション

CSSだけで作る、アメトーークっぽいカラフルな雫が落ちるアニメーション

投稿日2026/06/29

更新日2026/6/28

雲からカラフルな雫がぽたぽたと落ちていく――そんなかわいらしいアニメーションを、CSSだけで作ったデモです。

雲の形はborder-radiusと::before疑似要素の組み合わせ、雫の形は透明なborderと丸い底部の組み合わせで再現しています。

ピンク・イエロー・グリーンの3つの雫がそれぞれ異なるタイミングで落下し、フェードアウトして消えていきます。

JavaScriptは一切使っておらず、HTMLとCSSだけで完結するため、ローディング画面やデコレーション要素として手軽に組み込めます。

Code コード

<div class="kumonosu-backdrop">
	<div class="kumonosu-container">
		<div class="kumonosu-cloud">
			<div class="kumonosu-drop kumonosu-drop-1">
				<div class="kumonosu-top"></div>
				<div class="kumonosu-bot"></div>
			</div>
			<div class="kumonosu-drop kumonosu-drop-2">
				<div class="kumonosu-top"></div>
				<div class="kumonosu-bot"></div>
			</div>
			<div class="kumonosu-drop kumonosu-drop-3">
				<div class="kumonosu-top"></div>
				<div class="kumonosu-bot"></div>
			</div>
		</div>
	</div>
</div>
* {
	box-sizing: border-box;
}
html, body {
	margin: 0;
	padding: 0;
	width: 100%;
	height: 100%;
	background: #ffffff;
	display: flex;
	justify-content: center;
	align-items: center;
	overflow: hidden;
}
.kumonosu-backdrop {
	width: 100%;
	height: 100dvh;
	display: flex;
	justify-content: center;
	align-items: center;
	position: relative;
}
.kumonosu-container {
	position: relative;
	display: flex;
	justify-content: center;
	align-items: center;
	transform: scale(clamp(0.4, 1vw + 0.5, 1.2));
	width: 500px;
	height: 400px;
}
.kumonosu-cloud {
	position: relative;
	width: 320px;
	height: 100px;
	background: #e0e0e0;
	border-radius: 100px;
	z-index: 10;
}
.kumonosu-cloud::before {
	content: "";
	position: absolute;
	top: -50px;
	left: 40px;
	width: 110px;
	height: 110px;
	border-radius: 50%;
	background: #e0e0e0;
	box-shadow: 90px -10px 0 30px #e0e0e0;
}
.kumonosu-drop {
	position: absolute;
	top: 100px;
	animation: kumonosu-drip 1.5s linear infinite;
	z-index: 1;
}
.kumonosu-top {
	height: 0px;
	width: 0px;
	border: 10px solid transparent;
	transform: rotate(-10deg) translateX(-4px);
}
.kumonosu-bot {
	position: relative;
	height: 19px;
	width: 19px;
	top: -9px;
	border-radius: 50%;
}
.kumonosu-drop-1 {
	left: 80px;
	animation-delay: 600ms;
}
.kumonosu-drop-1 .kumonosu-top {
	border-bottom: 28px solid #FF6B6B;
}
.kumonosu-drop-1 .kumonosu-bot {
	background: #FF6B6B;
}
.kumonosu-drop-2 {
	left: 170px;
	animation-delay: 0s;
}
.kumonosu-drop-2 .kumonosu-top {
	border-bottom: 28px solid #FFD93D;
}
.kumonosu-drop-2 .kumonosu-bot {
	background: #FFD93D;
}
.kumonosu-drop-3 {
	left: 260px;
	animation-delay: 1s;
}
.kumonosu-drop-3 .kumonosu-top {
	border-bottom: 28px solid #6BCB77;
}
.kumonosu-drop-3 .kumonosu-bot {
	background: #6BCB77;
}
@keyframes kumonosu-drip {
	0% {
		transform: translate(0px, 0px);
		opacity: 1;
	}
	50% {
		opacity: 1;
	}
	100% {
		transform: translate(40px, 200px);
		opacity: 0;
	}
}
@media (max-width: 400px) {
	.kumonosu-container {
		transform: scale(0.6);
	}
}

Explanation 詳しい説明

仕様

このアニメーションは、HTMLとCSSのみで構成されており、JavaScriptは一切使用していません。

主な構成は以下のとおりです。

  • 雲の形状: 横長の角丸矩形(border-radius: 100px)をベースに、::before疑似要素で2つの円形(border-radius: 50%box-shadow)を重ねて雲のシルエットを作っています。色はグレー(#e0e0e0)で統一されています。
  • 雫の形状: 上部はborderを使ったCSS三角形テクニック(border: 10px solid transparentborder-bottomに色指定)で逆三角形を作り、下部は丸いdivborder-radius: 50%)を重ねることで、雫の形を再現しています。
  • 3色の雫: ピンク(#FF6B6B)、イエロー(#FFD93D)、グリーン(#6BCB77)の3色がそれぞれ異なる位置から落下します。
  • 落下アニメーション: @keyframesで1.5秒間かけて斜め下方向に移動しながらフェードアウトします。animation-delayで各雫の開始タイミングをずらし(0ms・600ms・1000ms)、自然なリズムを作っています。
  • ループ再生: animation: ... infiniteで無限に繰り返されます。

カスタマイズ

  • 雫の色: 各.kumonosu-drop-*クラスのborder-bottombackgroundの色を変更すれば、自由な配色にできます。
  • 雫の数: HTMLに.kumonosu-drop要素を追加し、対応するCSSクラス(位置・色・ディレイ)を定義すれば、雫の数を増やせます。
  • 落下速度: @keyframes kumonosu-dripのアニメーション時間(デフォルト1.5s)を変更すると、落下の速さが変わります。
  • 落下方向: @keyframes内のtransform: translate(40px, 170px)のX値を0にすると真下に落ち、値を変えると斜めの角度が変わります。
  • タイミング: 各雫のanimation-delayを変更すると、落下のリズムを調整できます。
  • 雲の色: .kumonosu-cloud::before疑似要素のbackgroundおよびbox-shadowの色を変更すると、雲の色を変えられます。
  • 雲のサイズ: .kumonosu-cloudwidthheight::beforeの寸法を比例的に変更すると、雲の大きさを調整できます。
  • 背景色: bodybackgroundを変更すれば、全体の雰囲気を変えられます。暗い背景にすると雫の色がより映えます。

注意点

  • 固定サイズ: .kumonosu-backdrop.kumonosu-containerにピクセル固定のサイズが設定されています。小さい画面ではコンテナがはみ出す可能性があるため、レスポンシブ対応が必要な場合はサイズをvw%で指定するか、max-widthを設定してください。
  • 雫の形の精度: CSSのborderと丸いdivの組み合わせによる近似的な雫形状のため、拡大すると接合部にわずかな隙間が見える場合があります。transform: rotate(-10deg)translateX(-4px)で微調整していますが、サイズを大幅に変更する場合はこれらの値も調整が必要です。
  • フォールバック: CSSアニメーションに対応していない極端に古いブラウザでは、雫が静止した状態で表示されます。現行の主要ブラウザではすべて問題なく動作します。
  • アクセシビリティ: 純粋な装飾要素のため、prefers-reduced-motionメディアクエリでアニメーションを停止する対応を加えると、モーションが苦手なユーザーにも配慮できます。