質問するログイン新規登録

Q&A

解決済

1回答

236閲覧

画像に白いもやをつけたい

keel

総合スコア18

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

HTML

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

CSS

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

0グッド

0クリップ

投稿2026/01/21 10:18

0

0

実現したいこと

https://www.gorakadan.com/fuji/

上記URLのサイトのような、スクロールしたときの画像の現れ方を再現しようとしているのですが、つまずいています。
もやのようなものを再現するにはどうすればいいでしょうか?

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

画像を下から上に表示させることはできたのですが、
もやの再現方法が分かりません。

該当のソースコード

HTML

1<figure class="reveal-container"><img src="画像パス"></figure>

CSS

1.reveal-container { 2 position: relative; 3 overflow: hidden; 4} 5 6 7.reveal-container img { 8 width: 100%; 9 clip-path: inset(100% 0 0 0); 10 transition: clip-path 2s cubic-bezier(0.19,1,0.22,1); 11} 12 13 14.reveal-container::after { 15 content: ""; 16 position: absolute; 17 left: -10%; 18 bottom: -150px; 19 width: 120%; 20 height: 300px; 21 22 background: 23 radial-gradient(circle at 20% 60%, rgba(255,255,255,.8) 0%, transparent 60%), 24 radial-gradient(circle at 50% 40%, rgba(255,255,255,.7) 0%, transparent 60%), 25 radial-gradient(circle at 80% 60%, rgba(255,255,255,.8) 0%, transparent 60%); 26 27 filter: blur(20px); 28 opacity: .9; 29 30 transform: translateY(0); 31 transition: transform 2s cubic-bezier(0.19,1,0.22,1); 32 33 animation: steam 4s ease-in-out infinite; 34 pointer-events: none; 35 z-index: 2; 36} 37 38 39@keyframes steam { 40 0% { transform: translateY(0) translateX(0); } 41 50% { transform: translateY(-30px) translateX(20px); } 42 100% { transform: translateY(0) translateX(0); } 43} 44 45 46.reveal-container.is-animated img { 47 clip-path: inset(0 0 0 0); 48} 49 50.reveal-container.is-animated::after { 51 transform: translateY(-120%); 52}

JavaScript

1jQuery(function($) { 2 $(window).on('scroll load', function() { 3 $('.reveal-container').each(function() { 4 var targetPos = $(this).offset().top; 5 var scrollPos = $(window).scrollTop(); 6 var windowHeight = $(window).height(); 7 8 if (scrollPos > targetPos - windowHeight + (windowHeight * 0.2)) { 9 $(this).addClass('is-animated'); 10 } 11 }); 12 }); 13});

試したこと・調べたこと

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

もやが再現しにくく動きも画像においつかない感じになってしまいます。

補足

特になし

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

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

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

guest

回答1

0

ベストアンサー

こういうことでしょうか?
ホバーをトリガーにしたサンプルを置いておきます。
https://jsfiddle.net/Lhankor_Mhy/tx1c4n60/

css

1.reveal-container { 2 width: max-content; 3 background-color: white; 4 5 img { 6 mask-image: 7 linear-gradient(transparent 33%, white 66%), 8 radial-gradient(circle at 20% 33%, white 0%, transparent 30%), 9 radial-gradient(circle at 80% 35%, white 0%, transparent 30%), 10 radial-gradient(circle at 50% 30%, white 0%, transparent 30%); 11 mask-position: 0% 0%; 12 mask-composite: subtract, add, add, add; 13 mask-size: 300% 300%; 14 transition: all 1s; 15 16 &:hover { 17 mask-position: 100% 100%; 18 } 19 } 20}

投稿2026/01/22 07:59

Lhankor_Mhy

総合スコア37711

keel

2026/01/23 01:13

まさしくそんな感じです! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問