IE8优化问题(<div>中的浮动元素,<header>中的渐变...)</header> </div>

时间:2013-07-24 19:16:16

标签: html css internet-explorer internet-explorer-8

我最近在IE8中测试了我的浏览器,似乎很多事情都被打破了。这是我在测试服务器上的网站:[删除]。如果您在任何最新的浏览器中使用它,它看起来会很好。但是,如果你在IE8(或兼容模式下的IE10)中查看它,则会出现一些问题。

1)最大的问题是容器不起作用。我有一个容器类围绕某些元素保持内容居中和固定的宽度,同时也允许页眉/页脚走到屏幕的整个宽度。在IE8中,固定宽度不起作用。

容器的CSS

.container {
    margin: 0 auto;
    max-width: 1000px;
    min-width: 916px;
}

以下是HTML中使用它的一次的示例(在此示例中为标题.PHP用于突出显示菜单中的当前页面)。

<header>
    <div class="container">
        <div class="float-left">
            <a href="/index.php" class="home"><img src="/Images/logo.png" id="logo" alt="logo" /></a>
        </div>

        <div class="float-right">
            <nav>
                <ul id="menu">
                    <li><a href="/index.php" <?php if (strpos($url, "index.php")) { echo " class='active'"; } ?> class="home">HOME</a></li>
                    <li><a href="/webgis.php" <?php if (strpos($url, "webgis.php")) { echo " class='active'"; } ?> id="gisnav">WEBGIS</a></li>
                    <li><a href="/documents.php" <?php if (strpos($url, "documents.php")) { echo " class='active'"; } ?> id="docsnav">DOCUMENTS</a></li>
                    <li><a href="/statistics.php" <?php if (strpos($url, "statistics.php")) { echo " class='active'"; } ?> id="statsnav">STATISTICS</a></li>
                    <li><a href="/support.php" <?php if (strpos($url, "support.php")) { echo " class='active'"; } ?> id="supportnav">SUPPORT</a></li>
                </ul>
            </nav>
        </div>
    </div>
</header>

我认为问题在于margin: 0 auto;,或者容器内的浮动元素,但我不确定。

2)标题背景不再是我设置的蓝色渐变。我不确定为什么这不起作用,因为渐变仍然适用于页面中间的3 <div>

这是我的标题CSS

header {
    -moz-box-shadow:inset 0px 1px 0px 0px #54a3f7;
    -webkit-box-shadow:inset 0px 1px 0px 0px #54a3f7;
    box-shadow:inset 0px 1px 0px 0px #54a3f7;

    background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #007dc1), color-stop(1, #0061a7));
    background:-moz-linear-gradient(top, #007dc1 5%, #0061a7 100%);
    background:-webkit-linear-gradient(top, #007dc1 5%, #0061a7 100%);
    background:-o-linear-gradient(top, #007dc1 5%, #0061a7 100%);
    background:-ms-linear-gradient(top, #007dc1 5%, #0061a7 100%);
    background:linear-gradient(to bottom, #007dc1 5%, #0061a7 100%);
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#007dc1', endColorstr='#0061a7',GradientType=0);

    background-color:#007dc1;

    border:1px solid #124d77;

    color:#ffffff;
    font-size:13px;
    font-weight:700;
    padding:6px 24px;
    text-decoration:none;

    text-shadow:0px 1px 0px #154682;

    height: 50px;
    margin-bottom: 15px;
    text-align: center;
}

标题的HTML在问题1中。

3)我更改了<hr>的CSS,使其成为一个重复的图像(对角线只有3个像素)。 IE8似乎没有正确显示此图像。您可以在任何最新的浏览器中看到它应该是什么样子

这是CSS

hr {
    border: 0;
    background: url(/Images/tridots.png) 0 0 repeat-x;
    height: 5px;
    margin: 1em 0;
}

如果无法修复,那就没什么大不了的。我可以解决它


还有更多问题,但我希望他们能够解决这些问题。感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

1。)容器无效,因为您在DOCTYPE声明之前有一个html注释。这将IE8投入quirks mode

注意:w3c验证器(http://validator.w3.org)会告诉您这一点,以及在您的页面上发现其他一些问题。 ;)

2.。)IE8不了解html5标签。您需要使用Modernizr或html5shiv(等)之类的东西。或者做一些简单的事情:http://www.nickyeoman.com/blog/html/118-html5-tags-in-ie8。我想你会发现你的背景颜色出现了。

3。)对这个问题不肯定......但我认为上述内容也会解决这个问题。