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

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

新規登録して質問してみよう
ただいま回答率
85.48%
CSS3

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

HTML5

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

jQuery

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

Q&A

解決済

2回答

4263閲覧

Jqueryでcssの高さをウィンドウ幅に合わせて自動で変更されるようにしたい

退会済みユーザー

退会済みユーザー

総合スコア0

CSS3

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

HTML5

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

jQuery

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

0グッド

0クリップ

投稿2017/01/17 07:25

ID slideshowのhightをウィンドウサイズに合わせてフレキシブルに変わるようにしたいのですがうまくいきません。
CSSで#slideshowをposition:relativeにし、含む子要素を全てposition:absoluteにしているため#slideshowは高さを数値で設定しなければいけない状態となっています。しかしレスポンシブルにしたいためJqueryにて調整を試みている次第です。
※jquery初心者のためとんちんかんな記述かもしれませんが、上記部部分の他にも改善点ありましたらお教えいただけると幸いです。

###発生している問題・エラーメッセージ

エラーメッセージは表示されないのですが、記述内容も反映されない状態です。

###該当のソースコード

HTML

1 <div id="slideshow"> 2 <p class="active"> 3 <a href="リンク先"><img src="images/photo1.jpg" alt="画像1"></a> 4 キャプション1 5 </p> 6 <p> 7 <a href="リンク先"><img src="images/photo2.jpg" alt="画像2"></a> 8 キャプション2 9 </p> 10 <p> 11 <a href="リンク先"><img src="images/photo3.jpg" alt="画像3"></a> 12 キャプション3 13 </p> 14</div> 15

css

1#slideshow { 2 position: relative; 3 width: 100%; 4 height: 500px; 5} 6 7#slideshow p { 8 position: absolute; 9 top: 0; 10 left: 0; 11 z-index: 8; 12 opacity: 0.0; 13 margin: 0; 14 background-color:#000; 15 height: 100%; 16} 17 18#slideshow p.active { 19 z-index: 10; 20 opacity: 1.0; 21} 22 23#slideshow p.last-active { 24 z-index: 9; 25} 26 27#slideshow p img { 28 width:auto; 29 height:auto; 30 max-width:100%; 31 max-height:100%; 32 display: block; 33 border: 0; 34 margin-bottom: 10px; 35} 36

html

1<script src="js/jquery-1.11.3.min.js"></script> 2<script > 3function slideSwitch() { 4 var $active = $('#slideshow p.active'); 5 if ( $active.length == 0 ) $active = $('#slideshow p:last'); 6 var $next = $active.next().length ? $active.next() 7 : $('#slideshow p:first'); 8 $active.addClass('last-active'); 9 $next.css({opacity: 0.0}) 10 .addClass('active') 11 .animate({opacity: 1.0}, 1000, function() { 12 $active.removeClass('active last-active'); 13 });} 14$(function() {setInterval( "slideSwitch()", 3000 );}); 15</script> 16<script > 17$(window).on('load resize', function(){ 18var w = $(window).width() *0.5; 19$('#slideshow').css('hight', w); 20}); 21</script> 22

###試したこと

###補足情報(言語/FW/ツール等のバージョンなど)
Jquery1.11.3を使用しています。
bootstrap3.3.7を使用しているためhead内に外部ファイルを置いています

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

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

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

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

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

guest

回答2

0

ミススペルがあったぐらいで、特に大きな問題はありません。

修正

失礼しました。幅に応じて高さでしたね。

JavaScript

1$(function() { 2 function slideSwitch() { 3 var $active = $('#slideshow p.active'); 4 if ($active.length == 0) 5 $active = $('#slideshow p:last'); 6 7 var $next = $active.next().length ? $active.next() 8 : $('#slideshow p:first'); 9 10 $active.addClass('last-active'); 11 12 $next.css({ 13 opacity : 0.0 14 }) 15 .addClass('active') 16 .animate({ 17 opacity : 1.0 18 }, 1000, function() { 19 $active.removeClass('active last-active'); 20 } 21 ); 22 } 23 24 setInterval(slideSwitch, 3000); 25 26 $(window).on('load resize', function() { 27 var height = $(window).width() * 0.5; 28 $('#slideshow').css('height', height); 29 }); 30});

投稿2017/01/17 09:24

編集2017/01/17 09:30
naomi3

総合スコア1105

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

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

退会済みユーザー

退会済みユーザー

2017/01/18 01:20

ご回答ありがとうございます。 まねして記述してみたのですがなぜかうまく動きません・・・ そのままコピペするとちゃんと動きます。 まじまじと読んで、いじっているのですが・・・・なんとも 初心者すぎてほんとお恥ずかしいのですが。 何が原因だったのかおおしえいただけませんか 宜しくお願い致します。
guest

0

ベストアンサー

参考になるかわからないですが、ソースあげときます。
※ 認識も合っているかご確認くださいー。

html

1 <div id="slideshow"> 2 <p class="active"> 3 <a href="リンク先"><img src="https://dummyimage.com/600x400/333/fff" alt="画像1">キャプション1</a> 4 </p> 5 <p> 6 <a href="リンク先"><img src="https://dummyimage.com/600x400/0ff/fff" alt="画像2">キャプション2</a> 7 </p> 8 <p> 9 <a href="リンク先"><img src="https://dummyimage.com/600x400/0f0/fff" alt="画像3">キャプション3</a> 10 </p> 11</div>

css

1#slideshow { 2 position: relative; 3 width: 100%; 4 height: 500px; 5} 6 7#slideshow p { 8 position: absolute; 9 top: 0; 10 left: 0; 11 z-index: 8; 12 opacity: 0.0; 13 margin: 0; 14 background-color:#000; 15 height: 100%; 16} 17 18#slideshow p.active { 19 z-index: 10; 20 opacity: 1.0; 21} 22 23#slideshow p.last-active { 24 z-index: 9; 25} 26 27#slideshow p img { 28 max-height:100%; 29 width: 100%; 30 display: block; 31 border: 0; 32 margin-bottom: 10px; 33} 34 35#slideshow p a{ 36 color: #333; 37 text-decoration:none; 38} 39 40#slideshow p a{ 41 opacity: 0; 42} 43 44#slideshow p.active a{ 45 opacity: 1; 46}

javascript

1function slideSwitch() { 2 var $active = $('#slideshow p.active'); 3 var $next = $active.next().length ? $active.next() : $('#slideshow p:first'); 4 $active.addClass('last-active'); 5 $next.css({opacity: 0.0}) 6 .addClass('active') 7 .animate({opacity: 1.0}, 1000, function() { 8 $active.removeClass('active last-active'); 9});} 10 11//初期表示 12var slideSize = function(){ 13 var w = $(window).width() *0.5; 14 $('#slideshow').css({"height": w}); 15}; 16 17//初期サイズ 18slideSize(); 19 20//タイマー 21loopSlideTimer = setInterval(function() { 22 slideSwitch(); 23}, 3000); 24 25//リサイズ処理 26var currentWidth = window.innerWidth; 27window.addEventListener("resize", function() { 28 if (currentWidth == window.innerWidth) { 29 // ウインドウ横幅が変わっていないため処理をキャンセル。 30 return; 31 } 32 // ウインドウ横幅が変わったのでリサイズと見なす。 33 // 横幅を更新 34 slideSize(); 35 // ※ リサイズ時にタイマーをとめたい場合はコメントを外す 36 //clearInterval(loopSlideTimer); 37});

投稿2017/01/17 07:59

編集2017/01/18 01:26
takumaro_web

総合スコア301

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

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

退会済みユーザー

退会済みユーザー

2017/01/18 00:42

丁寧なご回答ありがとうございます。私もはやくこんなにわかるようになりたいです。本当に憧れます。勉強します。 初心者すぎて本当にお恥ずかしいのですが、 もしよろしければ以下2つをおおしえいただけませんか? ①function slideSwitch()のif文の内容は、$activeのもつ要素の数が0の時 $activeに $('#slideshow p:last')を代入するという解釈で合っていますか? ②function slideSwitch() の var $next = $active.next().length ? $active.next() : $('#slideshow p:first'); は$nexが$active.next().lengthの時trueなら$active.next() ,falseなら$('#slideshow p:first')を変数として定義する??よくわからなくなってきました・・・正しい解釈をお教えいただけませんか? 調べ方がわるいのか、内容がちゃんと理解できず、独学しかないので聞ける相手もおらず・・・恐縮ですが宜しくお願い致します。
退会済みユーザー

退会済みユーザー

2017/01/18 00:59

変な質問をしてしまいました!!!すみません。 自分で記述していた部分でした・・・ どこそこのをなにも考えずにマネしたので内容をりかいできていません・・・
takumaro_web

2017/01/18 01:25

①その認識であっていますがそのif文は機能していないです。 マークアップ上で先頭のものに<p class="active">とされているので $active.length == 0(存在しているので)になることはないです。 まるまる削除でよいかと...(回答を編集しておきます。) ②$nextが$active.next().lengthの時trueなら$active.next() ,falseなら$('#slideshow p:first')を変数として定義する?? $nextが...ではなく、 「$nextは... 式1 または 式2として定義する」が正解です。 以下の条件式で$nextの値を判定させています。 $active.next().length (= 次のスライドの数はいくつ?) 返り値:1の場合(次のスライドが存在する場合):$next は $active.next() (= 次のスライドへ) 返り値:0の場合(次のスライドがない場合):$next は $('#slideshow p:first') (= スライドの先頭へ) つまり、 スライドショーを実行して最後のスライドにきた時に1枚目に戻るための処理といえます。
退会済みユーザー

退会済みユーザー

2017/01/18 09:00

成るほど!!! ありがとうございます。細かく説明頂いて恐縮です。 解決しそうです!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問