stop div resizing parent div using css

2020-06-18 06:51发布

http://jsfiddle.net/ETkkR/

<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.

my css

#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;
}​

Edit

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

标签: css resize
6条回答
爷的心禁止访问
2楼-- · 2020-06-18 07:23
#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.

查看更多
beautiful°
3楼-- · 2020-06-18 07:31

Here is a demo, but you should really explain: do you want the height to be variable ?

jsFiddle demo

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

查看更多
再贱就再见
4楼-- · 2020-06-18 07:31

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.

查看更多
beautiful°
5楼-- · 2020-06-18 07:33

It seems to work with the following change to your CSS:

.post .post-info span{
    display: block;
    max-width: 90%;
    margin: 0 auto;
}​

JS Fiddle demo.

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.
查看更多
戒情不戒烟
6楼-- · 2020-06-18 07:42

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.

查看更多
家丑人穷心不美
7楼-- · 2020-06-18 07:44

Try the css property max-width

查看更多
登录 后发表回答