ライブデモ Live Demo

サムネイルの上にグラデーションオーバーレイとメタデータを重ねます。ホバー時にオーバーレイをフェードインして再生ボタンを浮き上がらせます。

Layer gradient overlays and metadata on top of the thumbnail. On hover, fade in the overlay and lift the play button.

Preview

Deep Dive Motion

04:12
1.05x

AI向け説明 AI Description

`V-001` はCSS `:hover` でサムネイル上にグラデーションオーバーレイをフェードイン、画像を `--hover-zoom` でズーム、メタデータを `translateY` でスライドアップさせます。`::after` 疑似要素が暗転オーバーレイを担当します。

`V-001` uses CSS `:hover` to fade in a gradient overlay, zoom the image via `--hover-zoom`, and slide up metadata with `translateY`. The `::after` pseudo-element handles the darkening overlay.

調整可能パラメータ Adjustable Parameters

実装 Implementation

HTML + CSS

<div class="video-card">
  <img src="thumbnail.jpg" alt="Preview" />
  <div class="video-meta">
    <div>
      <h3>Title</h3>
      <small>04:12</small>
    </div>
    <div class="video-play"></div>
  </div>
</div>

<style>
:root {
  --hover-zoom: 1.05;
}

.video-card {
  position: relative;
  border-radius: 16px;
  overflow: hidden;
}

.video-card::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(0, 0, 0, 0.7), transparent);
  opacity: 0;
  transition: opacity 0.3s ease;
}

.video-card img {
  width: 100%;
  display: block;
  transition: transform 0.4s ease;
}

.video-card:hover img {
  transform: scale(var(--hover-zoom));
}

.video-card:hover::after { opacity: 1; }

.video-meta {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 20px;
  z-index: 1;
  opacity: 0;
  transform: translateY(10px);
  transition: opacity 0.3s ease, transform 0.3s ease;
}

.video-card:hover .video-meta {
  opacity: 1;
  transform: translateY(0);
}
</style>

React (JSX + CSS)

// react/V-001.jsx
import "./V-001.css";

export default function VideoHoverReveal({ src, title, duration }) {
  return (
    <div className="video-card">
      <img src={src} alt={title} />
      <div className="video-meta">
        <div>
          <h3>{title}</h3>
          <small>{duration}</small>
        </div>
        <div className="video-play" />
      </div>
    </div>
  );
}
/* react/V-001.css */
.video-card {
  position: relative;
  border-radius: 16px;
  overflow: hidden;
}

.video-card img {
  width: 100%;
  transition: transform 0.4s ease;
}

.video-card:hover img {
  transform: scale(var(--hover-zoom, 1.05));
}

.video-meta {
  opacity: 0;
  transform: translateY(10px);
  transition: opacity 0.3s ease, transform 0.3s ease;
}

.video-card:hover .video-meta {
  opacity: 1;
  transform: translateY(0);
}

AIへの指示テンプレート AI Prompt Template

以下のテンプレートをコピーしてAIアシスタントに貼り付けると、このパターンの実装を依頼できます。 Copy the template below and paste it into your AI assistant to request an implementation of this pattern.

注意とバリエーション Notes & Variations

アクセシビリティのためにキーボードフォーカス時にも同じ表示を行い、`.video-meta` 内にメタデータ(タグ、チャンネル)を積み重ねます。

Mirror the same reveal on keyboard focus for accessibility, and stack extra metadata (tags, channel) inside `.video-meta`.