html - 无法使 3 列布局在 IE7 的列表中工作

标签 html css

我正在尝试在列表项中创建一个液体 3 列区域。为此,我使用了包含 3 个元素的标准方法,其中前两个是边,左右浮动,第三个是内容,应该位于两者之间。以下 HTML 在 Firefox 中运行良好,但在 IE7 中无法正确呈现 - 内容呈现在两个 float 元素下方。知道问题出在哪里吗?

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <style>
        *
        {
            margin: 0;
            padding: 0;
            border: 0;
        }
        span
        {
            display:block;
        }
        .corner
        {
            width: 12px;
            height: 12px;
        }
        .tl
        {
            float: left;
        }

        .tr
        {
            float: right;
        }
        .fill
        {
            margin: 0px 12px;
        }
    </style>
  </head>
  <body>
    <ul>
      <li>
        <span class="tl corner">a</span>
        <span class="tr corner">b</span>
        <span class="fill">text text text</span>
      </li>
    </ul>
  </body>
</html>

请注意,将 span 替换为 div 会产生相同的效果。我也尝试过各种 DocTypes 但没有成功。它在列表之外工作正常,因此问题似乎是使用列表所固有的。

最佳答案

在 IE 中,你试图一个接一个地挤进一行,但前两个已经占据了他们的空间,飘走了,这让 LI 中的最后一个 SPAN 为下一个而战级别,在 IE 中看起来像下面的下一个级别。

由于最后一个 SPAN 没有 float ,这也是它被推到下一个级别的原因。

此外,SPAN 是内联样式,而不是 block 级元素。如果您仍想尝试在 LI 元素中设置样式,则应将 SPAN 替换为 DIV。

您还应该使用完整的 DOCTYPE,以便浏览器知道如何呈现页面。否则他们将默认为怪癖模式,丑陋且无处不在。

但更好的策略是在 LI 之外和 DIV 设置中创建这个 3 列的 float 。

阅读 CSSplayMax Design关于创建 3 列布局。

关于html - 无法使 3 列布局在 IE7 的列表中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/610401/

相关文章:

html - 无法在页面上看到我的表单按钮或页脚

javascript - 使用 '-' 字符分割太长的单词

html - 将标题标签与图像中心对齐

css - 如何使用混合混合模式更改动画背景上的文本颜色

javascript - 所有的 HTML 和 JS 文件都受到某些脚本的影响

jquery - html列表中的平滑圆形动画

css - 带有渐变的文本淡入淡出的 div - 自动溢出

iphone - 使具有较长水平行的 <table class ="table"> 对移动设备更友好

css - 是否可以将相同的样式应用于元素 1 和元素 2,而不调用元素 1 中的样式?

html - 调整窗口大小时重复背景图像(背景重复是不重复)