Reputation: 3393
<div id="Blog1">
<div class="post">
<img src="http://dummyimage.com/180x120/000/fff" alt="Image 1" title="This is my first image"/>
<div class="post-info">
<span>post title post title post title</span>
</div>
</div>
<div class="post">
<img src="http://dummyimage.com/175x104/f0f/fff" alt="Image 2" title="The second one is pretty"/>
<div class="post-info">
<span>post title post title post title</span>
</div>
</div>
</div>
The div.post-info in some cases(images of width greater than the div.post-info content) fits the div.post parent however sometimes the width of the div.post-info is greater having an affect on the parent div.post by resizing it. how can i make the div.post-info fit the width of the div.parent and not resizing it if it is greater.
#Blog1{
padding:10px;
}
#Blog1 .post{
border:1px solid #000000;
margin:3px;
text-align:center;
position: relative;
display: inline-block;
*display: inline;
zoom: 1
}
.post img{
height:100px;
}
.post .post-info{
text-align:left;
}
.post .post-info span{
word-wrap:break-word;
}
YOU CAN CHANGE THE ELEMENTS AS LONG AS THE CONTENT REMAINS SAME TO CREATE A SOLUTION people keep giving solutions which are not suitable for what i'm asking...what i need is for the child div .post-info to not be a greater width than that of the .post parent div
Upvotes: 6
Views: 38363
Reputation: 1427
I had the same issue as the OP and the solution for me was to set
box-sizing: border-box;
I couldn't repro the behaviour in a fiddle, but just adding the above to the inner element resolved it in my app, so I hope that helps someone.
Upvotes: 0
Reputation: 389
You could set the div .post
width to 100%, and .post-info
width to 100%:
#Blog1 .post {
width: 100%;
}
.post-info {
width: 100%;
}
I believe this will make the div .post-info
relative to its parent div.
Upvotes: 0
Reputation: 206048
Here is a demo, but you should really explain: do you want the height to be variable ?
edited CSS (only changed elements):
#Blog1 .post{
border:1px solid #000000;
margin:3px;
text-align:center;
position: relative;
display:block; /**/
float:left; /**/
overflow:hidden; /**/
padding-bottom:24px; /**/
}
.post .post-info span{
position:absolute; /**/
word-wrap:break-word;
}
P.S: this question associates me to an old answer of mine :)
Pop Images like Google Images
If you need help ... I'm here
Upvotes: 12
Reputation: 253308
It seems to work with the following change to your CSS:
.post .post-info span{
display: block;
max-width: 90%;
margin: 0 auto;
}
Reasoning:
display: block;
allows a width
(and therefore max-width
) to be assigned to the element.max-width: 90%;
to ensure that the element's maximum width is less than the width of the parent, allowing some space between the content of the element and the borders of the parent.margin: 0 auto;
horizontally centres the element within its parent.Upvotes: 1
Reputation: 827
#Blog1 .post{
border:1px solid #000000;
margin:3px;
text-align:center;
position: relative;
display: inline-block;
*display: inline;
zoom: 1;
max-width: 200px;
overflow-x: hidden;
}
This solution will not however work in IE6 I think.
Upvotes: 0