Băng chuyền Bootstrap nhiều khung hình cùng một lúc


110

Đây là hiệu ứng mà tôi đang cố gắng đạt được với băng chuyền Bootstrap 3

nhập mô tả hình ảnh ở đây

Thay vì chỉ hiển thị từng khung một, nó hiển thị N khung trượt cạnh nhau. Sau đó, khi bạn trượt (hoặc khi tự động trình chiếu), nó sẽ dịch chuyển nhóm các trang trình bày giống như nó.

Điều này có thể được thực hiện với băng chuyền của bootstrap 3 không? Tôi hy vọng mình sẽ không phải tìm kiếm một plugin jQuery khác ...


Xin lỗi đã thích nghi Bootstrap 4 nhưng dễ dàng để thay đổi stackoverflow.com/a/42098033/4796923
Oleg V Karun

Có một giải pháp mới cho vấn đề này bằng cách sử dụng Băng chuyền trượt của Ken Wheeler dễ thực hiện hơn và trang nhã hơn những giải pháp này. Vui lòng xem câu trả lời của @joshmoto với mã đầy đủ tại đây> stackoverflow.com/a/54263516/345605
ganar

Câu trả lời:


20

Điều này có thể được thực hiện với băng chuyền của bootstrap 3 không? Tôi hy vọng mình sẽ không phải tìm kiếm thêm một plugin jQuery nữa

Kể từ 2013-12-08 câu trả lời là không. Hiệu ứng bạn đang tìm kiếm không thể thực hiện được bằng cách sử dụng plugin băng chuyền chung của Bootstrap 3. Tuy nhiên, đây là một plugin jQuery đơn giản có vẻ làm chính xác những gì bạn muốn http://sorgalla.com/jcarousel/


147

Cập nhật 2019 ...

Bootstrap 4

Băng chuyền đã thay đổi trong 4.x và quá trình chuyển đổi hoạt ảnh nhiều trang chiếu có thể bị ghi đè như thế này ...

.carousel-inner .carousel-item-right.active,
.carousel-inner .carousel-item-next {
  transform: translateX(33.33%);
}

.carousel-inner .carousel-item-left.active, 
.carousel-inner .carousel-item-prev {
  transform: translateX(-33.33%)
}

.carousel-inner .carousel-item-right,
.carousel-inner .carousel-item-left{ 
  transform: translateX(0);
}

Bootstrap 4 Alpha.6 Demo
Bootstrap 4.0.0 (hiển thị 4, nâng cấp 1 tại một thời điểm)
Bootstrap 4.1.0 (hiển thị 3, nâng cấp 1 cùng một lúc)
Bootstrap 4.1.0 (nâng cấp cả 4 cùng một lúc)
Bootstrap 4.3.1 đáp ứng (hiển thị nhiều, nâng cao 1) new
Băng chuyền Bootstrap 4.3.1 có thẻnew


Một tùy chọn khác là băng chuyền đáp ứng chỉ hiển thị và nâng cấp 1 trang trình bày trên màn hình nhỏ hơn , nhưng hiển thị nhiều trang trình bày là màn hình lớn hơn . Thay vì sao chép các trang trình bày như ví dụ trước, cái này điều chỉnh CSS và chỉ sử dụng jQuery để di chuyển các trang trình bày phụ để cho phép quay vòng liên tục (quấn quanh):

Vui lòng không chỉ sao chép và dán mã này. Trước tiên, hãy hiểu nó hoạt động như thế nào.

Bootstrap 4 Responsive (hiển thị 3, 1 slide trên thiết bị di động)

@media (min-width: 768px) {

    /* show 3 items */
    .carousel-inner .active,
    .carousel-inner .active + .carousel-item,
    .carousel-inner .active + .carousel-item + .carousel-item {
        display: block;
    }

    .carousel-inner .carousel-item.active:not(.carousel-item-right):not(.carousel-item-left),
    .carousel-inner .carousel-item.active:not(.carousel-item-right):not(.carousel-item-left) + .carousel-item,
    .carousel-inner .carousel-item.active:not(.carousel-item-right):not(.carousel-item-left) + .carousel-item + .carousel-item {
        transition: none;
    }

    .carousel-inner .carousel-item-next,
    .carousel-inner .carousel-item-prev {
      position: relative;
      transform: translate3d(0, 0, 0);
    }

    .carousel-inner .active.carousel-item + .carousel-item + .carousel-item + .carousel-item {
        position: absolute;
        top: 0;
        right: -33.3333%;
        z-index: -1;
        display: block;
        visibility: visible;
    }

    /* left or forward direction */
    .active.carousel-item-left + .carousel-item-next.carousel-item-left,
    .carousel-item-next.carousel-item-left + .carousel-item,
    .carousel-item-next.carousel-item-left + .carousel-item + .carousel-item,
    .carousel-item-next.carousel-item-left + .carousel-item + .carousel-item + .carousel-item {
        position: relative;
        transform: translate3d(-100%, 0, 0);
        visibility: visible;
    }

    /* farthest right hidden item must be abso position for animations */
    .carousel-inner .carousel-item-prev.carousel-item-right {
        position: absolute;
        top: 0;
        left: 0;
        z-index: -1;
        display: block;
        visibility: visible;
    }

    /* right or prev direction */
    .active.carousel-item-right + .carousel-item-prev.carousel-item-right,
    .carousel-item-prev.carousel-item-right + .carousel-item,
    .carousel-item-prev.carousel-item-right + .carousel-item + .carousel-item,
    .carousel-item-prev.carousel-item-right + .carousel-item + .carousel-item + .carousel-item {
        position: relative;
        transform: translate3d(100%, 0, 0);
        visibility: visible;
        display: block;
        visibility: visible;
    }

}

<div class="container-fluid">
    <div id="carouselExample" class="carousel slide" data-ride="carousel" data-interval="9000">
        <div class="carousel-inner row w-100 mx-auto" role="listbox">
            <div class="carousel-item col-md-4 active">
                <img class="img-fluid mx-auto d-block" src="//placehold.it/600x400/000/fff?text=1" alt="slide 1">
            </div>
            <div class="carousel-item col-md-4">
                <img class="img-fluid mx-auto d-block" src="//placehold.it/600x400?text=2" alt="slide 2">
            </div>
            <div class="carousel-item col-md-4">
                <img class="img-fluid mx-auto d-block" src="//placehold.it/600x400?text=3" alt="slide 3">
            </div>
            <div class="carousel-item col-md-4">
                <img class="img-fluid mx-auto d-block" src="//placehold.it/600x400?text=4" alt="slide 4">
            </div>
            <div class="carousel-item col-md-4">
                <img class="img-fluid mx-auto d-block" src="//placehold.it/600x400?text=5" alt="slide 5">
            </div>
            <div class="carousel-item col-md-4">
                <img class="img-fluid mx-auto d-block" src="//placehold.it/600x400?text=6" alt="slide 6">
            </div>
            <div class="carousel-item col-md-4">
                <img class="img-fluid mx-auto d-block" src="//placehold.it/600x400?text=7" alt="slide 7">
            </div>
            <div class="carousel-item col-md-4">
                <img class="img-fluid mx-auto d-block" src="//placehold.it/600x400?text=8" alt="slide 7">
            </div>
        </div>
        <a class="carousel-control-prev" href="#carouselExample" role="button" data-slide="prev">
            <i class="fa fa-chevron-left fa-lg text-muted"></i>
            <span class="sr-only">Previous</span>
        </a>
        <a class="carousel-control-next text-faded" href="#carouselExample" role="button" data-slide="next">
            <i class="fa fa-chevron-right fa-lg text-muted"></i>
            <span class="sr-only">Next</span>
        </a>
    </div>
</div>

Ví dụ - Bootstrap 4 Responsive (hiển thị 4, 1 slide trên thiết bị di động)
Ví dụ - Bootstrap 4 Responsive (hiển thị 5, 1 slide trên thiết bị di động)


Bootstrap 3

Đây là một ví dụ 3.x trên Bootply: http://bootply.com/89193

Bạn cần đặt toàn bộ một hàng hình ảnh trong mục đang hoạt động. Đây là một phiên bản khác không xếp chồng hình ảnh ở độ rộng màn hình nhỏ hơn: http://bootply.com/92514

CHỈNH SỬA Phương pháp thay thế để tiến từng trang một :

Sử dụng jQuery để sao chép các mục tiếp theo ..

$('.carousel .item').each(function(){
  var next = $(this).next();
  if (!next.length) {
    next = $(this).siblings(':first');
  }
  next.children(':first-child').clone().appendTo($(this));

  if (next.next().length>0) {
    next.next().children(':first-child').clone().appendTo($(this));
  }
  else {
    $(this).siblings(':first').children(':first-child').clone().appendTo($(this));
  }
});

Và sau đó CSS ​​để định vị cho phù hợp ...

Trước 3.3.1

.carousel-inner .active.left { left: -33%; }
.carousel-inner .next        { left:  33%; }

Sau 3.3.1

.carousel-inner .item.left.active {
  transform: translateX(-33%);
}
.carousel-inner .item.right.active {
  transform: translateX(33%);
}

.carousel-inner .item.next {
  transform: translateX(33%)
}
.carousel-inner .item.prev {
  transform: translateX(-33%)
}

.carousel-inner .item.right,
.carousel-inner .item.left { 
  transform: translateX(0);
}

Điều này sẽ hiển thị 3 lần cùng một lúc, nhưng chỉ trượt một lần:

Bản trình diễn Bootstrap 3.x


Vui lòng không sao chép và dán mã này. Trước tiên, hãy hiểu nó hoạt động như thế nào. Câu trả lời này ở đây để giúp bạn tìm hiểu .

Nhân đôi băng chuyền bootstrap 4 đã sửa đổi này chỉ hoạt động đúng một nửa (vòng lặp cuộn ngừng hoạt động)
làm thế nào để tạo 2 thanh trượt bootstrap trong một trang mà không trộn css và jquery của chúng?
Bootstrap 4 Multi Carousel hiển thị 4 hình ảnh thay vì 3


6
Cảm ơn. Điều đó trông tốt hơn rất nhiều ... nhưng cảm thấy hơi kỳ lạ. cuộn sang trái dường như không hoạt động, vì nó cuộn nhiều khối cùng một lúc và thứ tự có vẻ bị tắt. Cuộn sang phải hoạt động tốt (mặc dù theo hướng sai). Vấn đề tôi gặp phải với điều này là nó dường như tạo ra rất nhiều bản sao, điều này không tệ lắm ... nhưng không tốt lắm ... vì vậy đối với mọi mục tôi có (6 trong trường hợp của bạn), tập lệnh đó sẽ tạo N bản sao (trong đó N = khối hiển thị trên mỗi khung hình).
rodrigo-silveira

5
@Zentaurus, tôi biết là đã muộn, nhưng hãy xem ví dụ về bốn yếu tố . Tôi đã điều chỉnh logic Skelly cho một câu hỏi SOpt .
Anthony Accioly

3
Tìm thấy lý do tại sao nó không hoạt động trên> 3.3.0 đó là do sự bao gồm của translate3D, đánh dấu vào câu trả lời của Danijel và Michal Vrchota trên: stackoverflow.com/questions/18613271/...
Jorge Sampayo

2
@Zim bản demo đó giữ cho 1 slide hiển thị. Tôi hy vọng hiển thị 3 hoặc 4 (càng nhiều càng tốt với màn hình) rồi hiển thị 1 mục sau đó.
Junior

1
@Junior Chính xác, trong phiên bản mới nhất (4.3.1), điều duy nhất khiến nó hoạt động với tôi là điều chỉnh ký quỹ được giải thích trong một câu trả lời khác ở đây .
Armfoot

30

Tất cả các giải pháp trên là hacky và buggy. Đừng thử. Sử dụng lib khác. Điều tốt nhất tôi đã tìm thấy - http://sachinchoolur.github.io/lightslider Hoạt động tuyệt vời với bootstrap, không thêm html rác, có cấu hình cao, đáp ứng, thân thiện với thiết bị di động, v.v.

$('.multi-item-carousel').lightSlider({
    item: 4,
    pager: false,
    autoWidth: false,
    slideMargin: 0
});

Cảm ơn rất nhiều, rất hữu ích lib :)
GuiPab

Một số trong số các thư viện thanh trượt này thực sự hạn chế những gì mà bootstrap, thậm chí 4, cung cấp. Cám ơn vì đã chia sẻ.
KhoPhi

Thanh trượt nhân đôi các trang trình bày. Xem ví dụ về thanh trượt tạo mã trên trang web của họ.
Marinski

Đây là một dự án chết với quá nhiều vấn đề bỏ ngỏ. (kiểm tra github của họ)
Osama Rashid

20

Điều này là một twitter bootstrap 3 đang hoạt động.

Đây là javascript :

$('#myCarousel').carousel({
    interval: 10000
})

$('.carousel .item').each(function(){
    var next = $(this).next();

    if (!next.length) {
        next = $(this).siblings(':first');
    }

    next.children(':first-child').clone().appendTo($(this));

    if (next.next().length>0) {
        next.next().children(':first-child').clone().appendTo($(this));
    }
    else {
        $(this).siblings(':first').children(':first-child').clone().appendTo($(this));
    }
});

css :

.carousel-inner .active.left  { left: -33%;             }
.carousel-inner .active.right { left: 33%;              }
.carousel-inner .next         { left: 33%               }
.carousel-inner .prev         { left: -33%              }
.carousel-control.left        { background-image: none; }
.carousel-control.right       { background-image: none; }
.carousel-inner .item         { background: white;      }

Bạn có thể thấy nó hoạt động tại Jsfiddle này

Lý do tôi thêm câu trả lời này vì những cái khác không hoạt động hoàn toàn. Tôi đã tìm thấy 2 lỗi bên trong chúng, một trong số đó là mũi tên bên trái tạo ra hiệu ứng kỳ lạ và lỗi còn lại là về việc văn bản bị đậm trong một số tình huống phù thủy có thể được giải quyết bằng cách đặt màu nền để mục dưới cùng sẽ không hiển thị trong khi chuyển đổi hiệu ứng.


cảm ơn bạn đã chia sẻ ... Tuy nhiên, tôi thấy một số nhấp nháy trong firefox.
Elon Zito

@paulalexandru làm cách nào để tăng số lượng hình ảnh trong hàng hiển thị?
jack wolier

Trong trường hợp bạn có 4 mục trong css của mình, bạn nên thay đổi 33% bằng 25% và bạn cũng phải thực hiện một chút thay đổi trong javascript. Trong trường hợp bạn không thể giải quyết vấn đề đó, hãy đăng câu hỏi và tôi sẽ đăng câu trả lời đầy đủ ở đó.
paulalexandru

Đây là một giải pháp tuyệt vời! Cảm ơn!
raiderrobert

1
Cảm ơn bạn rất nhiều. Điều này đã giúp tôi rất nhiều. Tôi đang xây dựng một chủ đề bootstrap tùy chỉnh cho một trang web drupal 8 dựa trên chủ đề Barrio. Nó không có quá nhiều tùy chọn khi tùy chỉnh băng chuyền. JS và CSS bạn đã cung cấp hoạt động như một phép thuật. Tôi đã phải sửa đổi mã một chút để phù hợp với yêu cầu của mình nhưng tất cả đều hoạt động tuyệt vời. Cảm ơn bạn rất nhiều @paulalexandru
sylvery

6

Đây là những gì làm việc cho tôi. JQuery và CSS rất đơn giản để làm cho băng chuyền đáp ứng hoạt động độc lập với các băng chuyền trên cùng một trang. Có thể tùy chỉnh cao nhưng về cơ bản là một div với khoảng trắng bây giờ chứa một loạt các phần tử khối nội tuyến và đặt phần tử cuối cùng ở đầu để di chuyển trở lại hoặc phần tử đầu tiên ở cuối để tiến về phía trước. Xin cảm ơn insertAfter!

$('.carosel-control-right').click(function() {
  $(this).blur();
  $(this).parent().find('.carosel-item').first().insertAfter($(this).parent().find('.carosel-item').last());
});
$('.carosel-control-left').click(function() {
  $(this).blur();
  $(this).parent().find('.carosel-item').last().insertBefore($(this).parent().find('.carosel-item').first());
});
@media (max-width: 300px) {
  .carosel-item {
    width: 100%;
  }
}
@media (min-width: 300px) {
  .carosel-item {
    width: 50%;
  }
}
@media (min-width: 500px) {
  .carosel-item {
    width: 33.333%;
  }
}
@media (min-width: 768px) {
  .carosel-item {
    width: 25%;
  }
}
.carosel {
  position: relative;
  background-color: #000;
}
.carosel-inner {
  white-space: nowrap;
  overflow: hidden;
  font-size: 0;
}
.carosel-item {
  display: inline-block;
}
.carosel-control {
  position: absolute;
  top: 50%;
  padding: 15px;
  box-shadow: 0 0 10px 0px rgba(0, 0, 0, 0.5);
  transform: translateY(-50%);
  border-radius: 50%;
  color: rgba(0, 0, 0, 0.5);
  font-size: 30px;
  display: inline-block;
}
.carosel-control-left {
  left: 15px;
}
.carosel-control-right {
  right: 15px;
}
.carosel-control:active,
.carosel-control:hover {
  text-decoration: none;
  color: rgba(0, 0, 0, 0.8);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="carosel" id="carosel1">
  <a class="carosel-control carosel-control-left glyphicon glyphicon-chevron-left" href="#"></a>
  <div class="carosel-inner">
    <img class="carosel-item" src="http://placehold.it/500/bbbbbb/fff&amp;text=1" />
    <img class="carosel-item" src="http://placehold.it/500/CCCCCC&amp;text=2" />
    <img class="carosel-item" src="http://placehold.it/500/eeeeee&amp;text=3" />
    <img class="carosel-item" src="http://placehold.it/500/f4f4f4&amp;text=4" />
    <img class="carosel-item" src="http://placehold.it/500/fcfcfc/333&amp;text=5" />
    <img class="carosel-item" src="http://placehold.it/500/f477f4/fff&amp;text=6" />
  </div>
  <a class="carosel-control carosel-control-right glyphicon glyphicon-chevron-right" href="#"></a>
</div>
<div class="carosel" id="carosel2">
  <a class="carosel-control carosel-control-left glyphicon glyphicon-chevron-left" href="#"></a>
  <div class="carosel-inner">
    <img class="carosel-item" src="http://placehold.it/500/bbbbbb/fff&amp;text=1" />
    <img class="carosel-item" src="http://placehold.it/500/CCCCCC&amp;text=2" />
    <img class="carosel-item" src="http://placehold.it/500/eeeeee&amp;text=3" />
    <img class="carosel-item" src="http://placehold.it/500/f4f4f4&amp;text=4" />
    <img class="carosel-item" src="http://placehold.it/500/fcfcfc/333&amp;text=5" />
    <img class="carosel-item" src="http://placehold.it/500/f477f4/fff&amp;text=6" />
  </div>
  <a class="carosel-control carosel-control-right glyphicon glyphicon-chevron-right" href="#"></a>
</div>


Cảm ơn, người khổng lồ nhỏ bé, bạn có thể vui lòng giúp tôi 'chỉ số băng chuyền' trong câu trả lời của bạn. và bật / tắt tính năng tự động trượt.
MahiMan

6

Cập nhật 2019-03-06 - Bootstrap v4.3.1

Có vẻ như phiên bản Bootstrap mới thêm a margin-right: -100%vào từng mục, do đó, trong giải pháp đáp ứng được đưa ra trong câu trả lời được ủng hộ nhiều nhất ở đây , thuộc tính này nên được đặt lại, ví dụ:

.carousel-inner .carousel-item {
    margin-right: inherit;
}

Một codepen hoạt động với v4.3.1 trong LESS .


Chúa phù hộ cho bạn ahaha
Alberto Bellini

1
Đối với bất kỳ ai đang gặp khó khăn với câu trả lời được chọn tốt nhất ở trên, câu trả lời này, cụ thể là liên kết codepen đang hoạt động tuyệt vời bằng cách sử dụng bootstrap v4.4.0. Với một chút tinh chỉnh, bạn có thể dễ dàng làm cho nó hoạt động với 4 slide hiển thị hoặc bất cứ thứ gì bạn cần. Cảm ơn vì đăng.
crdunst

3

Câu trả lời phổ biến nhất là đúng nhưng tôi nghĩ mã này phức tạp một cách vô ích. Với cùng một css, mã jquery này dễ hiểu hơn, tôi tin rằng:

$('#myCarousel').carousel({
  interval: 10000
})

$('.carousel .item').each(function() {
  var item = $(this);
  item.siblings().each(function(index) {
    if (index < 4) {
      $(this).children(':first-child').clone().appendTo(item);
    }
  });
});

Này làm việc cho tôi, mặc dù tôi đang gặp rằng các mục khác nhau được sắp xếp theo chiều dọc, chứ không phải theo chiều ngang, trong khi các hình ảnh động vẫn chạy theo chiều ngang
Don Giulio

2

hãy thử cái này ..... nó hoạt động trong của tôi ....

<div class="container">
    <br>
    <div id="myCarousel" class="carousel slide" data-ride="carousel">
        <!-- Indicators -->
        <ol class="carousel-indicators">
            <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
            <li data-target="#myCarousel" data-slide-to="1"></li>
            <li data-target="#myCarousel" data-slide-to="2"></li>
            <li data-target="#myCarousel" data-slide-to="3"></li>
        </ol>

        <!-- Wrapper for slides -->
        <div class="carousel-inner" role="listbox">
            <div class="item active">
                <div class="span4" style="padding-left: 18px;">
                    <img src="http://placehold.it/290x180" class="img-thumbnail">
                    <img src="http://placehold.it/290x180" class="img-thumbnail">
                    <img src="http://placehold.it/290x180" class="img-thumbnail">
                </div>
            </div>
            <div class="item">
                 <div class="span4" style="padding-left: 18px;">
                    <img src="http://placehold.it/290x180" class="img-thumbnail">
                    <img src="http://placehold.it/290x180" class="img-thumbnail">
                    <img src="http://placehold.it/290x180" class="img-thumbnail">
                </div>
            </div>
        </div>
        <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
            <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
            <span class="sr-only">Next</span>
        </a>
    </div>
</div>

2

    $('#carousel-example-generic').on('slid.bs.carousel', function () {
        $(".item.active:nth-child(" + ($(".carousel-inner .item").length -1) + ") + .item").insertBefore($(".item:first-child"));
        $(".item.active:last-child").insertBefore($(".item:first-child"));
    });    
        .item.active,
        .item.active + .item,
        .item.active + .item  + .item {
           width: 33.3%;
           display: block;
           float:left;
        }          
   <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">

<div id="carousel-example-generic" class="carousel slide" data-ride="carousel" style="max-width:800px;">
  <!-- Indicators -->
  <ol class="carousel-indicators">
    <li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
    <li data-target="#carousel-example-generic" data-slide-to="1"></li>
    <li data-target="#carousel-example-generic" data-slide-to="2"></li>
  </ol>

  <!-- Wrapper for slides -->
  <div class="carousel-inner" role="listbox">
    <div class="item active">
        <img data-src="holder.js/300x200?text=1">
    </div>
    <div class="item">
        <img data-src="holder.js/300x200?text=2">
    </div>
    <div class="item">
        <img data-src="holder.js/300x200?text=3">
    </div>
    <div class="item">
        <img data-src="holder.js/300x200?text=4">
    </div>
    <div class="item">
        <img data-src="holder.js/300x200?text=5">
    </div>
    <div class="item">
        <img data-src="holder.js/300x200?text=6">
    </div>
    <div class="item">
        <img data-src="holder.js/300x200?text=7">
    </div>    
  </div>

  <!-- Controls -->
  <a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
    <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>
  <a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
    <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/holder/2.9.1/holder.min.js"></script>
    


0

Tôi đã gặp vấn đề tương tự và các giải pháp được mô tả ở đây hoạt động tốt. Nhưng tôi muốn hỗ trợ thay đổi kích thước cửa sổ (và bố cục). Kết quả là một thư viện nhỏ giải quyết tất cả các phép tính. Kiểm tra nó tại đây: https://github.com/SocialbitGmbH/BootstrapCarouselPageMerger

Để làm cho tập lệnh hoạt động, bạn phải thêm một <div>trình bao bọc mới với lớp .item-content trực tiếp vào của bạn .item <div>. Thí dụ:

<div class="carousel slide multiple" id="very-cool-carousel" data-ride="carousel">
    <div class="carousel-inner" role="listbox">
        <div class="item active">
            <div class="item-content">
                First page
            </div>
        </div>
        <div class="item active">
            <div class="item-content">
                Second page
            </div>
        </div>
    </div>
</div>

Cách sử dụng thư viện này:

socialbitBootstrapCarouselPageMerger.run('div.carousel');

Để thay đổi cài đặt:

socialbitBootstrapCarouselPageMerger.settings.spaceCalculationFactor = 0.82;

Thí dụ:

Như bạn có thể thấy, băng chuyền được cập nhật để hiển thị nhiều điều khiển hơn khi bạn thay đổi kích thước cửa sổ. Kiểm tra watchWindowSizeTimeoutcài đặt để kiểm soát thời gian chờ phản ứng với các thay đổi về kích thước cửa sổ.


0
Try this code


 <div id="recommended-item-carousel" class="carousel slide" data-ride="carousel">
    <div class="carousel-inner">
        <div class="item active">

            <div class="col-sm-3">
                <div class="product-image-wrapper">
                    <div class="single-products">
                        <div class="productinfo text-center">
                            <img src="img/home/recommend1.jpg" alt="" />
                            <h2>$56</h2>
                            <p>
                                Easy Polo Black Edition
                            </p>
                            <a href="#" class="btn btn-default add-to-cart"><i class="fa fa-shopping-cart"></i>Add to cart</a>
                        </div>

                    </div>
                </div>
            </div>
            <div class="col-sm-3">
                <div class="product-image-wrapper">
                    <div class="single-products">
                        <div class="productinfo text-center">
                            <img src="img/home/recommend2.jpg" alt="" />
                            <h2>$56</h2>
                            <p>
                                Easy Polo Black Edition
                            </p>
                            <a href="#" class="btn btn-default add-to-cart"><i class="fa fa-shopping-cart"></i>Add to cart</a>
                        </div>

                    </div>
                </div>
            </div>
            <div class="col-sm-3">
                <div class="product-image-wrapper">
                    <div class="single-products">
                        <div class="productinfo text-center">
                            <img src="img/home/recommend3.jpg" alt="" />
                            <h2>$56</h2>
                            <p>
                                Easy Polo Black Edition
                            </p>
                            <a href="#" class="btn btn-default add-to-cart"><i class="fa fa-shopping-cart"></i>Add to cart</a>
                        </div>

                    </div>
                </div>
            </div>
        </div>
        <div class="item">
            <div class="col-sm-3">
                <div class="product-image-wrapper">
                    <div class="single-products">
                        <div class="productinfo text-center">
                            <img src="img/home/recommend1.jpg" alt="" />
                            <h2>$56</h2>
                            <p>
                                Easy Polo Black Edition
                            </p>
                            <a href="#" class="btn btn-default add-to-cart"><i class="fa fa-shopping-cart"></i>Add to cart</a>
                        </div>

                    </div>
                </div>
            </div>
            <div class="col-sm-3">
                <div class="product-image-wrapper">
                    <div class="single-products">
                        <div class="productinfo text-center">
                            <img src="img/home/recommend2.jpg" alt="" />
                            <h2>$56</h2>
                            <p>
                                Easy Polo Black Edition
                            </p>
                            <a href="#" class="btn btn-default add-to-cart"><i class="fa fa-shopping-cart"></i>Add to cart</a>
                        </div>

                    </div>
                </div>
            </div>
            <div class="col-sm-3">
                <div class="product-image-wrapper">
                    <div class="single-products">
                        <div class="productinfo text-center">
                            <img src="img/home/recommend3.jpg" alt="" />
                            <h2>$56</h2>
                            <p>
                                Easy Polo Black Edition
                            </p>
                            <a href="#" class="btn btn-default add-to-cart"><i class="fa fa-shopping-cart"></i>Add to cart</a>
                        </div>

                    </div>
                </div>
            </div>
        </div>
    </div>
    <a class="left recommended-item-control" href="#recommended-item-carousel" data-slide="prev"> <i class="fa fa-angle-left"></i> </a>
    <a class="right recommended-item-control" href="#recommended-item-carousel" data-slide="next"> <i class="fa fa-angle-right"></i> </a>
</div>


-1

Bạn có thể thêm nhiều li trong thẻ ol có thuộc tính là lớp với giá trị "carousel-Indicator" và với data-slide-to có các giá trị tuần tự như 0 đến 6 hoặc 0 đến 9.

hơn là bạn chỉ cần sao chép và dán div có thuộc tính là lớp với giá trị "item".

Điều này làm việc cho tôi.

<div data-ride="carousel" class="carousel slide" id="myCarousel">
    <!-- Indicators -->
    <ol class="carousel-indicators">
        <li class="" data-slide-to="0" data-target="#myCarousel"></li>
        <li data-slide-to="1" data-target="#myCarousel" class=""></li>
        <li data-slide-to="2" data-target="#myCarousel" class="active"></li>
        <li data-slide-to="3" data-target="#myCarousel" class=""></li>
        <li data-slide-to="4" data-target="#myCarousel" class=""></li>
        <li data-slide-to="5" data-target="#myCarousel" class=""></li>
        <li data-slide-to="6" data-target="#myCarousel" class=""></li>
    </ol>
    <div role="listbox" class="carousel-inner">
        <div class="item active">
            <img alt="First slide" src="images/carousel/11.jpg"
                class="first-slide">
        </div>
        <div class="item">
            <img alt="Second slide" src="images/carousel/22.jpg"
                class="second-slide">
        </div>
        <div class="item">
            <img alt="Third slide" src="images/carousel/33.jpg"
                class="third-slide">
        </div>
        <div class="item">
            <img alt="Third slide" src="images/carousel/44.jpeg"
                class="fourth-slide">
        </div>
        <div class="item">
            <img alt="Third slide" src="images/carousel/55.jpg"
                class="third-slide">
        </div>
        <div class="item">
            <img alt="Third slide" src="images/carousel/66.jpg"
                class="third-slide">
        </div>
        <div class="item">
            <img alt="Third slide" src="images/carousel/77.jpg"
                class="third-slide">
        </div>
    </div>
    <a data-slide="prev" role="button" href="#myCarousel"
        class="left carousel-control"> <span aria-hidden="true"
        class="glyphicon glyphicon-chevron-left"></span> <span
        class="sr-only">Previous</span>
    </a> <a data-slide="next" role="button" href="#myCarousel"
        class="right carousel-control"> <span aria-hidden="true"
        class="glyphicon glyphicon-chevron-right"></span> <span
        class="sr-only">Next</span>
    </a>
</div>

1
bạn có thể cho chúng tôi xem một chiến lợi phẩm ?? nó không hoạt động và tôi không hiểu những gì bạn muốn làm ở đây ??
azerafati

-1

Tham chiếu đến liên kết trên, tôi đã thêm 1 thứ mới được gọi là show 4 tại một thời điểm, trượt từng thứ một cho bootstrap 3 (v3.3.7)

GIẢI MÃ : - https://www.codeply.com/go/eWUbGlspqU

TRỰC TIẾP SNIPPET

(function(){
  $('#carousel123').carousel({ interval: 2000 });
}());

(function(){
  $('.carousel-showmanymoveone .item').each(function(){
    var itemToClone = $(this);

    for (var i=1;i<4;i++) {
      itemToClone = itemToClone.next();

      // wrap around if at end of item collection
      if (!itemToClone.length) {
        itemToClone = $(this).siblings(':first');
      }

      // grab item, clone, add marker class, add to collection
      itemToClone.children(':first-child').clone()
        .addClass("cloneditem-"+(i))
        .appendTo($(this));
    }
  });
}());
body {
    margin-top: 50px;
}

.carousel-showmanymoveone .carousel-control {
  width: 4%;
  background-image: none;
}
.carousel-showmanymoveone .carousel-control.left {
  margin-left: 15px;
}
.carousel-showmanymoveone .carousel-control.right {
  margin-right: 15px;
}
.carousel-showmanymoveone .cloneditem-1,
.carousel-showmanymoveone .cloneditem-2,
.carousel-showmanymoveone .cloneditem-3 {
  display: none;
}
@media all and (min-width: 768px) {
  .carousel-showmanymoveone .carousel-inner > .active.left,
  .carousel-showmanymoveone .carousel-inner > .prev {
    left: -50%;
  }
  .carousel-showmanymoveone .carousel-inner > .active.right,
  .carousel-showmanymoveone .carousel-inner > .next {
    left: 50%;
  }
  .carousel-showmanymoveone .carousel-inner > .left,
  .carousel-showmanymoveone .carousel-inner > .prev.right,
  .carousel-showmanymoveone .carousel-inner > .active {
    left: 0;
  }
  .carousel-showmanymoveone .carousel-inner .cloneditem-1 {
    display: block;
  }
}
@media all and (min-width: 768px) and (transform-3d), all and (min-width: 768px) and (-webkit-transform-3d) {
  .carousel-showmanymoveone .carousel-inner > .item.active.right,
  .carousel-showmanymoveone .carousel-inner > .item.next {
    -webkit-transform: translate3d(50%, 0, 0);
            transform: translate3d(50%, 0, 0);
    left: 0;
  }
  .carousel-showmanymoveone .carousel-inner > .item.active.left,
  .carousel-showmanymoveone .carousel-inner > .item.prev {
    -webkit-transform: translate3d(-50%, 0, 0);
            transform: translate3d(-50%, 0, 0);
    left: 0;
  }
  .carousel-showmanymoveone .carousel-inner > .item.left,
  .carousel-showmanymoveone .carousel-inner > .item.prev.right,
  .carousel-showmanymoveone .carousel-inner > .item.active {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
    left: 0;
  }
}
@media all and (min-width: 992px) {
  .carousel-showmanymoveone .carousel-inner > .active.left,
  .carousel-showmanymoveone .carousel-inner > .prev {
    left: -25%;
  }
  .carousel-showmanymoveone .carousel-inner > .active.right,
  .carousel-showmanymoveone .carousel-inner > .next {
    left: 25%;
  }
  .carousel-showmanymoveone .carousel-inner > .left,
  .carousel-showmanymoveone .carousel-inner > .prev.right,
  .carousel-showmanymoveone .carousel-inner > .active {
    left: 0;
  }
  .carousel-showmanymoveone .carousel-inner .cloneditem-2,
  .carousel-showmanymoveone .carousel-inner .cloneditem-3 {
    display: block;
  }
}
@media all and (min-width: 992px) and (transform-3d), all and (min-width: 992px) and (-webkit-transform-3d) {
  .carousel-showmanymoveone .carousel-inner > .item.active.right,
  .carousel-showmanymoveone .carousel-inner > .item.next {
    -webkit-transform: translate3d(25%, 0, 0);
            transform: translate3d(25%, 0, 0);
    left: 0;
  }
  .carousel-showmanymoveone .carousel-inner > .item.active.left,
  .carousel-showmanymoveone .carousel-inner > .item.prev {
    -webkit-transform: translate3d(-25%, 0, 0);
            transform: translate3d(-25%, 0, 0);
    left: 0;
  }
  .carousel-showmanymoveone .carousel-inner > .item.left,
  .carousel-showmanymoveone .carousel-inner > .item.prev.right,
  .carousel-showmanymoveone .carousel-inner > .item.active {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
    left: 0;
  }
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<div class="carousel carousel-showmanymoveone slide" id="carousel123">
	<div class="carousel-inner">
		<div class="item active">
			<div class="col-xs-12 col-sm-6 col-md-3"><a href="#"><img src="http://placehold.it/500/0054A6/fff/&amp;text=1" class="img-responsive"></a></div>
		</div>
		<div class="item">
			<div class="col-xs-12 col-sm-6 col-md-3"><a href="#"><img src="http://placehold.it/500/002d5a/fff/&amp;text=2" class="img-responsive"></a></div>
		</div>
		<div class="item">
			<div class="col-xs-12 col-sm-6 col-md-3"><a href="#"><img src="http://placehold.it/500/d6d6d6/333&amp;text=3" class="img-responsive"></a></div>
		</div>          
		<div class="item">
			<div class="col-xs-12 col-sm-6 col-md-3"><a href="#"><img src="http://placehold.it/500/002040/eeeeee&amp;text=4" class="img-responsive"></a></div>
		</div>
		<div class="item">
			<div class="col-xs-12 col-sm-6 col-md-3"><a href="#"><img src="http://placehold.it/500/0054A6/fff/&amp;text=5" class="img-responsive"></a></div>
		</div>
		<div class="item">
			<div class="col-xs-12 col-sm-6 col-md-3"><a href="#"><img src="http://placehold.it/500/002d5a/fff/&amp;text=6" class="img-responsive"></a></div>
		</div>
		<div class="item">
			<div class="col-xs-12 col-sm-6 col-md-3"><a href="#"><img src="http://placehold.it/500/eeeeee&amp;text=7" class="img-responsive"></a></div>
		</div>
		<div class="item">
			<div class="col-xs-12 col-sm-6 col-md-3"><a href="#"><img src="http://placehold.it/500/40a1ff/002040&amp;text=8" class="img-responsive"></a></div>
		</div>
	</div>
	<a class="left carousel-control" href="#carousel123" data-slide="prev"><i class="glyphicon glyphicon-chevron-left"></i></a>
	<a class="right carousel-control" href="#carousel123" data-slide="next"><i class="glyphicon glyphicon-chevron-right"></i></a>
</div>

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.