###前提・実現したいこと
いつもお世話になっております。
現在、jquery bxsliderでスマホのスライドショーを作っています。
様々なスライドショーのプラグインがありますが、なかなかキャプションをつけられるものがなく、jquery bxsliderで半分、力づくの感じでキャプションを入れるところまでは成功しました。
横長の写真の場合には、キャプション部分を写真より下部に、
縦長の場合には、キャプションを写真にのせる想定です。
###発生している問題・エラーメッセージ
bxsliderは開発ツールを見ていてわかったのですが、
デフォルトだと.bx-viewportがoverflow:hiddenになっていて、それだと横長の写真の時に、キャプションが表示されません。
そのため、下記で再現できないかと思っているのですが、うまくいきません。
・heightよりwidthが大きい時には、.bx-viewportをoverflow:visibleに変更
・スライダーをwrapしている#wrapper_galleryに画像+キャプションの高さを代入する
(overflow:visibleにしてしまうと#wrapper_gallery自体が縦長写真の時の高さになってしまうため、横長写真の時にキャプションの下に余計な余白ができてしまう)
●該当の部分のコード $(window).load(function(){ var w=$(".bxslider li img").width(); var h=$(".bxslider li img").height(); var c_h=$(".cpt_b").height(); total = parseInt(h) + parseInt(c_h); if (w>h) { $(".bx-viewport").css("overflow","visible"); $("#wrapper_gallery").height(total); } });
###ソースコード 全体
codepen
上記にもソースを載せてみていますが、下記にも記載いたします。
※ちょっと右端に次の画像が見えていたりしますが、ここは無視してくださいませ。
●js $(document).ready(function(){ $('.bxslider').bxSlider({ responsive: true, adaptiveHeight: 'true', pager: false }); }); $(function(){ $('.bx-wrapper .bx-viewport').hover(function() { $('.bx-wrapper .bx-controls-direction a').css('display', 'block'); }, function() { $('.bx-wrapper .bx-controls-direction a').css('display', 'none'); }); $('.bx-wrapper .bx-controls-direction a').hover(function() { $('.bx-wrapper .bx-controls-direction a').css('display', 'block'); }, function() { }); }); $(window).load(function(){ var w=$(".bxslider li img").width(); var h=$(".bxslider li img").height(); var c_h=$(".cpt_b").height(); total = parseInt(h) + parseInt(c_h); if (w>h) { $(".bx-viewport").css("overflow","visible"); $("#wrapper_gallery").height(total); } });
●html <div id="wrapper_gallery" class="clearfix"> <ul class="bxslider"> <li> <img src="https://www.pakutaso.com/shared/img/thumb/shdrht_TP_V.jpg" /> <div class="cpt_b"> <p>文章文章文章文章文章文章文章文章文章</p> <div class="border"></div> <span>カテゴリ</span> <p>SHARE THIS!</p> </div> </li> <li> <img src="https://www.pakutaso.com/shared/img/thumb/HIRA842_nekodame_TP_V.jpg" /> <div class="cpt_b"> <p>文章文章文章文章文章文章文章文章文章</p> <div class="border"></div> <span>カテゴリ</span> <p>SHARE THIS!</p> </div> </li> <li> <img src="https://www.pakutaso.com/assets_c/2016/05/AMENEKO844-thumb-autox1600-22185.jpg" /> <div class="cpt_b_tate"> <p>文章文章文章文章文章文章文章文章文章</p> <div class="border"></div> <span>カテゴリ</span> <p>SHARE THIS!</p> </div><!-- /.cpt --> </li> <li> <img src="https://www.pakutaso.com/assets_c/2016/05/P1070936-thumb-autox1600-22115.jpg" /> <div class="cpt_b_tate"> <p>文章文章文章文章文章文章文章文章文章</p> <div class="border"></div> <span>カテゴリ</span> <p>SHARE THIS!</p> </div><!-- /.cpt --> </li> </ul> </div><!-- /#wrapper_gallery -->
●css .clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } .clearfix { display: inline-table; } div#wrapper_gallery { width: 100%; margin: 0 auto; text-align: left; display: block; position: relative; } .cpt_b{ position: absolute; background: rgba(255,255,255,.6); width: 240px; padding: 20px; text-align: center; left: 50%; -webkit-transform: translate(-50%, 0%); transform: translate(-50%, 0%); } .cpt_b_tate{ position: absolute; bottom: 20px; background: rgba(255,255,255,.6); width: 240px; padding: 20px; text-align: center; left: 50%; -webkit-transform: translate(-50%, 0%); transform: translate(-50%, 0%); } .cpt .border,.cpt_b .border,.cpt_b_tate .border{ width: 70px; border-bottom: 1px solid #3f3f3f; margin: 20px auto; }
jqueryは勉強を始めたばかりで、こう書いたら実現できるのではないか?と
お恥ずかしながら、手探りの状態で作っています。
いろいろと自分で試してみたのですが、うまくいかずです。
有識者の皆様、何卒ご教授のほど、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/16 08:10
2016/09/16 09:18
2016/09/16 09:20
2016/09/16 09:21
2016/09/16 09:44
2016/09/23 08:12
2016/09/23 08:58