简体   繁体   English

浮动图片溢出父div

[英]Floated image overflows parent div

I'm trying to float:right; 我正在尝试float:right; image next to paragraph <p> , which are nested together in <div> container. <p>段落旁边的图像,它们嵌套在<div>容器中。 The problem is that the parent <div> resize its height with the size of the text in the paragraph, that's good, but floated right image overflows the div, and same <div> didn't resize itself according to the image height . 问题是父级<div>使用段落中文本的大小来调整其height ,这很好,但是浮动右边的图像会溢出div,而同一<div>并没有根据image height调整自身大小。

 .container { width: 70%; background-color: #777; margin: 0 auto; padding: 25px; } .content { width: 100%; height: auto; float: left; } .content .container { width: 70%; height: auto; background-color: white; /* overflow: hidden; /* Try later without overflow. (autoportrait.jpg overflow .content .container */ } .autoportrait { width: 20%; height: 20%; /* max-width:205px; max-height:265px; margin-bottom: 25px; */ padding: 10px 10px 10px 10px; border: solid; border-width: 2px; float: right; clear: both; } 
 <div class="content"> <div class="container"> <!-- <main> <section> --> <img class="autoportrait" src="autoportrait.jpg" alt="Autoportrait of me"> <h2>Post title</h2> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eu purus et enim eleifend fringilla. Cras nec tortor elementum, vestibulum orci id, congue nisl. Fusce ornare ac turpis sit amet tincidunt. Phasellus vel magna ut massa tempus ultricies. Etiam erat libero, molestie vitae scelerisque quis, consequat eget lorem. Nulla finibus felis non mi viverra efficitur. Proin eget lobortis libero. Fusce aliquam eros sed placerat viverra. Nulla venenatis, nulla sit amet suscipit vulputate, sem mauris rutrum erat, id pharetra dui nunc at dui. Morbi dignissim luctus maximus. Cras vitae ornare risus. Sed accumsan vitae eros ac placerat. Proin commodo non orci nec consectetur. Nunc posuere, enim a lobortis ultrices, augue ex ultrices ante, nec consectetur elit leo a ligula. Mauris pellentesque massa nisl, non pellentesque ex pulvinar eu. </p> <!-- </section> </main> --> </div> </div> 

I tried to use overflow: hidden; 我试图使用overflow: hidden; , but that works only for a single "post". ,但这仅适用于单个“帖子”。 When I try to put a second one, the same problem appears and length of the images that flows out of the 'content container' doubles. 当我尝试放置第二个图像时,出现相同的问题,并且从“内容容器”流出的图像长度加倍。 I'm newbie in HTML/CSS and the code I write it's for my own knowledge. 我是HTML / CSS的新手,我编写的代码仅出于我自己的知识。 So I'll be grateful if we figure out something. 因此,如果我们能解决问题,我将不胜感激。

Greetings from Varna, Bulgaria! 来自保加利亚瓦尔纳的问候!

Make the div to clear it's children using :after pseudo class. 使用:after伪类使div清除其子级。

 .container{ width: 70%; background-color: #777; margin: 0 auto; padding: 25px; border:1px solid red; } .content{ width: 100%; height: auto; float: left; } .content .container { width: 70%; height: auto; background-color: white; /*overflow: hidden; /* Try later without overflow. (autoportrait.jpg overflow .content .container) */ } .autoportrait{ width: 20%; height: 20%; /*max-width:205px; max-height:265px; margin-bottom: 25px;*/ padding: 10px 10px 10px 10px; border: solid; border-width: 2px; float: right; clear:both; } .container:after { visibility: hidden; display:table; font-size: 0; content: " "; clear: both; height: 0; } 
 <div class="content"> <div class="container"> <!--<main> <section>--> <img class="autoportrait" src="http://images.financialexpress.com/2015/12/Lead-image.jpg" alt="Autoportrait of me"> <h2>Post title</h2> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eu purus et enim eleifend fringilla. </p> <!--</section> </main>--> </div> <div class="container"> <!--<main> <section>--> <img class="autoportrait" src="http://images.financialexpress.com/2015/12/Lead-image.jpg" alt="Autoportrait of me"> <h2>Post title</h2> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eu purus et enim eleifend fringilla. Cras nec tortor elementum, vestibulum orci id, congue nisl. Fusce ornare ac turpis sit amet tincidunt. Phasellus vel magna ut massa tempus ultricies. Etiam erat libero, molestie vitae scelerisque quis, consequat eget lorem. Nulla finibus felis non mi viverra efficitur. Proin eget lobortis libero. Fusce aliquam eros sed placerat viverra. Nulla venenatis, nulla sit amet suscipit vulputate, sem mauris rutrum erat, id pharetra dui nunc at dui. Morbi dignissim luctus maximus. Cras vitae ornare risus. Sed accumsan vitae eros ac placerat. Proin commodo non orci nec consectetur. Nunc posuere, enim a lobortis ultrices, augue ex ultrices ante, nec consectetur elit leo a ligula. Mauris pellentesque massa nisl, non pellentesque ex pulvinar eu. </p> <!--</section> </main>--> </div> </div> 

Simplest solution is to use overflow: hidden; 最简单的解决方案是使用overflow: hidden; on .content .container . .content .container

I know you said you attempted it previously and even had it commented out in .content .container but it's working for me. 我知道您说过您曾经尝试过,甚至在.content .container其注释掉,但它对我.content .container Perhaps the issue was where/how you placed the second article in your markup. 也许问题在于您将第二篇文章放置在标记中的位置/方式。

 .container { width: 70%; background-color: #777; margin: 0 auto; padding: 25px; } .content { width: 100%; height: auto; float: left; } .content .container { width: 70%; height: auto; background-color: white; overflow: hidden; border: 1px solid #ccc; } .autoportrait { width: 20%; height: 20%; /* max-width:205px; max-height:265px; margin-bottom: 25px; */ padding: 10px 10px 10px 10px; border: solid; border-width: 2px; float: right; clear: both; } 
 <div class="content"> <div class="container"> <img class="autoportrait" src="http://placehold.it/300x500/fc0/" alt="Autoportrait of me"> <h2>Post title</h2> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eu purus et enim eleifend fringilla. Cras nec tortor elementum, vestibulum orci id, congue nisl. Fusce ornare ac turpis sit amet tincidunt. Phasellus vel magna ut massa tempus ultricies. Etiam erat libero, molestie vitae scelerisque quis, consequat eget lorem. Nulla finibus felis non mi viverra efficitur. Proin eget lobortis libero. Fusce aliquam eros sed placerat viverra. Nulla venenatis, nulla sit amet suscipit vulputate, sem mauris rutrum erat, id pharetra dui nunc at dui. Morbi dignissim luctus maximus. Cras vitae ornare risus. Sed accumsan vitae eros ac placerat. Proin commodo non orci nec consectetur. Nunc posuere, enim a lobortis ultrices, augue ex ultrices ante, nec consectetur elit leo a ligula. Mauris pellentesque massa nisl, non pellentesque ex pulvinar eu. </p> </div> <div class="container"> <img class="autoportrait" src="http://placehold.it/300x500/fc0/" alt="Autoportrait of me"> <h2>Post title</h2> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eu purus et enim eleifend fringilla. Cras nec tortor elementum, vestibulum orci id, congue nisl. Fusce ornare ac turpis sit amet tincidunt. Phasellus vel magna ut massa tempus ultricies. Etiam erat libero, molestie vitae scelerisque quis, consequat eget lorem. Nulla finibus felis non mi viverra efficitur. Proin eget lobortis libero. Fusce aliquam eros sed placerat viverra. Nulla venenatis, nulla sit amet suscipit vulputate, sem mauris rutrum erat, id pharetra dui nunc at dui. Morbi dignissim luctus maximus. Cras vitae ornare risus. Sed accumsan vitae eros ac placerat. Proin commodo non orci nec consectetur. Nunc posuere, enim a lobortis ultrices, augue ex ultrices ante, nec consectetur elit leo a ligula. Mauris pellentesque massa nisl, non pellentesque ex pulvinar eu. </p> <!-- </section> </main> --> </div> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM