Reputation: 71
I have a div that just contains a bunch of 145px X 145px thumbnail images. The div doesn't have a set width so that there is the highest amount of images in one row that your browser window can fit. Now I want to center that div container, but keep the images left aligned. So I can't use text-align: center, because if the last row has fewer images in it, that row will be centered under the rest of the rows. Is there a way to center the container div with css or do I have to use javascript?
I have a jsbin here: http://jsbin.com/eTukegu/3/edit
(I just put 7 thumbnails in for the example, and I used divs instead of images)
<div id="thumbnail_container">
<div class="thumbnail"></div>
<div class="thumbnail"></div>
<div class="thumbnail"></div>
<div class="thumbnail"></div>
<div class="thumbnail"></div>
<div class="thumbnail"></div>
<div class="thumbnail"></div>
</div>
CSS:
#thumbnail_container
{
margin: 5px;
padding: 0;
}
.thumbnail
{
width: 145px;
height: 145px;
background-color: #fff;
display: inline-block;
margin: 5px 1px 1px 5px;
padding: 0;
}
Upvotes: 2
Views: 334
Reputation: 71
This is the javascript I wrote to solve this: (my thumbnail images are 145x145 with 10px in between each thumbnail)
window.onload = function()
{
setNewWidth();
};
window.onresize = function ()
{
setNewWidth();
};
function setNewWidth()
{
var containerWrapper = document.getElementById('thumbnail_container_wrapper');
var containerWrapperWidth = containerWrapper.offsetWidth;
var boxesInRow = Math.floor((containerWrapperWidth - 10) / 155);
var newWidth = boxesInRow * 155;
var container = document.getElementById('thumbnail_container');
container.style.width = newWidth + "px";
}
Upvotes: 0
Reputation: 11
Using display:table and changing left/right margin to auto:
#thumbnail_container{
display: table;
margin: 5px auto;
padding: 0;
}
Upvotes: 1