4

我正在处理一个具有嵌套 p、div 和 li 的 ol 的页面。Internet Explorer 6 和 7 都在末尾的 p 元素之后(在 li 标记的最底部)呈现 ol 标记的数字,而不是像预期的那样在最外层 li 的顶部。我正在使用 PowerPC Mac,无法进行任何测试。是否有一些简单的 CSS hack 可以使此渲染与 Firefox 中的渲染相同?

您可以在此处查看实时页面。我知道,我正在定位侧边栏。暂时忽略它。

标记如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link rel="stylesheet" type="text/css" href="css/global.css" />
        <link rel="stylesheet" type="text/css" href="css/whats_included.css" />
        <script type="text/javascript" src="script/compliant_target_blank.js"></script>
        <!--[if lte IE 5]>
            <script type="text/javascript" src="script/ie_5_unsupported_warning.js"></script>
        <![endif]-->
        <!--[if gt IE 5]>
            <link rel="stylesheet" type="text/css" href="css/ie_hacks/global.css" />
        <![endif]-->
        <title>
            The Daily Plan-It, LLC - Home of the Tax MiniMiser
        </title>
    </head>
    <body>
        <?php include("includes/nav_bar.php") ?>

        <div id="content">
            <img src="images/title.png" alt="Tax MiniMiser Financial Tracking System" />
            <div id="bordered_wrapper">
                <h1>Here's What You Get With The Tax MiniMiser!</h1>
                <h2>24 Envelopes, 7-hole punched to fit one-at-a-time in your binder</h2>
                <ol>
                    <li class="main_item">
                        Business Income &amp; Expense Record
                        <div class="preview_image">
                            <a href="previews/large/bier/front.html" rel="external">
                                <img src="images/small_previews/large/bier_preview.jpg" alt="" /><br/>
                                Click to Preview!
                            </a>
                        </div>
                        <div class="details">
                            <ul>
                                <li>12 receipt envelopes with all the income &amp; expense columns you need to transform your planner or binder into a daily tax journal!</li>
                                <li>Store daily receipts in the convenient pocket envelopes.</li>
                            </ul>
                        </div>
                        <p>To get a free copy of the &quot;20 Column Heading Guidelines&quot;, <a href="files/downloads/20_column_heading_guidelines.pdf">click here</a> or call our Fax-on-Demand line at 888-829-8237.</p>
                    </li>
                    <li class="main_item">
                        Vehicle Mileage &amp; Expense Record
                        <div class="preview_image">
                            <a href="previews/large/vme/front.html" rel="external">
                                <img src="images/small_previews/large/mileage_preview.jpg" alt=""/><br/>
                                Click to Preview!
                            </a>
                        </div>
                        <div class="details">
                            <ul>
                                <li>12 receipt envelopes to track your daily mileage and vehicle expenses. Keep one envelope in each vehicle used for your business(es).</li>
                                <li>Store daily receipts in the convenient pocket envelopes.</li>
                            </ul>
                        </div>
                        <p>To get a free copy of the &quot;Instructions for Vehicle Mileage &amp; Expense Record&quot;, <a href="files/downloads/vehicle_record_instructions.pdf">click here</a> or call our Fax-on-Demand line at 888-829-8237.</p>
                    </li>
                    <li class="main_item">
                        Annual Business Summary of Income and Expense
                        <div class="preview_image">
                            <a href="previews/large/cover/inside.html" rel="external">
                                <img src="images/small_previews/large/cover_inside_preview.jpg" alt="" /><br/>
                                Click to Preview!
                            </a>
                        </div>
                        <div class="details">
                            <ul>
                                <li>Enter the subtotals from all the envelopes throughout the year. Then you and your tax pro can figure out profitability and taxes to maximize your deductions and legally minimize your taxes.</li>
                            </ul>
                        </div>
                    </li>
                </ol>
                <p class="end">To see previews of the small (6&quot; x 8&frac12;&quot;) Tax MiniMisers, visit their respective pages <a href="products.php">here.</a></p>
            </div>
        </div>

        <?php include("includes/footer.php") ?>
    </body>
</html>

和CSS:

#content {
    background-color: white;
}

#bordered_wrapper {
    margin-left: 26px;
    background: top left no-repeat url(../images/borders/yellow-box-top.gif);
}

#bordered_wrapper h1, #bordered_wrapper h2 {
    margin-left: 20px;
}

#bordered_wrapper h1 {
    padding-top: 15px;
    margin-bottom: 0;
}

#bordered_wrapper h2 {
    margin-top: 0;
    font-size: 1.3em;
}

ol {
    font-size: 1.1em;
}

ul {
    list-style-type: disc;
}

li.main_item {
    width: 700px;
    clear: right;
}

li p {
    clear: both;
    margin-bottom: 20px;
}

.preview_image {
    width: 200px;
    float: right;
    text-align: center;
    margin-bottom: 10px;
}

.preview_image a {
    text-decoration: none;
}

.preview_image img {
    border-style: none;
}

.end {
    clear: right;
    padding-bottom: 25px;
    padding-left: 20px;
    background: bottom left no-repeat url(../images/borders/yellow-box-bottom.gif);
}
4

4 回答 4

12

恭喜,您是 IE 的hasLayout属性的受害者。

简短版:这次你很容易。更改这些规则:

...

ol {
    font-size: 1.1em;
}

...

li.main_item {
    width: 700px;
    clear: right;
}

...

对此:

...

ol {
    font-size: 1.1em;
    width: 700px;
}

...

li.main_item {
    clear: right;
}

...

这一切都很好。

更长的版本:当您将某些 CSS 规则应用于某些元素时,IE 5.5+ 会为这些元素提供一个名为“hasLayout”的属性,该属性会更改该元素的呈现方式。由于 hasLayout 是一个没有明显用途的只读属性,网页设计师花了很长时间才发现这个问题。较旧的网站(甚至 Quirksmode.org!)仍然有页面建议使用填充、边距,甚至使用 Javascript 来解决这些问题。如果你能帮助它,不要做这些事情。相反,看看你是否可以找出错误地赋予了 hasLayout 的元素,并更改有问题的 CSS 以使该元素不再获得 hasLayout。如果这完全破坏了您的页面,请使用条件注释只为 IE 修复它。以下是一些将“hasLayout”添加到尚未拥有它的元素的 CSS 规则:

  • 位置:绝对
  • 浮动:左|右
  • 显示:内联块
  • 高度:除“自动”之外的任何值
  • 缩放:“正常”以外的任何值(MS 专有)
  • 写作模式:tb-rl(MS专有)

从 IE7 开始,溢出成为 hasLayout 的触发器。

  • 溢出:隐藏|滚动|自动

最长版本:阅读以下文章。

  1. 这是微软希望你通过触发 "hasLayout"来做的所有巧妙的事情。
  2. 这是网页设计师在发现发生了什么时对 hasLayout 的想法的简洁版本。一些相同的内容,但包括 CSS hacks 和东西。
于 2008-09-25T02:05:48.450 回答
0

我刚刚在 firefox 3/webkit nightly/internet explorer 7 中测试了您的示例 html,所有这些都与顶部的数字完全相同。

问题可能出在您的 CSS 中,您能告诉我们实际损坏的页面吗?

于 2008-09-21T05:36:18.007 回答
0

同样在这里,在 WinXP Pro SP3 上用 IE6 测试,它显示正确。您应该提供重现问题的片段或实时网页。也许环境很重要,或者现有的 CSS 等。

于 2008-09-21T08:36:33.690 回答
0

实际上,我也遇到了这个错误。在我的页面中,它仅在使用 javascript 更改编号后发生。唯一可用的真正解决方案是使用:

vertical-align: top;

老实说,我不知道为什么 IE7 会这样做,但是有一种简单的方法可以解决它。

于 2010-02-06T15:42:08.137 回答