当我在@media中替换背景图像时,IE9 +中不再显示背景图像。它可以在FF,Safari和Chrome中完美运行。我尝试了几次绕过,但似乎受这些限制的影响(见下文)。有人建议吗?



<div class="feature">
    <ul class="feature-list">
        <li class="nav-boat"><a href="/pages/disclaimer.php" ></a></li>
        <li class="nav-camper"><a href="#"></a></li>
        <li class="nav-tools"><a href="#"></a></li>
        <li class="nav-cleaner"><a href="#"></a></li>
        <li class="nav-motorcycle"><a href="#"></a></li>
        <li class="nav-car"><a href="#"></a></li>
        <li class="nav-warehouse"><a href="#"></a></li>
        <li class="nav-office"><a href="#"></a></li>
    </ul>
    <div class="clear"></div>
</div>


低于CSS

.feature {
width:920px;
margin:30px auto;
height:500px;
}

.feature-list {
list-style: none;
}

.feature-list li {
width:185px;
height:185px;
margin-top:40px;
border:2px solid #4d4d4d;
margin-left:33px;
}

.feature-list li a {
text-decoration: none;
float: left;
}

.nav-camper {
background: url(/images/camper-icon-sm.gif) center center no-repeat;
}

.nav-camper:hover {
background-image: url(/images/camper-icon-hover-sm.gif);
}

.nav-boat {
background: url(../images/boat-icon-sm.gif) center center no-repeat;
}

.nav-boat:hover {
background-image: url(../images/boat-icon-hover-sm.gif);
}

.nav-tools {
background: url(../images/tools-icon-sm.gif) center center no-repeat;
}

.nav-tools:hover {
background-image: url(../images/tools-icon-hover-sm.gif);
}

.nav-cleaner {
background: url(../images/cleaner-icon-sm.gif) center center no-repeat;
}

.nav-cleaner:hover {
background-image: url(../images/cleaner-icon-hover-sm.gif);
}

.nav-motorcycle {
background: url(../images/motorcycle-icon-sm.gif) center center no-repeat;
}

.nav-motorcycle:hover {
background-image: url(../images/motorcycle-icon-hover-sm.gif);
}

.nav-car {
background: url(../images/car-icon-sm.gif) center center no-repeat;
}

.nav-car:hover {
background-image: url(../images/car-icon-hover-sm.gif);
}

.nav-warehouse {
background: url(../images/warehouse-icon-sm.gif) center center no-repeat;
}

.nav-warehouse:hover {
background-image: url(../images/warehouse-icon-hover-sm.gif);
}

.nav-office {
background: url(../images/office-icon-sm.gif) center center no-repeat;
}

.nav-office:hover {
background-image: url(../images/office-icon-hover-sm.gif);
}


@media查询。

@media screen and (max-width: 769px) {

.feature-list li {
    width:120px;
    height:120px;
}

.feature ul li a {
    width: 120px;
    height: 120px;
}

.divider {
    display:none;
}

.nav-camper {
   background: url(../images/camper-icon-xs.gif) center center no-repeat;
}

.nav-camper:hover {
   background-image: url(../images/camper-icon-hover-xs.gif);
}

.nav-boat {
   background: url(../images/boat-icon-xs.gif) center center no-repeat;
}

.nav-boat:hover {
   background-image: url(../images/boat-icon-hover-xs.gif);
}

.nav-tools {
   background: url(../images/tools-icon-xs.gif) center center no-repeat;
}

.nav-tools:hover {
   background-image: url(../images/tools-icon-hover-xs.gif);
}

.nav-cleaner {
   background: url(../images/cleaner-icon-xs.gif) center center no-repeat;
}

.nav-cleaner:hover {
   background-image: url(../images/cleaner-icon-hover-xs.gif);
}

.nav-motorcycle {
   background: url(../images/motorcycle-icon-xs.gif) center center no-repeat;
}

.nav-motorcycle:hover {
   background-image: url(../images/motorcycle-icon-hover-xs.gif);
}

.nav-car {
   background: url(../images/car-icon-xs.gif) center center no-repeat;
}

.nav-car:hover {
   background-image: url(../images/car-icon-hover-xs.gif);
}

.nav-warehouse {
   background: url(../images/warehouse-icon-xs.gif) center center no-repeat;
}

.nav-warehouse:hover {
   background-image: url(../images/warehouse-icon-hover-xs.gif);
}

.nav-office {
   background: url(../images/office-icon-xs.gif) center center no-repeat;
}

.nav-office:hover {
   background-image: url(../images/office-icon-hover-xs.gif);
}
}

最佳答案

IE9不支持媒体查询,请在文本文件中的JS代码下方添加并保存为css-media-query-ie.js名称,然后将其添加至目录,然后在html页的开头添加以下标签。

的HTML

<head>


     <!--[if lt IE 9]>
                <script type="text/javascript" src="css-media-query-ie.js"></script>
            <![endif]-->

</head>


css-media-query-ie.js

/*!
 * CSS Media Queries for IE later than 9.0
 * http://ghita.org/tipoftheday/css-media-queries-for-ie
 * Copyright 2011, Serban Ghita
 * Released under the GPL Licenses.
 */

var detectAndUseStylesheet = function(){

    var currentWidth = screen.width,
        // currentWidth = parseInt(document.documentElement.clientWidth),
        //currentWidth = 320,
        cssLinks = document.getElementsByTagName('link'),
        _check = new RegExp(currentWidth, 'i'),
        foundResolution = false,
        allSupportedResolutions = [];

    for(ii in cssLinks){

        if(cssLinks[ii].href){

            if(cssLinks[ii].id){
              allSupportedResolutions.push(cssLinks[ii].id.match(/[0-9]+/i)[0]);

              if(cssLinks[ii].id.match(_check)){
                document.getElementById('stylesheet-'+currentWidth).removeAttribute('media');
                foundResolution = true;
              }

            }
        }
    }

    // Fallback if resolution is not found.
    if(!foundResolution){
        for(ii in allSupportedResolutions){

         if(currentWidth<allSupportedResolutions[ii]){
                document.getElementById('stylesheet-'+allSupportedResolutions[ii]).removeAttribute('media');
                break;
         }

        }
    }

}

window.attachEvent('onload', detectAndUseStylesheet);


参考
see more

关于css - 替换@media中的背景图像会弄乱ie9 +中的背景图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25342339/

10-12 21:27