skip to Main Content

I have a multi-item bootstrap carousel and I want to put text in certain parts of the images in this carousel. Here is a CodePen of what I have. Currently, the text will show only when the image is the first one listed. As you can see when you go right once the streamer text appears on the first image, then if you proceed to go back left the text disappears and stays only on the first image.

HTML:

<body>
    <div class="container">
        <div class="row">
            <div class="col-md-12">
                <div class="carousel slide multi-item-carousel" id="theCarousel">
                    <div class="carousel-inner">
                        <div class="item active">
                            <div class="col-xs-4"><a href="#1"><img src="http://placehold.it/200x110/f44336/000000" class="image img-thumbnail img-responsive"></a></div>
                            <div class="image-content">Streamer</div>
                        </div>

                        <div class="item">
                            <div class="col-xs-4"><a href="#2"><img src="http://placehold.it/200x110/f44336/000000" class="image img-thumbnail img-responsive"></a></div>
                            <div class="image-content">Streamer</div>
                        </div>

                        <div class="item">
                            <div class="col-xs-4"><a href="#1"><img src="http://placehold.it/200x110/f44336/000000" class="image img-thumbnail img-responsive"></a></div>
                        </div>

                        <div class="item">
                            <div class="col-xs-4"><a href="#1"><img src="http://placehold.it/200x110/673ab7/000000" class="image img-thumbnail img-responsive"></a></div>
                        </div>

                        <div class="item">
                            <div class="col-xs-4"><a href="#1"><img src="http://placehold.it/200x110/4caf50/000000" class="image img-thumbnail img-responsive"></a></div>
                        </div>

                        <div class="item">
                            <div class="col-xs-4"><a href="#1"><img src="http://placehold.it/200x110/8bc34a/000000" class="image img-thumbnail img-responsive"></a></div>
                        </div>
                    </div>
                    <a class="left carousel-control" href="#theCarousel" data-slide="prev"><i class="glyphicon glyphicon-chevron-left"></i></a>
                    <a class="right carousel-control" href="#theCarousel" data-slide="next"><i class="glyphicon glyphicon-chevron-right"></i></a>
                </div>
            </div>
        </div>
    </div>

    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="js/main.js"></script>
</body>

CSS:

.multi-item-carousel {
    width: 100%;
    height: 100%;
    font-size: 25px;
}

.multi-item-carousel .carousel-inner > .item {
    transition: 500ms ease-in-out left;
}

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

.multi-item-carousel .carousel-inner .active.right {
    left: 33%;
}

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

.multi-item-carousel .carousel-inner .prev {
    left: -33%;
}

@media all and (transform-3d), (-webkit-transform-3d) {
    .multi-item-carousel .carousel-inner > .item {
        transition: 500ms ease-in-out left;
        transition: 500ms ease-in-out all;
        backface-visibility: visible;
        transform: none!important;
    }
}

.multi-item-carousel .carousel-control.left,
.multi-item-carousel .carousel-control.right {
    width: 5%;
    background-image: none!important;
    filter: none!important;
    outline: none!important;
    border: 0;
}

.container {
    width: 100%;
}

.carousel {
    padding: 20px 70px;
}

.image {
    border: 0;
    outline: none;
    background: transparent;
}

.image-content {
    top: 5px;
    left: 21px;
    position: absolute;
    color: rgb(225, 225, 225);
    font-size: 11px;
}

body {
    background-color: transparent;
}

2

Answers


  1. If you want the text to appear on certain images, you must put the div containing the the text inside of the col in which you are placing your image. Check if this is what you are trying to acheive.

    // Instantiate the Bootstrap carousel
    $('.multi-item-carousel').carousel({
        interval: false
    });
      
      // for every slide in carousel, copy the next slide's item in the slide.
      // Do the same for the next, next item.
    $('.multi-item-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));
        }
    });
    .multi-item-carousel {
        width: 850px;
        height: 150px;
        font-size: 25px;
    }
    
    .multi-item-carousel .carousel-inner > .item {
        transition: 500ms ease-in-out left;
    }
    
    .multi-item-carousel .carousel-inner .active.left {
        left: -33%;
    }
    
    .multi-item-carousel .carousel-inner .active.right {
        left: 33%;
    }
    
    .multi-item-carousel .carousel-inner .next {
        left: 33%;
    }
    
    .multi-item-carousel .carousel-inner .prev {
        left: -33%;
    }
    
    @media all and (transform-3d), (-webkit-transform-3d) {
        .multi-item-carousel .carousel-inner > .item {
            transition: 500ms ease-in-out left;
            transition: 500ms ease-in-out all;
            backface-visibility: visible;
            transform: none!important;
        }
    }
    
    .multi-item-carousel .carousel-control.left,
    .multi-item-carousel .carousel-control.right {
        width: 5%;
        background-image: none!important;
        filter: none!important;
        outline: none!important;
        border: 0;
    }
    
    .container {
        width: 100%;
    }
    
    .carousel {
        padding: 20px 70px;
    }
    
    .image {
        border: 0;
        outline: none;
        background: transparent;
    }
    
    .image-content {
        top: 5px;
        left: 21px;
        position: absolute;
        color: rgb(225, 225, 225);
        font-size: 11px;
    }
    
    body {
        background-color: black;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
    
            <div class="container">
                <div class="row">
                    <div class="col-md-12">
                        <div class="carousel slide multi-item-carousel" id="theCarousel">
                            <div class="carousel-inner">
                                <div class="item active">
                                    <div class="col-xs-4"><a href="#1"><img src="http://placehold.it/200x110/f44336/000000" class="image img-thumbnail img-responsive"></a>
                                      <div class="image-content">Streamer</div>
                                    </div>  
                                </div>
    
                                <div class="item">
                                    <div class="col-xs-4"><a href="#2"><img src="http://placehold.it/200x110/f44336/000000" class="image img-thumbnail img-responsive"></a>
                                      <div class="image-content">Streamer</div>
                                    </div>    
                                </div>
    
                                <div class="item">
                                    <div class="col-xs-4"><a href="#1"><img src="http://placehold.it/200x110/f44336/000000" class="image img-thumbnail img-responsive"></a></div>
                                </div>
    
                                <div class="item">
                                    <div class="col-xs-4"><a href="#1"><img src="http://placehold.it/200x110/673ab7/000000" class="image img-thumbnail img-responsive"></a></div>
                                </div>
    
                                <div class="item">
                                    <div class="col-xs-4"><a href="#1"><img src="http://placehold.it/200x110/4caf50/000000" class="image img-thumbnail img-responsive"></a></div>
                                </div>
    
                                <div class="item">
                                    <div class="col-xs-4"><a href="#1"><img src="http://placehold.it/200x110/8bc34a/000000" class="image img-thumbnail img-responsive"></a></div>
                                </div>
                            </div>
                            <a class="left carousel-control" href="#theCarousel" data-slide="prev"><i class="glyphicon glyphicon-chevron-left"></i></a>
                            <a class="right carousel-control" href="#theCarousel" data-slide="next"><i class="glyphicon glyphicon-chevron-right"></i></a>
                        </div>
                    </div>
                </div>
            </div>
    Login or Signup to reply.
  2. Please try using put text separate div to col-xs-4 div it will be display you content each time like:

    <div class="item active">
        <div class="col-xs-4">
          <a href="#1">
            <img src="http://placehold.it/200x110/f44336/000000" class="image img-thumbnail img-responsive">
          </a>
          <!-- here-->
          <div class="image-content">Streamer</div>
          <!-- -->
       </div>
       <!--<div class="image-content">Streamer</div>-->
    </div>
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search