1

在图像周围简单地浮动文本,但在 IE7 中并不顺利。文本被推到图像下方,好像没有浮动。

根据我的阅读,其原因可能是图像和文本位于浮动(和固定宽度/高度)的 div 内,这可能会触发包含 div 的“hasLayout”。我一直在寻找一个干净的解决方法,但还没有找到。

在最坏的情况下,我想我可以使用 jQuery,因为我已经在页面上使用它,但我更愿意用 CSS 解决这个问题。

这是一个小提琴,在好的浏览器中运行良好,但在 IE7 中应该会失败。

好(Firefox、Safari、Chrome、Opera、IE8+):

好形象

坏(IE7):

形象不佳

HTML:

<html>
<body>
    <div id="box_section">
        <div id="container1">
            <div id="container2">
                <div class="box">
                    <img src="http://c69282.r82.cf3.rackcdn.com/robot.jpg"/>
                    <p>Lorem ipsum etc etc whatever.</p>
                </div>

                <div class="box">
                    <img src="http://c69282.r82.cf3.rackcdn.com/pushing278.jpg"/>
                    <p>Lorem ipsum etc etc whatever.</p>
                </div>                    
            </div>
        </div>
    </div>
</body>
</html>

CSS:

/* Container for floating boxes */
#box_section
{
    height: 300px;  /* Fixed height and width */
    width: 984px;
    margin-top: 35px;  
    padding: 0;
    overflow: hidden;  
    margin-left: auto;
    margin-right: auto;    
}

/* Containers used to centre floated items independent of number */
/* In real webpage there can be any number of boxes. */
#container1
{
  padding: 0;
  float:left;
  width:100%;
  overflow:hidden;
  position:relative;
}

#container2
{
  clear:left;
  float:left;
  padding:0;
  position:relative;
  left:50%; 
}

/* The box. OMG. */
.box
{  
  float: left;  
  position:relative;
  right:50%;
  height: 190px;            /* Note fixed height and width */
  width: 350px;
  border-style: solid;  
  border-color: #ebead4; 
  border-width: 1px;
  padding-top: 10px;
  padding-left: 10px;
  padding-right: 10px;
  margin: 20px;  
  overflow: hidden;  
}

/* Goal is to float text around image. Note that images have fixed width/height.
Images snatched from random website for demonstration purposes. */
.box img
{
  float: left;
  margin-right: 15px;
  height: 180px;
  width: 200px;
  border-style: solid;
  border-radius: 5px;
  border-color: #eeeeff; 
  border-width: 1px;
}

请注意,包含 div 的解决方案必须非常灵活,因为可以有任意数量的这些框,并且它们必须浮动在中心(使用 jQuery 一次只显示一行)。盒子也可以是 4 种不同的固定宽度中的任何一种。

此外,由于图像可以是 2 种宽度之一(2 个不同的 CSS 类),或者根本不存在,这也使情况更加复杂。我想过让图像位置绝对并用边距来做,但因此失败了。

4

3 回答 3

1

将此代码添加到您的 CSS

.box p{
    float:left;
     width: 130px;    
}

http://jsfiddle.net/2VbGq/1/

于 2013-02-13T09:34:34.243 回答
1

哦,废了。我的错。

事实证明小提琴在 IE7 中工作正常,问题是我有一个用于设置最小宽度的“标题”元素的全局 css 规则。我在我的盒子里使用了标题元素......现在感觉很聪明。

感谢所有试图提供帮助的人。

于 2013-02-13T13:26:45.167 回答
0

像这样尝试......删除任何图像向左浮动的内容的“P”标签希望这会起作用......

于 2013-02-13T09:53:21.947 回答