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

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

新規登録して質問してみよう
ただいま回答率
85.35%
jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

CSS

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

Q&A

解決済

2回答

771閲覧

レスポンジブで、フェードアウトするスライドショーを作りたい

yukarichang

総合スコア14

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

CSS

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

0グッド

0クリップ

投稿2021/08/31 15:22

width: 100%が使えて、なおかつ、横にスライドするのではなくフェードイン、フェードアウトでふわっと画像が切り替わるスライドショーを作りたいです。

下記のコードを書くと、一応実現ができるのですが、スライドショーの記述のあとの要素がスライドショーと重なって表示されてしまうので、使えないです。

html

1<div> 2 <img src="slideshow1.png"> 3 <img src="slideshow2.png"> 4 <img src="slideshow3.png"> 5</div>

css

1div { 2 position: relative; 3} 4 5div img { 6 position: absolute; 7 width: 100%; 8}

jQuery

1var $slides = $('div img'), 2 slideCount = $slides.length, 3 currentIndex = 0; 4 5$slides.eq(currentIndex).fadeIn(); 6setInterval(showNextSlide,2000); 7 8function showNextSlide(){ 9 var nextIndex = (currentIndex + 1) % slideCount; 10 $slides.eq(currentIndex).fadeOut(); 11 $slides.eq(nextIndex).fadeIn(); 12 currentIndex = nextIndex; 13}

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

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

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

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

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

guest

回答2

0

スライドショーの記述のあとの要素がスライドショーと重なって表示されてしまう

簡単に対応するならば、高さをつければいいかもしれません。

css

1div { 2 position: relative; 3 height: 100vh; /* たとえば */ 4}

投稿2021/09/01 01:38

Lhankor_Mhy

総合スコア36960

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

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

yukarichang

2021/09/01 06:53

コメントありがとうございます。教えて頂いたコードを打ってみて、確かに次に続く要素と被らないようには出来たのですが、ビューポートを縮めるに従って余計な余白が生まれてしまいます(;-;)(上記コードのdivに背景色を付けると私の言っていることが分かると思います)余談ですがhttps://www.kirinholdings.com/jp/ ←まさにこのサイトのスライドショーのようにしたいです。
guest

0

ベストアンサー

img要素にposition: absolute;とすることで通常フローから外れるので、親要素からみると存在しないことになり、親要素の高さが0になるため、次の要素がimg要素に重なります。
親要素に明示的に高さを指定しましょう。

レスポンシブとのことですが、画面サイズに合わせてどのようにレイアウトするのか不明なので、スライドショーを画面一杯に表示させるということだとすると下記にようにすればいいでしょう。

html

1<div class="slideshow"> 2 <img src="slideshow1.png"> 3 <img src="slideshow2.png"> 4 <img src="slideshow3.png"> 5</div>

css

1div.slideshow { 2 position: relative; 3 height: 100vh; 4} 5 6div img { 7 position: absolute; 8 width: 100%; 9 height: 100%; 10 object-fit: cover; 11}

画像そのものが縦横比を保ったまま収縮拡大させたいのです。

padding-top は横幅を基準にするのでそれを使うといいでしょう。

css

1div.slideshow { 2 position: relative; 3 padding-top: 70%; /* 縦横比100:70の場合 */ 4} 5 6div img { 7 position: absolute; 8 top: 0; 9 width: 100%; 10 height: 100%; 11}

CodePenサンプル

投稿2021/09/01 01:34

編集2021/09/01 07:15
hatena19

総合スコア34075

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

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

yukarichang

2021/09/01 06:31

コメントありがとうございます。教えて頂いたコードを打ってみたのですが、画像の中央が切り取られる感じではなくて、画像そのものが縦横比を保ったまま収縮拡大させたいのです。https://www.kirinholdings.com/jp/ ←まさにこのサイトみたいな感じに。
hatena19

2021/09/01 07:20

回答に追記しましたので、ご参照ください。
yukarichang

2021/09/01 08:39

すごいです!長年の疑問が解決されました。本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問