web-dev-qa-db-fra.com

Rendre le carrousel bootstrap réactif en hauteur

J'ai besoin de personnaliser le carrousel de BS pour que les images soient correctement adaptées à la taille des images . devrait être redimensionné, mais conserver le ratio . Lorsque la fenêtre d'affichage est plus petite, l'image doit être réduite mais conservée.

J'ai essayé beaucoup de variantes mais je ne trouve pas la bonne solution.

J'espère qu'un expert en CSS/JS pourra m'aider ici.

Voici mon balisage actuel:

<!-- Carousel
================================================== -->
<div id="myCarousel" class="carousel slide" data-ride="carousel" data-pause="true">
      <!-- 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>
      </ol>
      <div class="carousel-inner">
        <div class="item active"><!--data-src="holder.js/900x500/auto/#777:#7a7a7a/text:First slide"-->
          <img src="MediaContent/Images/Unika%20kobbertryk%201.jpg" alt="First slide">
          <div class="container">
            <div class="carousel-caption">
              <h1>Example headline.</h1>
              <p>Note: If you're viewing this page via a <code>file://</code> URL, the "next" and "previous" Glyphicon buttons on the left and right might not load/display properly due to web browser security rules.</p>
              <p><a class="btn btn-lg btn-primary" href="#" role="button">Sign up today</a></p>
            </div>
          </div>
        </div>
        <div class="item"> <!--data-src="holder.js/900x500/auto/#666:#6a6a6a/text:Second slide" -->
          <img src="MediaContent/Images/Unika%20kobbertryk%202.jpg" alt="Second slide">
          <div class="container">
            <div class="carousel-caption">
              <h1>Another example headline.</h1>
              <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
              <p><a class="btn btn-lg btn-primary" href="#" role="button">Learn more</a></p>
            </div>
          </div>
        </div>
        <div class="item"><!--data-src="holder.js/900x500/auto/#555:#5a5a5a/text:Third slide"-->
          <img src="MediaContent/Images/Unika%20kobbertryk%203.jpg"  alt="Third slide">
          <div class="container">
            <div class="carousel-caption">
              <h1>One more for good measure.</h1>
              <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
              <p><a class="btn btn-lg btn-primary" href="#" role="button">Browse gallery</a></p>
            </div>
          </div>
        </div>
      </div>
      <a class="left carousel-control" href="#myCarousel" data-slide="prev"><span class="glyphicon glyphicon-chevron-left"></span></a>
      <a class="right carousel-control" href="#myCarousel" data-slide="next"><span class="glyphicon glyphicon-chevron-right"></span></a>
    </div><!-- /.carousel -->

Et voici mon css actuel, qui ne fonctionne pas comme décrit. Cette version me donne une hauteur fixe de 500 px et une image qui perd le rapport de format lorsque la fenêtre d'affichage est inférieure à la largeur de l'image.

/* GLOBAL STYLES

body {
  padding-bottom: 40px;
  color: #5a5a5a;
}


/* CUSTOMIZE THE NAVBAR
-------------------------------------------------- */

/* Special class on .container surrounding .navbar, used for positioning it into place. */
.navbar-wrapper {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 20;
}

/* Flip around the padding for proper display in narrow viewports */
.navbar-wrapper .container {
  padding-left: 0;
  padding-right: 0;
}
.navbar-wrapper .navbar {
  padding-left: 15px;
  padding-right: 15px;
}


/* CUSTOMIZE THE CAROUSEL
-------------------------------------------------- */

/* Carousel base class */
.carousel {
  min-height: 500px;
  margin-bottom: 60px;
}
/* Since positioning the image, we need to help out the caption */
.carousel-caption {
  z-index: 10;
}

/* Declare heights because of positioning of img element */
.carousel .item {
  min-height: 500px;
  background-color: #777;
}
.carousel-inner > .item > img {
  position: absolute;
  top: 0;
  left: 0;
  min-width: 100%;
  min-height: 500px;
}



/* MARKETING CONTENT
-------------------------------------------------- */

/* Pad the edges of the mobile views a bit */
.marketing {
  padding-left: 15px;
  padding-right: 15px;
}

/* Center align the text within the three columns below the carousel */
.marketing .col-lg-4 {
  text-align: center;
  margin-bottom: 20px;
}
.marketing h2 {
  font-weight: normal;
}
.marketing .col-lg-4 p {
  margin-left: 10px;
  margin-right: 10px;
}


/* Featurettes
------------------------- */

.featurette-divider {
  margin: 80px 0; /* Space out the Bootstrap <hr> more */
}

/* Thin out the marketing headings */
.featurette-heading {
  font-weight: 300;
  line-height: 1;
  letter-spacing: -1px;
}



/* RESPONSIVE CSS
-------------------------------------------------- */

@media (min-width: 768px) {

  /* Remove the Edge padding needed for mobile */
  .marketing {
    padding-left: 0;
    padding-right: 0;
  }

  /* Navbar positioning foo */
  .navbar-wrapper {
    margin-top: 20px;
  }
  .navbar-wrapper .container {
    padding-left:  15px;
    padding-right: 15px;
  }
  .navbar-wrapper .navbar {
    padding-left:  0;
    padding-right: 0;
  }

  /* The navbar becomes detached from the top, so we round the corners */
  .navbar-wrapper .navbar {
    border-radius: 4px;
  }

  /* Bump up size of carousel content */
  .carousel-caption p {
    margin-bottom: 20px;
    font-size: 21px;
    line-height: 1.4;
  }

  .featurette-heading {
    font-size: 50px;
  }

}

@media (min-width: 992px) {
  .featurette-heading {
    margin-top: 120px;
  }
}

Toute aide appréciée.

13
Depete

Dans le sélecteur CSS .carousel-inner > .item > img, remplacez min-width par width: 100%;

.carousel-inner > .item > img {
  min-width: 100%;
  width: 100%;
}
7
negative0

Je l'ai corrigé en ajoutant une classe aux images du carrousel, par exemple:

<img class="fixed-height">

et dans le css:

.fixed-height {
    max-height: 400px;
}
2
Lmaquer

J'avais le même problème que ci-dessus. Voici ma solution. J'ai changé quelques lignes de CSS: 

.carousel {
  margin-bottom: 60px;
}

/* Since positioning the image, we need to help out the caption */
.carousel-caption {
  z-index: 10;
}

/* Declare heights because of positioning of img element */
.carousel .item {
  min-width: 100%;
  background-color: #fff;
}

.carousel-inner > .item > img {
  min-width: 100%;
  height: 100%;
}

J'espère que ça aide.

2
user3363454

Je vous renverrai simplement pour ajouter la classe "img-responsive" dans les balises d'image. Et Bootstrap fera le reste pour vous. 

Cette classe indique au Bootstrap que vous souhaitez redimensionner les images en fonction de la taille de l'écran. 

<div class="carousel slide" id="theCarousel" data-interval="3000">
        <ol class="carousel-indicators">
        <li data-target="#theCarousel" data-slide-to="0" class="active"></li>
        <li data-target="#theCarousel" data-slide-to="1"></li>
        <li data-target="#theCarousel" data-slide-to="2"></li>
        </ol>

            <div class="carousel-inner">
                <div class="item active">
                    <img src="http://www.ansupalake.in/gallery/tapan%20kumar%201.JPG" alt="1" class="img-responsive" />
                    <div class="carousel-caption">
                         <h4 class="text-left">Resting In Style</h4>

                        <p class="text-left">Hi Everybody what's going on.....</p>
                    </div>
                </div>
                <div class="item ">
                    <img src="http://www.ansupalake.in/gallery/tapan%20kumar%202.JPG" alt="2" class="img-responsive" />
                    <div class="carousel-caption">
                         <h4 class="text-left">The Dude Look</h4>

                        <p class="text-left">Hi Everybody what's going on.....</p>
                    </div>
                </div>
                <div class="item ">
                    <img src="http://www.ansupalake.in/gallery/tapan%20kumar.JPG" alt="3" class="img-responsive" />
                    <div class="carousel-caption">
                         <h4 class="text-left">How z It??</h4>

                        <p class="text-left">Hi Everybody what's going on.....</p>
                    </div>
                </div>
            </div> 
        </div>          

Pour plus de détails Ici, j'ai un article sur ce sujet, vous pouvez y jeter un coup d'oeil si vous le souhaitez 

Curseur d'image de carrousel dans Bootstrap 3

2
Tapan kumar

définir pour tous les appareils tels que

@media (min-width: 360px) {
  .carousel {
    min-height: 140px;
   margin-bottom: 60px;
  }
  /* Since positioning the image, we need to help out the caption */
  .carousel-caption {
    z-index: 10;
    }

   /* Declare heights because of positioning of img element */
   .carousel .item {
    min-height: 140px;
    background-color: #777;
    }
   .carousel-inner > .item > img {
    position: absolute;
   top: 0;
   left: 0;
   min-width: 100%;
   min-height: 140px;
  }


}
1
ikbal

J'ai eu le même problème en ajoutant la classe "img-responsive" dans les balises d'image pour rendre les images réactives. 

            <div class="carousel-inner">
            <div class="item active">
                <img src="/imahes/my-image.jpg" alt="1" class="img-responsive" />
                <div class="carousel-caption">
                     <h4 class="text-left">My caption</h4>

                </div>
            </div>

mais le problème était avec la hauteur du curseur, donc j'ai besoin d'ajouter une requête multimédia pour redimensionner le contrôle div

@media (max-width: 800px) {
.carousel-control{
  height:350px;
}
}

cette requête média n’est qu’un exemple, personnalisez-la en fonction de vos besoins, j’espère que cela vous aidera.

0
Majali

Utiliser des images de différentes tailles sur le carrousel Bootstrap et effectuer les opérations suivantes en même temps:

  1. Largeur de l'image sur le carrousael = 100%
  2. Hauteur du curseur de l'image du carrousel = fixée
  3. Maintenir le ratio d'image

Supprimez le tagimget ajoutez une nouvelle classe à la place, par exempleslide1

<div class="item slide1">
  <div class="container">
    <div class="carousel-caption">
      <h1>Slide1 headline.</h1>
      <p>Slide content.</p>
    </div>
  </div>
</div> 

puis ajoutez le code CSS suivant pourslide1class,

.slide1{
    height: 500px;  /* your desired height for this slide */
    background: url(/img/your-img.jpg) no-repeat center center;
    background-size: cover;
}

Vous pouvez également configurer ces hauteurs pour différentes tailles de fenêtres. 

0
Arif Rahman