【问题标题】:IE 7 & 8 failing to load (or perhaps correctly cascade) part of a stylesheetIE 7 & 8 无法加载(或可能正确级联)样式表的一部分
【发布时间】:2012-04-14 14:37:58
【问题描述】:

我有一个奇怪的问题,IE 7 和 8 没有加载我的一个样式表的大约 80%,它们到达了一个点,然后不再加载。 IE 开发工具可以识别已卸载的属性,但不会在浏览器中应用它们。以下样式表都正确加载,其他浏览器没有任何问题。此外,与近乎生产版本大约 90% 相同的 HTML 原型网站没有问题。

该网站是在 Wordpress 上本地构建的,但我已经上传了主页的源代码 here,如果有帮助的话(未正确加载的样式表是“760.css”)。此外,可以查看(正常工作的)原型 here,但在该版本和转换为 Wordpress 之间进行了一些更改。

有问题的样式表(似乎在应用 ul#menu-site-nav 属性后停止加载):

/*
由 Mikey Clarke 创建 | @mikey_clarke
*/

#nav-bar {
    font-size: 0.95em;
    padding: 0px 0px;
    }

#nav-bar ul {
    text-align: left;
    }

    ul#menu-site-nav {
        width: 95%;
        margin: 0 auto;
        }

    #nav-bar li.primary-nav {
        width: 14.584%;
        padding: 20px 1.042%;
        float: left;
        text-transform: uppercase;
        }

        #nav-bar li.primary-nav:first-child {
            display: block;
            padding-left: 1.042%;
            }

        #nav-bar li.primary-nav:nth-child(2) {
            padding-left: 1.042%; /* restore outer padding */
            }

        #nav-bar li.primary-nav:last-child {
            padding-right: 1.042%; /* restore outer padding */
            }

            #nav-bar li ul {
                display: block;
                width: 100%;
                text-transform: capitalize;
                }

                #nav-bar li ul li {
                    float: none;
                    padding: 0px 0px;
                    display: list-item;
                    }

    #nav-bar li.shield-logo {
        background: url(/wp-content/themes/itsa/images/shield.png) no-repeat;
        background-size: 25px;
        background-position: 10px 23px;
        }

        #nav-bar .shield-logo span {
            text-indent: 1000%;
            white-space: nowrap;
            overflow: hidden;
            display: block;
            padding-bottom: 12px;
            }

#masthead {
    font-size: 2.25em;
    padding: 35px 0;
    }

    #masthead a {
        display: block;
        padding: 0 160px;
        }

#content {
    width: 82.279%;
    padding-right: 1.042%;
    float: left; 
    }

.sidebar {
    width: 14.586%;
    float: left;
    text-align: right;
    padding: 0px 1.042% 20px 1.042%;
    background: none;
   -webkit-box-shadow: none;
   -moz-box-shadow: none;
    box-shadow: none;
    border: none;
    }

#section-nav>ul>li>span {
    padding: 4px 4%;
    border: 1px solid transparent;
    margin-bottom: 4px;
    }

    #section-nav li ul li {
        padding: 4px 4%;
        margin: 4px 0px;
        border: 1px solid transparent;
        }

    #section-nav>ul>li.current-menu-item>span,
    #section-nav>ul>li>ul>li.current-menu-item {
        -webkit-border-radius: 8px;
        -moz-border-radius: 8px;
        border-radius: 8px;
        border: 1px solid #f6f6f6;
        -webkit-box-shadow: inset 0px 1px 4px rgba(0,0,0,0.3);
        -moz-box-shadow: inset 0px 1px 4px rgba(0,0,0,0.3);
        box-shadow: inset 0px 1px 4px rgba(0,0,0,0.3);
        background-color: #ececec;
        background: rgba(0,0,0,0.02);
        }

#breadcrumbs {
    font-size: 0.9em;
    }

/* Restore content only useful for users browsing from desktops */
.mobile-superfluous {
    display: block;
    }

@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
        only screen and (-o-min-device-pixel-ratio: 3/2),
        only screen and (min--moz-device-pixel-ratio: 1.5),
        only screen and (min-device-pixel-ratio: 1.5) {
    #nav-bar li.shield-logo {
        background: url(/wp-content/themes/itsa/images/shield@2.png) no-repeat;
        background-size: 25px;
        }
    }

【问题讨论】:

  • 如果你使用的是基于 id 的 CSS 选择器,在它前面加上元素类型有什么好处?你可以删除ul 看看会发生什么吗?
  • @TLS 恐怕没什么区别。

标签: css internet-explorer stylesheet


【解决方案1】:

在手动重写整个样式表并在每一行之后进行测试后,似乎问题出在最后的媒体查询上。我已经单独删除了媒体查询的每个部分,并且完全无法确定 IE 阻塞的部分。我还将媒体查询复制并粘贴到不同的样式表中,该样式表在 IE 7 和 8 中加载良好。太奇怪了。

因为它在没有媒体查询的情况下也能工作,所以我将它移到另一个可以正常工作的样式表。

【讨论】:

    【解决方案2】:

    您的问题似乎在于这些浏览器不支持您使用的某些 CSS 伪选择器,即 :nth-child:last-child

    虽然它应该可以工作,但他们可能在使用不带空格的直接子选择器时遇到问题(这只是一个猜测,但并不牵强),即section-nav>ul>li 可能应该是#section-nav > ul > li

    请注意 IE7 和我认为 8 也不支持rgba

    任何成功的解析错误或缺少样式都可能归因于此,也许......

    有关 IE7+ 应支持的确切规范的更多信息,请阅读this excellent article about CSS2.1 selectors

    【讨论】:

    • 删除 CSS3 选择器是我尝试的第一件事,不幸的是没有运气,'>' 周围的空格是可选的。我将背景颜色作为后备应用,因为它们都不支持 rgba :)
    • 我知道这是可选的,这只是一个想法,@media 听起来合乎逻辑,别忘了接受你自己的答案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多