Twitter Bootstrap carousel different height images cause bouncing arrows
It looks like bootstrap less/CSS forces an automatic height to avoid stretching the image when the width has to change to be responsive. I switched it around to make the width auto and fix the height.
<div class="item peopleCarouselImg">
<img src="http://upload.wikimedia.org/...">
...
</div>
I then define img with a class peopleCarouselImg
like this:
.peopleCarouselImg img {
width: auto;
height: 225px;
max-height: 225px;
}
I fix my height to 225px. I let the width automatically adjust to keep the aspect ratio correct.
This seems to work for me.
Try this (I'm using SASS):
/* SASS */
.carousel {
max-height: 700px;
overflow: hidden;
.item img {
width: 100%;
height: auto;
}
}
You can wrap the .carousel
into a .container
if you wish.
/* CSS */
.carousel {
max-height: 700px;
overflow: hidden;
}
.carousel .item img {
width: 100%;
height: auto;
}
The key point will be to keep the height consistent. That's where the max-height
comes in, to constraint larger images.
Alternatively, you can set the image as a background image, giving you more flexibility on the height and image positioning (e.g. background-size
, background-position
, etc.)
For responsiveness, you'll need to use media queries.
EDIT: Thanks all, didn't know this is still being searched for. Vote up to help other devs!
Try with this jQuery code that normalize Bootstrap carousel slide heights
function carouselNormalization() {
var items = $('#carousel-example-generic .item'), //grab all slides
heights = [], //create empty array to store height values
tallest; //create variable to make note of the tallest slide
if (items.length) {
function normalizeHeights() {
items.each(function() { //add heights to array
heights.push($(this).height());
});
tallest = Math.max.apply(null, heights); //cache largest value
items.each(function() {
$(this).css('min-height', tallest + 'px');
});
};
normalizeHeights();
$(window).on('resize orientationchange', function() {
tallest = 0, heights.length = 0; //reset vars
items.each(function() {
$(this).css('min-height', '0'); //reset min-height
});
normalizeHeights(); //run it again
});
}
}
/**
* Wait until all the assets have been loaded so a maximum height
* can be calculated correctly.
*/
window.onload = function() {
carouselNormalization();
}