2017-07-07 11 views
0

現在、スライドごとに3つの画像を読み込むブートストラップカルーセルがあります。私はこれを分割して(最終的にはモバイルのみ)、スライドごとに1つのイメージを動的に作成したいと考えています。このように、デスクトップには1つのスライドに3つの画像があり、モバイルには1つのスライドに1つの画像があります。ブートストラップカルーセル画像を別々のスライドに分割する

HTML

<section> 
    <div class="container"> 
     <div class="row"> 
      <div class="col-md-12"> 
       <div class="carousel slide" data-ride="carousel" id="myCarousel"> 
        <!-- Indicators --> 
        <ol class="carousel-indicators"> 
         <li class="active" data-lightbox="1" data-slide-to="0" data-target="#myCarousel"></li> 
        </ol> 
        <div class="carousel slide" data-interval="false" data-ride="carousel" id="lightboxImageCarousel"> 
         <ol class="carousel-indicators" style="display: none;"> 
          <li class="active" data-slide-to="0" data-target="#lightboxImageCarousel"></li> 
         </ol> 
         <div class="carousel-inner"> 
          <div class="item active"> 
           <div class="col-xs-4 col-sm-4"> 
            <a class="example-image-link" data-lightbox="example-set-7" data-title="" href="#"><img class="img-responsive example-image" src="blank1.jpg"></a> 
           </div> 
           <div class="col-xs-4 col-sm-4"> 
            <a class="example-image-link" data-lightbox="example-set-7" data-title="" href="#"><img class="img-responsive example-image" src="blank2.jpg"></a> 
           </div> 
           <div class="col-xs-4 col-sm-4"> 
            <a class="example-image-link" data-lightbox="example-set-7" data-title="" href="#"><img class="img-responsive example-image" src="blank3.jpg"></a> 
           </div> 
          </div> 
         </div><a class="left carousel-control" data-slide="prev" href="#lightboxImageCarousel" role="button"><span aria-hidden="true" class="rslides1_nav prev"></span> <span class="sr-only">Previous</span></a> <a class="right carousel-control" data-slide="next" href="#lightboxImageCarousel" role="button"><span aria-hidden="true" class="rslides1_nav next"></span> <span class="sr-only">Next</span></a> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
</section> 

jQueryの

if ($('.item').has('.active')) { 
    var $itemActive = $('.item'); 
    var countDivs = $itemActive[0].childElementCount; 
    console.log(countDivs); 

    // Remove classes and convert to XS 12, And hide the rest 
    $('.item').children().removeClass().addClass('col-xs-12').next().hide(); 

    $('.item').each(function() { 
    console.log($('.item:nth-child(' + countDivs + ')')); 
    }); 

    // Create a new Item and loop it to total number of col-xs-12 that exist inside of item 
    $('.carousel-inner').append("<div class='item'></div>") 

    // Add nth-child 1 of for Loop 1, and nth-child 2 for loop 2 
    // Where it breaks 
    $('.item.active').children().next().appendTo(".item").next().show(); 
} 

(function() { 
    $('#myCarousel').carousel({ 
    interval: 3200 
    }); 
}()); 

答えて

0

Bootstrap grid optionsを使用しないのはなぜ?
col-xs-12を使用すると、コンテンツは、メディアクエリに親コンテナの100%を使用する必要があります。
はあなたにも、私は(モバイルおよびデスクトップ環境をターゲットに二つの容器を使用して)第二の技術に関しては、私のポイントを説明するためにCodePenを作っResponsive Utilities Classes

編集で特定のタグを非表示にすることができていることを覚えておいてください。私はそれがOPオリジナルの問題を解決すると思う。

側の注意点として、一つはまた、JS関数は、彼らが表示されているかどうかを確認し、デバウンス$(window).resize(fn)でこれらの関数を使用して行い、その後、文書のbodyタグにターゲットグリッドサイズ(すなわちvisible-xs-*)でタグを追加することができますイベントリスナーを使用して、現在使用されているメディアクエリに応じて特定のイベントを発生させます。これにより、OPが、例えば戦略パターンを用いて、現在のメディアクエリに応じてJS動作を切り替えることが可能になる。それはもう少し複雑このユースケースについてですけれども...

HTML(オリジナルの答え)

<section> 
    <div class="container"> 
    <div class="row"> 
     <div class="col-md-12"> 
     <div class="carousel slide" data-ride="carousel" id="myCarousel"> 
      <!-- Indicators --> 
      <ol class="carousel-indicators"> 
       <li class="active" data-lightbox="1" data-slide-to="0" data-target="#myCarousel"></li> 
      </ol> 
      <div class="carousel slide" data-interval="false" data-ride="carousel" id="lightboxImageCarousel"> 
      <ol class="carousel-indicators" style="display: none;"> 
       <li class="active" data-slide-to="0" data-target="#lightboxImageCarousel"></li> 
      </ol> 
      <div class="carousel-inner"> 
       <div class="item active"> 
       <div class="col-xs-12 col-sm-4"> 
        <a class="example-image-link" data-lightbox="example-set-7" data-title="" href="#"><img class="img-responsive example-image" src="blank1.jpg"></a> 
       </div> 
       <div class="col-xs-12 col-sm-4"> 
        <a class="example-image-link" data-lightbox="example-set-7" data-title="" href="#"><img class="img-responsive example-image" src="blank2.jpg"></a> 
       </div> 
       <div class="col-xs-12 col-sm-4"> 
        <a class="example-image-link" data-lightbox="example-set-7" data-title="" href="#"><img class="img-responsive example-image" src="blank3.jpg"></a> 
       </div> 
       </div> 
      </div><a class="left carousel-control" data-slide="prev" href="#lightboxImageCarousel" role="button"><span aria-hidden="true" class="rslides1_nav prev"></span> <span class="sr-only">Previous</span></a> <a class="right carousel-control" data-slide="next" href="#lightboxImageCarousel" role="button"><span aria-hidden="true" class="rslides1_nav next"></span> <span class="sr-only">Next</span></a> 
      </div> 
     </div> 
     </div> 
    </div> 
    </div> 
</section> 

編集:完全ではないでしょう残念ながら第二の技術

<section> 
    <div class="container desktop-view hidden-xs"> 
    <div class="row"> 
     <div class="col-md-12"> 
     <div class="carousel slide" data-ride="carousel" id="myCarousel"> 
      <!-- Indicators --> 
      <ol class="carousel-indicators"> 
       <li class="active" data-lightbox="1" data-slide-to="0" data-target="#myCarousel"></li> 
      </ol> 
      <div class="carousel slide" data-interval="false" data-ride="carousel" id="lightboxImageCarousel"> 
      <ol class="carousel-indicators" style="display: none;"> 
       <li class="active" data-slide-to="0" data-target="#lightboxImageCarousel"></li> 
      </ol> 
      <div class="carousel-inner"> 
       <div class="item active"> 
       <div class="col-sm-4"> 
        <a class="example-image-link" data-lightbox="example-set-7" data-title="" href="#"><img class="img-responsive example-image" src="blank1.jpg"></a> 
       </div> 
       <div class="col-sm-4"> 
        <a class="example-image-link" data-lightbox="example-set-7" data-title="" href="#"><img class="img-responsive example-image" src="blank2.jpg"></a> 
       </div> 
       <div class="col-sm-4"> 
        <a class="example-image-link" data-lightbox="example-set-7" data-title="" href="#"><img class="img-responsive example-image" src="blank3.jpg"></a> 
       </div> 
       </div> 
      </div><a class="left carousel-control" data-slide="prev" href="#lightboxImageCarousel" role="button"><span aria-hidden="true" class="rslides1_nav prev"></span> <span class="sr-only">Previous</span></a> <a class="right carousel-control" data-slide="next" href="#lightboxImageCarousel" role="button"><span aria-hidden="true" class="rslides1_nav next"></span> <span class="sr-only">Next</span></a> 
      </div> 
     </div> 
     </div> 
    </div> 
    </div> 

    <div class="container mobile-view hidden-sm hidden-md hidden-lg"> 
    <div class="row"> 
     <div class="col-md-12"> 
     <div class="carousel slide" data-ride="carousel" id="myCarousel"> 
      <!-- Indicators --> 
      <ol class="carousel-indicators"> 
       <li class="active" data-lightbox="1" data-slide-to="0" data-target="#myCarousel"></li> 
      </ol> 
      <div class="carousel slide" data-interval="false" data-ride="carousel" id="lightboxImageCarousel"> 
      <ol class="carousel-indicators" style="display: none;"> 
       <li class="active" data-slide-to="0" data-target="#lightboxImageCarousel"></li> 
      </ol> 
      <div class="carousel-inner"> 
       <div class="item active"> 
       <div class="col-xs-12"> 
        <a class="example-image-link" data-lightbox="example-set-7" data-title="" href="#"><img class="img-responsive example-image" src="blank1.jpg"></a> 
       </div> 
       </div> 
       <div class="item"> 
       <div class="col-xs-12"> 
        <a class="example-image-link" data-lightbox="example-set-7" data-title="" href="#"><img class="img-responsive example-image" src="blank2.jpg"></a> 
       </div> 
       </div> 
       <div class="item"> 
       <div class="col-xs-12"> 
        <a class="example-image-link" data-lightbox="example-set-7" data-title="" href="#"><img class="img-responsive example-image" src="blank3.jpg"></a> 
       </div> 
       </div> 
      </div><a class="left carousel-control" data-slide="prev" href="#lightboxImageCarousel" role="button"><span aria-hidden="true" class="rslides1_nav prev"></span> <span class="sr-only">Previous</span></a> <a class="right carousel-control" data-slide="next" href="#lightboxImageCarousel" role="button"><span aria-hidden="true" class="rslides1_nav next"></span> <span class="sr-only">Next</span></a> 
      </div> 
     </div> 
     </div> 
    </div> 
    </div> 
</section> 
+0

作業。たとえば、画像1がスライド1に表示されている場合は、他の2つの画像を非表示にする必要があります。しかし、私が「次へ」ボタンを押すと、画像1はスライド2のために隠れるはずで、画像2が表示されるはずです。そして、スライド3の「次へ」をもう一度押すと、画像2が非表示になり、画像3が表示されます。 – askmeaquestion1234

+0

次に、2つの異なる振る舞いで2つのコンテナを作成します。応答可能なユーティリティクラスを使用して、デスクトップ上のモバイルビューを非表示にし、モバイル上のデスクトップビューを非表示にします。結局、デスクトップビューとモバイルビューの違いが大きくなる場合は、2つの問題を分割する方が簡単になります。 –

+0

[このCodePenを参照](https://codepen.io/sumi1985/pen/LLgEEN) –

関連する問題