97 votes

L'image du carrousel Bootstrap ne s'aligne pas correctement

Regardez l'image suivante, nous utilisons un carrousel bootstrap pour faire tourner les images. Cependant, lorsque la largeur de la fenêtre est importante, l'image ne s'aligne pas correctement avec la bordure.

Mais l'exemple de carrousel fourni par bootstrap fonctionne toujours bien, quelle que soit la largeur de la fenêtre. En suivant le code.

Quelqu'un peut-il expliquer pourquoi le carrousel se comporte différemment ? Est-ce que cela a quelque chose à voir avec la taille de l'image ou une configuration bootstrap manquante ?

<section id="carousel">
<div class="hero-unit span6 columns">
    <h2>Welcome to TACT !</h2>
    <div id="myCarousel" class="carousel  slide" >
      <!-- Carousel items -->
      <div class="carousel-inner">
        <div class="item  active" >
            <img alt=""  src="/eboxapps/img/3pp-1.png">
            <div class="carousel-caption">
                <h4>1. Need a 3rd party jar?</h4>
            </div>
        </div>
        <div class="item">
            <img alt=""  src="/eboxapps/img/3pp-2.png">
            <div class="carousel-caption">
                <h4>2. Create Request</h4>
            </div>
        </div>
        <div class="item">
            <img alt=""  src="/eboxapps/img/3pp-3.png">
            <div class="carousel-caption">
                <h4>3. What happens?</h4>
            </div>
        </div>
        <div class="item">
            <img alt=""  src="/eboxapps/img/3pp-4.png">
            <div class="carousel-caption">
                <h4>4. Status is Emailed</h4>
            </div>
        </div>
      </div>
      <!-- Carousel nav -->
      <a class="carousel-control left" href="#myCarousel" data-slide="prev">&lsaquo;</a>
      <a class="carousel-control right" href="#myCarousel" data-slide="next">&rsaquo;</a>
    </div>
</div>

carousel image

0 votes

Vos images ont-elles toutes la même largeur ? De même, s'étirent-elles jusqu'à leur .span6 conteneur ?

1 votes

Toutes mes images ont la même largeur et la même hauteur. Elles semblent toutes s'étirer. Pour essayer de corriger le problème, j'ai essayé de créer des images de la même taille que celle fournie par l'exemple de bootstrap. Mais la taille a été complètement bouleversée. Je pense donc qu'il y a un lien entre la taille de l'image et le style css. Mais, la documentation ne décrit pas complètement cette relation.

0 votes

J'ai rencontré ce problème également, et c'était assez frustrant. Pour moi, il s'est avéré que cela se produisait parce que la div contenant le carrousel avait une largeur fixe qui était plus large que le carrousel.

162voto

atrepp Points 889

La solution consiste à placer ce code CSS dans votre fichier CSS personnalisé :

.carousel-inner > .item > img {
  margin: 0 auto;
}

1 votes

Cela a fonctionné pour moi ! j'ai essayé la méthode vekozlov mais cela n'a pas fonctionné, cela fonctionne ! merci beaucoup

0 votes

Le site hauteur du carrousel change pour différentes hauteurs d'images, il faudrait donc définir une largeur fixe en css.

0 votes

Super ! J'espère que ce sera bientôt une classe BS "intégrée" telle que .carousel-img-center ou autre.

128voto

user1655478 Points 38

Avec bootstrap 3, il suffit d'ajouter les classes responsive et center :

 <img class="img-responsive center-block" src="img/....jpg" alt="First slide">

Cela permet de redimensionner automatiquement l'image et de la centrer.

Edit :

Avec bootstrap 4, il suffit d'ajouter l'élément img-fluid classe

<img class="img-fluid" src="img/....jpg">

9 votes

J'ai essayé les solutions les plus votées, sans succès. Cette solution est beaucoup plus propre, plus simple et a fonctionné. Je vous remercie !

2 votes

Maigre et propre. Merci

2 votes

Parfait, merci. Je jure que j'ai déjà cherché sur Google et que je n'ai pas eu de réponse, mais ça a marché tout de suite.

18voto

vekozlov Points 307

J'ai été confronté au même problème et je l'ai résolu de cette façon : Il est possible d'insérer du contenu non-image dans le Carousel, nous pouvons donc l'utiliser. Vous devez d'abord insérer div.inner-item (où vous ferez l'alignement central), puis insérez l'image à l'intérieur de cette division.

Voici mon code (Ruby) :

<div id="myCarousel" class="carousel slide">
    <!-- Carousel items -->
    <div class="carousel-inner">
        <div class="active item">
            <%= image_tag "couples/1.jpg" %>
        </div> 
        <% (2..55).each do |t|%>
            <div class="item">
                <div class='inner-item'>
                    <%= image_tag "couples/#{t}.jpg" %>
                </div>
            </div> 
        <% end -%>
    </div>
    <!-- Carousel nav -->
    <a class="carousel-control left" href="#myCarousel" data-slide="prev">&lsaquo;</a>
    <a class="carousel-control right" href="#myCarousel" data-slide="next">&rsaquo;</a>
</div>

Et mon code css(.scss) :

.inner-item {
    text-align: center;
    img {
        margin: 0 auto;
    }
}

0 votes

Ce fichier css a bien fonctionné pour moi, en plus de fixer la hauteur des images dans le carrousel.

6voto

Virtlink Points 12475

Alors que vekozlov La réponse de l'auteur fonctionne dans Bootstrap 3 pour centrer votre image, mais elle ne fonctionne pas lorsque le carrousel est réduit : l'image conserve sa taille au lieu d'être réduite avec le carrousel.

Au lieu de cela, faites ceci sur le carrousel de niveau supérieur div :

<div id="my-carousel" class="carousel slide"
    style="max-width: 900px; margin: 0 auto">
    ...
</div>

Cela permet de centrer l'ensemble du carrousel et de l'empêcher de s'étendre au-delà de la largeur de vos images (c'est-à-dire 900 px ou la valeur que vous souhaitez définir). Cependant, lorsque le carrousel est réduit, les images sont réduites avec lui.

Vous devez bien sûr placer ces informations de style dans votre fichier CSS/LESS.

1voto

rnaka530 Points 24

Je pense que j'ai une solution :

Dans votre page de feuille de style personnelle, attribuez la largeur et la hauteur à match les dimensions de votre image.

Créez une "classe" supplémentaire distincte sur cette div supérieure qui s'approprie l'espace avec des travées...(Illustré ci-dessous)

        <div class="span6 columns" class="carousel">
            <div id="myCarousel" class="carousel slide">
                <div class="carousel-inner">
                <div class="item active">

Sans toucher au fichier bootstrap.css, dans votre propre feuille de style, appelez "carrousel" (ou n'importe quelle étiquette que vous choisissez) pour correspondre à la largeur et à la hauteur de votre pixel original !

.carousel       {
            width: 320px;
            height: 200px;

}

Dans mon cas, j'utilise de petites images de 320x200 pour le carrousel. Il y a probablement des dimensions prédéfinies dans le fichier bootstrap.css, mais je n'aime pas les modifier afin d'essayer de rester à jour avec les futures versions. J'espère que cela vous aidera~~.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X