質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.34%
Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

162閲覧

javascriptによる画像切り替え時のアニメーション

hgioueao

総合スコア2

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2024/12/24 13:30

実現したいこと

HTMLとCSSで画像を2枚重ね、javascriptでmouseover時に1枚目の画像を非表示、mouseout時に1枚目の画像を再度表示という処理をするとき、画像を(見た目上)徐々に変化させたいです。

発生している問題・分からないこと

カーソルを画像に重ねたときにゆるやかに画像を切り替えたいのですがやり方がわかりません。

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

調べ方が悪いのか、あまりわかりませんでした。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

概要

不透明度は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-topopacity: 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-topopacity0 にすると、上の画像を非表示にできます。
そしてこの際、CSSで transition0.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/24 17:01

munekun

総合スコア93

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hgioueao

2024/12/25 05:57

なるほど! transitionで動きをつければ良いのですね。 試してみたらできました、ありがとうございます!
guest

0

スタイルシートでよいような気がします

html

1<style> 2.wrap{ 3position:relative; 4} 5.wrap img{ 6position:absolute;; 7} 8.wrap :nth-child(1 of img){ 9transition: opacity 1s; 10z-index:2; 11} 12.wrap :nth-child(1 of img):hover{ 13opacity:0; 14} 15</style> 16<div class="wrap"> 17<img src="https://placehold.jp/ff0000/00000/100x100.png?text=1"> 18<img src="https://placehold.jp/00ff00/00000/100x100.png?text=2"> 19</div>

投稿2024/12/25 02:26

yambejp

総合スコア116921

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hgioueao

2024/12/25 05:57

ありがとうございます、参考になります!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.34%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問