Adding text over an image in Bootstrap carousel

后端 未结 3 1374
梦如初夏
梦如初夏 2021-02-09 17:32

I have a carousel with an image that i would like to put text over, but it is not working. The text appears under the image instead of overlayed on top of it

<         


        
相关标签:
3条回答
  • 2021-02-09 18:12

    You could simply position the element absolutely just like built-in captions and set the top/bottom, left/right offsets.

    Note that the carousel captions have z-index: 10 by default, so you may want to give the positioned element a higher z-index:

    For instance:

    .carousel-content {
      position: absolute;
      bottom: 10%;
      left: 5%;
      z-index: 20;
      color: white;
      text-shadow: 0 1px 2px rgba(0,0,0,.6);
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
    <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"/>
    
    <div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
      <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>
    
      <div class="carousel-inner">
        <div class="active item">
          <img src="http://lorempixel.com/1200/315" alt="...">
          <div class="carousel-content">
            <p>TEST</p>
          </div>
          <div class="carousel-caption">
            <h3>What we do</h3>
          </div>
        </div>
        <div class="item">
          <img src="http://placehold.it/1200x315" alt="...">
          <div class="carousel-caption">
            <h3>What we Do</h3>
          </div>
        </div>
        <div class="item">
          <img src="http://placehold.it/1200x315" alt="...">
          <div class="carousel-caption">
            <h3>Who we Are</h3>
          </div>
        </div>
      </div>
    </div>

    0 讨论(0)
  • 2021-02-09 18:19

    Here is a possible solution:

    jsfiddle: http://jsfiddle.net/38v09vha/

                <div class="carousel-inner">
                    <div class="item">
                        <img src="http://placehold.it/1200x315" alt="...">
                        <div class="absolute-div">
                            <div class="carousel-caption">
                                <h3>What we Do</h3>
                            </div>
                        </div>
                    </div>
                    <div class="item">
                        <img src="http://placehold.it/1200x315" alt="...">
                        <div class="absolute-div">
                            <div class="carousel-caption">
                                <h3>What we Do</h3>
                            </div>
                        </div>
                    </div>
                    <div class="item">
                        <img src="http://placehold.it/1200x315" alt="...">
                        <div class="absolute-div">
                            <div class="carousel-caption">
                                <h3>What we Do</h3>
                            </div>
                        </div>
                    </div>
               </div>
    

    and css:

    .carousel-caption {
        position: absolute;
        z-index: 1;
        display:table;
        width:100%;
        height:100%;
    }
    
    .absolute-div {
        position: absolute;
          top: 0;
          left: 0;
          right: 0;
          bottom: 0;
    }
    
    .carousel-caption h3 {
        display:table-cell;
        vertical-align: middle;
        text-align:center;
    }
    
    .item {
        position:relative;
    }
    

    Assuming that you want them vertically aligned in the middle of the image—Basically, you'll want to relatively position the slide-items parent div, which will inherit it's height from the combined height of the image and the text. Then, you'll want to create a div that houses the text which has the css attribute position: absolute. This element will be a direct child of the relatively positioned parent. This will allow you to absolutely position your text within the nearest relatively positioned element. See this CSS Tricks tutorial to understand how this works.

    This will allow you to position the text over the image, I then went ahead and used table positioning to allow you to vertically center them, although you could go ahead and place them over the image wherever you like.

    0 讨论(0)
  • 2021-02-09 18:31

    Hope it help someone, in my case i did it with the following code :

    <style>
    .carousel-caption {
        position: absolute;
        z-index: 1;
        display:table;
        width:100%;
        height:100%;
    }
    
    .carousel-caption div {
        display:table-cell;
        vertical-align: middle;
        text-align:center;
    }
    
    .trickcenter {
        position: fixed;
        top: 84%; // 50% for perfect centering
        left: 50%;
        transform: translate(-50%, -50%);
    }
    </style>
    
    <div class="item">
        <img src="images/slider_T02.jpg" alt="Moto de collection">
        <div class="carousel-caption trickcenter">
            <div>HERE THE TEXT YOU WANT</div>
        </div>
    </div>
    
    <div class="item">
        <img src="images/slider_T03.jpg" alt="Véhicule Haut de Gamme">
        <div class="carousel-caption trickcenter">
            <div>HERE THE SECOND TEXT</div>
        </div>
    </div>
    
    0 讨论(0)
提交回复
热议问题