Bootstrap carousel หลายเฟรมพร้อมกัน


110

นี่คือเอฟเฟกต์ที่ฉันพยายามทำด้วยม้าหมุน Bootstrap 3

ใส่คำอธิบายภาพที่นี่

แทนที่จะแสดงทีละเฟรม แต่จะแสดง N เฟรมแบบสไลด์ข้างกัน จากนั้นเมื่อคุณเลื่อน (หรือเมื่อสไลด์อัตโนมัติ) ระบบจะเลื่อนกลุ่มของสไลด์เช่นเดียวกับที่ทำ

สามารถทำได้ด้วยม้าหมุนของ bootstrap 3 หรือไม่? ฉันหวังว่าฉันจะไม่ต้องไปตามล่าหาปลั๊กอิน jQuery อื่น ...


ขออภัยที่ปรับ Bootstrap 4 แล้ว แต่เปลี่ยนได้ง่ายstackoverflow.com/a/42098033/4796923
Oleg V Karun

มีวิธีแก้ไขใหม่สำหรับปัญหานี้โดยใช้ Slick Carousel ของ Ken Wheeler ซึ่งง่ายต่อการใช้งานและหรูหรากว่าสิ่งเหล่านี้ โปรดดูคำตอบของ @joshmoto พร้อมรหัสเต็มที่นี่> stackoverflow.com/a/54263516/345605
ganar

คำตอบ:


20

สามารถทำได้ด้วยม้าหมุนของ bootstrap 3 หรือไม่? ฉันหวังว่าฉันจะไม่ต้องไปตามล่าหาปลั๊กอิน jQuery อื่น

ในวันที่ 2013-12-08 คำตอบคือไม่ เอฟเฟกต์ที่คุณกำลังมองหาไม่สามารถทำได้โดยใช้ปลั๊กอินแบบหมุนทั่วไปของ Bootstrap 3 อย่างไรก็ตามนี่คือปลั๊กอิน jQuery ง่ายๆที่ดูเหมือนจะทำในสิ่งที่คุณต้องการhttp://sorgalla.com/jcarousel/


148

อัปเดต 2019 ...

Bootstrap 4

ภาพหมุนมีการเปลี่ยนแปลงใน 4.x และการเปลี่ยนภาพเคลื่อนไหวแบบหลายสไลด์สามารถแทนที่ได้เช่นนี้ ...

.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 (แสดง 4 เลื่อนไปทีละ 1 ครั้ง)
Bootstrap 4.1.0 (แสดง 3 ล่วงหน้าครั้งละ 1 ครั้ง)
Bootstrap 4.1.0 (เลื่อน 4 ครั้งพร้อมกัน)
Bootstrap 4.3.1 ตอบสนอง (แสดงหลายรายการล่วงหน้า 1) new
Bootstrap 4.3.1 ม้าหมุนพร้อมการ์ดnew


อีกทางเลือกหนึ่งคือภาพหมุนแบบตอบสนองที่แสดงและเลื่อนไปข้างหน้าเพียง1 สไลด์บนหน้าจอขนาดเล็กแต่การแสดงหลายสไลด์เป็นหน้าจอขนาดใหญ่ภาพนิ่งหลายหน้าจอขนาดใหญ่แทนที่จะโคลนสไลด์เหมือนตัวอย่างก่อนหน้าอันนี้จะปรับ CSS และใช้ jQuery เท่านั้นเพื่อย้ายสไลด์พิเศษเพื่อให้สามารถขี่จักรยานได้อย่างต่อเนื่อง (ล้อมรอบ):

โปรดอย่าคัดลอกและวางรหัสนี้ ก่อนอื่นให้ทำความเข้าใจว่ามันทำงานอย่างไร

Bootstrap 4 ตอบสนอง (แสดง 3, 1 สไลด์บนมือถือ)

@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>

ตัวอย่าง - Bootstrap 4 Responsive (แสดง 4, 1 สไลด์บนมือถือ)
ตัวอย่าง - Bootstrap 4 Responsive (แสดง 5, 1 สไลด์บนมือถือ)


Bootstrap 3

นี่คือตัวอย่าง 3.x ใน Bootply: http://bootply.com/89193

คุณต้องใส่รูปภาพทั้งแถวในรายการที่ใช้งานอยู่ นี่คืออีกเวอร์ชันหนึ่งที่ไม่ซ้อนภาพที่ความกว้างของหน้าจอที่เล็กกว่า: http://bootply.com/92514

แก้ไขวิธีการทางเลือกเพื่อเลื่อนทีละสไลด์ :

ใช้ jQuery เพื่อโคลนรายการถัดไป ..

$('.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 เพื่อจัดตำแหน่งตาม ...

ก่อน 3.3.1

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

หลังจาก 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);
}

การดำเนินการนี้จะแสดง 3 ครั้ง แต่จะเลื่อนทีละครั้งเท่านั้น:

Bootstrap 3.x สาธิต


โปรดอย่าคัดลอกและวางรหัสนี้ ก่อนอื่นให้ทำความเข้าใจว่ามันทำงานอย่างไร คำตอบนี้อยู่ที่นี่เพื่อช่วยให้คุณเรียนรู้

การเพิ่มแถบเลื่อน bootstrap 4 ที่แก้ไขแล้วนี้ทำหน้าที่เพียงครึ่งเดียวอย่างถูกต้อง (ลูปเลื่อนหยุดทำงาน)
วิธีสร้างแถบเลื่อน bootstrap 2 ตัวในหน้าเดียวโดยไม่ต้องผสม css และ jquery
Bootstrap 4 Multi Carousel แสดงภาพ 4 ภาพแทนที่จะเป็น 3


6
ขอบคุณ. มันดูดีขึ้นมาก ... แต่รู้สึกแปลก ๆ การเลื่อนไปทางซ้ายดูเหมือนจะไม่ได้ผลเนื่องจากจะเลื่อนหลายช่วงตึกพร้อมกันและดูเหมือนว่าคำสั่งจะปิด การเลื่อนไปทางขวาใช้งานได้ดี (แม้ว่าจะผิดทิศทาง) ปัญหาที่ฉันพบคือดูเหมือนว่าจะสร้างรายการที่ซ้ำกันจำนวนมากซึ่งไม่ได้แย่ขนาดนั้น ... แต่ก็ไม่ดีนัก ... ดังนั้นสำหรับทุกรายการที่ฉันมี (6 ในกรณีของคุณ) สคริปต์นั้นจะสร้าง N รายการที่ซ้ำกัน (โดยที่ N = บล็อกที่แสดงต่อเฟรม)
rodrigo-silveira

5
@Zentaurus ผมรู้ว่ามันเป็นปลาย แต่ตรวจสอบตัวอย่างที่สี่องค์ประกอบ ฉันได้ปรับตรรกะของ Skelly สำหรับคำถาม SOptแล้ว
Anthony Accioly

3
พบว่าเหตุใดจึงไม่ทำงานบน> 3.3.0 เนื่องจากการรวม translate3D ตรวจสอบคำตอบของ Danijel และ Michal Vrchota ได้ที่: stackoverflow.com/questions/18613271/…
Jorge Sampayo

2
@ Zim ที่สาธิตให้เห็น 1 สไลด์ ฉันหวังว่าจะแสดง 3 หรือ 4 (มากที่สุดเท่าที่หน้าจอจะพอดี) จากนั้นแสดง 1 รายการหลังจากนั้น
Junior

1
@Junior ว่าในรุ่นล่าสุด (4.3.1) สิ่งเดียวที่ได้มันทำงานสำหรับฉันคือการปรับอัตรากำไรขั้นต้นที่อธิบายไว้ในคำตอบอื่นที่นี่
Armfoot

30

วิธีแก้ปัญหาทั้งหมดข้างต้นนั้นแฮ็คและบั๊ก อย่าแม้แต่พยายาม ใช้ libs อื่น ๆ สิ่งที่ดีที่สุดที่ฉันพบ - http://sachinchoolur.github.io/lightslider ทำงานได้ดีกับ bootstrap ไม่เพิ่ม html ขยะกำหนดค่าได้สูงตอบสนองเหมาะกับมือถือ ฯลฯ ...

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

ขอบคุณมาก lib ที่มีประโยชน์มาก :)
GuiPab

ไลบรารีตัวเลื่อนเหล่านี้บางส่วนทำให้สิ่งที่ bootstrap เสนอแม้กระทั่ง 4 ข้อ ขอบคุณสำหรับการแบ่งปัน.
KhoPhi

ตัวเลื่อนทำซ้ำสไลด์ ดูตัวอย่างโค้ด soruce ในเว็บไซต์ของพวกเขา
Marinski

นี่เป็นโครงการที่ตายแล้วโดยมีปัญหาที่เปิดอยู่มากเกินไป (ตรวจสอบ github)
Osama Rashid

20

นี่คือ bootstrap twitter ที่ใช้งานได้ 3

นี่คือจาวาสคริปต์ :

$('#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;      }

คุณสามารถดูการดำเนินการได้ที่Jsfiddleนี้

เหตุผลที่ฉันเพิ่มคำตอบนี้เพราะคำตอบอื่นไม่ได้ผลทั้งหมด ฉันพบจุดบกพร่อง 2 จุดภายในนั้นหนึ่งในนั้นคือลูกศรซ้ายสร้างเอฟเฟกต์แปลก ๆ และอีกอันเกี่ยวกับข้อความที่เป็นตัวหนาในบางสถานการณ์แม่มดสามารถแก้ไขได้โดยการตั้งค่าสีพื้นหลังเพื่อไม่ให้รายการด้านล่างมองเห็นได้ในขณะที่เปลี่ยน ผลกระทบ


ขอบคุณสำหรับการแบ่งปัน ... ฉันเห็นไฟกะพริบใน firefox
Elon Zito

@paulalexandru ฉันจะเพิ่มจำนวนภาพในแถวที่มองเห็นได้อย่างไร
jack wolier

ในกรณีที่คุณมี 4 รายการใน css ของคุณคุณควรเปลี่ยน 33% กับ 25% และคุณต้องทำการเปลี่ยนแปลงเล็กน้อยในจาวาสคริปต์ด้วย ในกรณีที่คุณไม่สามารถแก้ไขได้ให้โพสต์คำถามแล้วฉันจะโพสต์คำตอบที่สมบูรณ์ที่นั่น
paulalexandru

นี่เป็นทางออกที่ยอดเยี่ยม! ขอบคุณ!
raiderrobert

1
ขอบคุณมาก. สิ่งนี้ช่วยฉันได้มาก ฉันกำลังสร้างธีม bootstrap ที่กำหนดเองสำหรับไซต์ drupal 8 โดยใช้ธีม Barrio ไม่มีตัวเลือกมากเกินไปในการปรับแต่งม้าหมุน JS และ CSS ที่คุณให้มานั้นใช้งานได้ราวกับเวทมนตร์ ฉันต้องแก้ไขโค้ดเล็กน้อยเพื่อให้เหมาะกับความต้องการของฉัน แต่โดยรวมแล้วมันใช้งานได้อย่างยอดเยี่ยม ขอบคุณมาก @paulalexandru
sylvery

6

นี่คือสิ่งที่ได้ผลสำหรับฉัน jQuery และ CSS ที่เรียบง่ายมากเพื่อให้ม้าหมุนตอบสนองทำงานได้โดยไม่ขึ้นกับภาพหมุนในหน้าเดียวกัน ปรับแต่งได้สูง แต่โดยพื้นฐานแล้วจะเป็น div ที่มีช่องว่างสีขาวในขณะนี้ที่มีองค์ประกอบอินไลน์บล็อกจำนวนมากและวางองค์ประกอบสุดท้ายไว้ที่จุดเริ่มต้นเพื่อเลื่อนกลับหรืออันแรกไปยังจุดสิ้นสุดเพื่อก้าวไปข้างหน้า ขอบคุณ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>


ขอบคุณยักษ์ตัวเล็กคุณช่วยฉันได้โปรดช่วยฉัน 'ตัวบ่งชี้แบบหมุน' ในคำตอบของคุณ และคุณสมบัติสไลด์อัตโนมัติเปิด / ปิด
MahiMan

6

อัปเดต 2019-03-06 - Bootstrap v4.3.1

ดูเหมือนว่า Bootstrap เวอร์ชันใหม่จะเพิ่ม a margin-right: -100%ให้กับแต่ละรายการดังนั้นในโซลูชันที่ตอบสนองที่ให้ไว้ในคำตอบที่ได้รับการโหวตมากที่สุดในที่นี้ควรรีเซ็ตคุณสมบัตินี้เช่น:

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

ทำงานcodepen กับ v4.3.1 ในเวลาน้อย


ขอพระเจ้าอวยพรคุณ ahaha
Alberto Bellini

1
สำหรับใครก็ตามที่กำลังดิ้นรนกับคำตอบที่เลือกไว้ข้างต้นคำตอบนี้โดยเฉพาะลิงก์ codepen นั้นใช้งานได้ดีเมื่อใช้ bootstrap v4.4.0 ด้วยการปรับแต่งเล็กน้อยคุณสามารถทำให้มันทำงานได้อย่างง่ายดายด้วย 4 สไลด์ที่มองเห็นได้หรืออะไรก็ได้ที่คุณต้องการ ขอบคุณสำหรับการโพสต์
crdunst

3

คำตอบที่ได้รับความนิยมมากที่สุดคือถูกต้อง แต่ฉันคิดว่ารหัสนั้นซับซ้อนอย่างไร้ประโยชน์ ด้วย css เดียวกันรหัส jquery นี้ง่ายต่อการเข้าใจฉันเชื่อว่า:

$('#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);
    }
  });
});

สิ่งนี้ใช้ได้กับฉันแม้ว่าฉันจะพบว่ารายการต่างๆถูกจัดเรียงในแนวตั้งแทนที่จะเป็นแนวนอนในขณะที่ภาพเคลื่อนไหวยังคงทำงานในแนวนอน
Don Giulio

2

ลองดูสิ ..... ได้ผลในของฉัน .... code:

<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

ฉันมีปัญหาเดียวกันและวิธีแก้ไขที่อธิบายไว้ที่นี่ก็ใช้ได้ดี แต่ฉันต้องการรองรับการเปลี่ยนแปลงขนาดหน้าต่าง (และเค้าโครง) ผลลัพธ์คือไลบรารีขนาดเล็กที่แก้ปัญหาการคำนวณทั้งหมด ตรวจสอบได้ที่นี่: https://github.com/SocialbitGmbH/BootstrapCarouselPageMerger

เพื่อให้สคริปต์ทำงานได้คุณต้องเพิ่ม<div>Wrapper ใหม่กับคลาส.item-content ลงใน.item <div>ไฟล์. ตัวอย่าง:

<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>

การใช้ห้องสมุดนี้:

socialbitBootstrapCarouselPageMerger.run('div.carousel');

ในการเปลี่ยนการตั้งค่า:

socialbitBootstrapCarouselPageMerger.settings.spaceCalculationFactor = 0.82;

ตัวอย่าง:

อย่างที่คุณเห็นภาพหมุนได้รับการอัปเดตเพื่อแสดงการควบคุมเพิ่มเติมเมื่อคุณปรับขนาดหน้าต่าง ตรวจสอบการwatchWindowSizeTimeoutตั้งค่าเพื่อควบคุมการหมดเวลาสำหรับการตอบสนองต่อการเปลี่ยนแปลงขนาดหน้าต่าง


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

คุณสามารถเพิ่ม li หลายตัวในแท็ก ol ที่มีแอตทริบิวต์เป็นคลาสที่มีค่า "carousel-indicator" และด้วย data-slide-to มีค่าตามลำดับเช่น 0 ถึง 6 หรือ 0 ถึง 9

มากกว่าที่คุณจะต้องคัดลอกและวาง div ซึ่งมีแอตทริบิวต์เป็นคลาสที่มีค่า "item"

สิ่งนี้ใช้ได้กับฉัน

<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
แสดง bootply ให้เราดูได้ไหม ?? มันใช้ไม่ได้และฉันไม่เข้าใจสิ่งที่คุณต้องการทำที่นี่ ??
azerafati

-1

การอ้างอิงถึงลิงก์ด้านบนฉันได้เพิ่มสิ่งใหม่ 1 รายการที่เรียกว่าแสดง 4 ในเวลาเลื่อนทีละรายการสำหรับ bootstrap 3 (v3.3.7)

CODEPLY : - https://www.codeply.com/go/eWUbGlspqU

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>

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.