【问题标题】:Navigation bar cross browser compatibility导航栏跨浏览器兼容性
【发布时间】:2014-05-27 11:35:19
【问题描述】:

我遇到了跨浏览器代码的问题。

我在页面顶部添加了一个浮动导航栏,代码如下:

    <header id="page-header" class="content-info" role="contentinfo">
        <!-- Nav -->
        <nav id="nav">
            <ul>
                <li><a href="1.html">1</a></li>
                <li><span>2</span>
                    <ul>
                        <li><a href="2.1.html">2.1</a></li>
                        <li><a href="2.2.html">2.2</a></li>
                        <li><a href="2.3.html">2.3</a></li>
                        <li><a href="2.4.html">2.4</a></li>
                    </ul></li>
                <li><a href="3.html">3</a></li>
                <li><a href="4.html">4</a></li>
                <li><a href="5.html">5</a></li>
            </ul>
        </nav>
    </header>

使用下一个 css 代码:

header#page-header {
z-index: 9999;
position: fixed;
height: 40px;
line-height: 40px;
top: 0;
right: 0;
background: white;
text-align: center;
width: 100%;
border-top: 1px solid rgba(0,0,0,0.2);
margin-top: 0;
margin-bottom: 2px;
color: #5b5b5b;
display: inline-table;
}

它可以在除 IE 之外的所有浏览器上完美运行。导航菜单不显示,这是因为参数“right: 0;”。我曾尝试删除此参数,但在 Chrome 和 Safari 浏览器上,菜单移动到页面右侧的一半。

我尝试为所有浏览器创建样式,但 IE 如下所示:

<!--[if !IE]>< -->
<link rel="stylesheet" type="text/css" href="css/xbrowser.css" />
<!-- ><![endif]-->

xbrowser.css 文件包含:

header#page-header {
right: 0;
}

我已确保删除参数“right: 0;”从主css文件。这不起作用,因为 IE 仍然可以识别我告诉它忽略的 css 文件。

有人可以建议一种解决方法,让此功能在所有浏览器(即 Chrome、Safari、Opera、Mozilla 和 IE)上都能正常工作吗?

提前致谢

【问题讨论】:

  • 在此处查看示例 quirksmode.org/css/condcom.html 看起来您的评论周围的括号是错误的
  • 对导航栏本身的问题有什么建议吗?
  • @MatthewLock 我尝试了不同的括号,因为许多网站建议不同,但没有任何效果。
  • 把它放在jsfiddle中,这样我们就可以看到它全部运行了。

标签: html css internet-explorer cross-browser navigationbar


【解决方案1】:

您需要更改您的条件注释,目前所有浏览器仍然可以阅读:

<!--[if ie]>
    Stuff. Only IE will read what's in here (up till IE 10)
<![end if]-->

在大多数情况下,需要特殊处理的是 IE!这是IE conditional comments 的一个很好的指南,它们非常方便。

至于导航栏问题,只要您的 IE-only CSS 出现在 主 css 文件之后,您需要做的就是覆盖有问题的属性,在您的情况下,right:0;

如果它似乎仍然无法正常工作,我发现自行测试条件 cmets 以确保它们在消除该想法之前正常工作会有所帮助。尝试在您的 HTML 页面上清楚地显示这样的内容:

<!--[if ie]>
    <h1>Conditional comments working in IE!</h1>
<!--[end if]>

【讨论】:

  • @yury,您是否尝试过明显的测试来确保条件 cmets 确实有效?我改变了我的答案以包括一个。如果您添加它并在 IE 中查看标题,那么您知道问题可能出在 CSS...
  • 您的nav 绝对定位在父容器内,这将与包装器的position:fixed 冲突
  • 为什么会冲突?导航的位置设置为绝对,它只是覆盖。
  • 当我出于某种原因在 IE9 中检查它时似乎出现了这种情况。 IE9 上的开发者控制台不是很友好,但是当我关闭它时,导航栏又变得可见了。应用position:absolute 确实会覆盖包装器继承的position:fixed,使其变得不必要。为什么像这样放置包装器只是为了删除带有position:absolute 的内容?
  • 您的评论让我想到了正确的方向,我已经为导航重新编写了一些代码,删除了更高的元素并将导航与标题分开。现在可以了。谢谢
猜你喜欢
  • 2012-08-05
  • 1970-01-01
  • 2012-08-09
  • 2011-06-07
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多