概要
不透明度はCSSのopacity
を使い、時間経過はtransition
を使うとうまくいくのではないでしょうか?
〇opacity
https://developer.mozilla.org/ja/docs/Web/CSS/opacity
〇transition
https://developer.mozilla.org/ja/docs/Web/CSS/transition
解説
例えばHTMLで画像を二枚配置し、.image-top
のように上の画像にクラス名をつけておきます。
html
1<div class="image-container">
2 <img src="https://picsum.photos/id/21/200/300" class="image image-top">
3 <img src="https://picsum.photos/id/22/200/300" class="image image-bottom">
4</div>
CSS で .image-top
に opacity: 1;
を指定します。つまり不透明度1(透明度0)の初期状態です。
CSS
1.image-container {
2 position: relative;
3 width: 200px;
4 height: 300px;
5 overflow: hidden;
6}
7
8.image {
9 position: absolute;
10 inset: 0;
11 width: 100%;
12 height: 100%;
13 object-fit: cover;
14 transition: opacity 0.5s ease-in-out; /* 徐々に変化 */
15}
16
17.image-top {
18 z-index: 2;
19 opacity: 1; /* 不透明度1(透明度0)の初期状態 */
20}
21
22.image-bottom {
23 z-index: 1;
24}
JavaScriptで .image-top
の opacity
を 0
にすると、上の画像を非表示にできます。
そしてこの際、CSSで transition
を 0.5s
としているので、0.5秒かけて徐々に非表示にしてくれます。
JavaScript
1const imageContainer = document.querySelector('.image-container');
2const topImage = document.querySelector('.image-top');
3
4imageContainer.addEventListener('mouseover', () => {
5 topImage.style.opacity = 0; // 上の画像を非表示
6});
7
8imageContainer.addEventListener('mouseout', () => {
9 topImage.style.opacity = 1; // 上の画像を再表示
10});
実装サンプル
上記のコードを実装するとこうなります。
https://jsfiddle.net/k9vca8uj/
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/12/25 05:57