【问题标题】:IE7 CSS Horizontal Menu - Li's seem to be nesting within each otherIE7 CSS 水平菜单 - Li 似乎相互嵌套
【发布时间】:2014-01-14 14:30:58
【问题描述】:

我知道这个 IE 问题会一次又一次地出现,但我整个上午都在寻找答案,但似乎没有任何帮助。

我的水平导航菜单似乎在除 IE7 之外的所有浏览器中都能完美呈现。我认为问题可能与我的列表没有宽度有关(但我不想要宽度,我希望它是自动的,具体取决于文本的长度),或者 li 似乎位于每个列表中其他并继续应用 14px padding-top。我不知道他们为什么坐在彼此里面,因为我的 li 都有结束标签和 float:left;

这是我的代码..

<div id="navig">
    <ul>
        <li class="navig-left"></li>
        <li class="home"><b>Home</b></li>
        <li><a class="tabs" href="about.html">About Us</a></li>
        <li><a class="tabs" href="services.html">Services</a></li>
        <li><a class="tabs" href="personal-injury-panel.html">Personal Injury Panel</a></li>
        <li><a class="tabs" href="client-testimonials.html">Client Testimonials</a></li>
        <li><a class="tabs" href="contact.html">Contact Us</a></li>
        <li><a class="tabs" href="careers.html">Careers</a></li>
        <li><a class="tabs" href="affiliates.html">Affiliates</a></li>
        <li class="navig-right"></li>
    </ul>
</div>

<div class="clr"></div>



#navig { width:960px; height:46px; background:url(images/navig_bkgrnd.png); }
#navig ul { list-style-type:none; height:46px; width:960px; }
#navig ul li.active { float:left; height:32px; text-align:center; display:block; padding:14px 21.3px 0; background:url(images/navig_hover.gif) repeat-x; color:#000000; font-weight:200; font-size:14px; font-style:normal; }
#navig ul li.home { float:left; height:32px; text-align:center; display:block; padding:14px 21.3px 0; color:#ffffff; font-weight:200; font-size:14px; }
#navig ul li a.tabs { float:left; height:32px; text-align:center; display:block; padding:14px 21.3px 0; text-decoration:none; color:#FFFFFF; font-weight:200; font-size:14px; font-style:normal; }
#navig ul li a:hover { display:block; text-decoration:none; height:32px; font-family:Arial, Helvetica, sans-serif; color:#000000; font-weight:200; font-size:14px; font-style:normal; background:url(images/navig_hover.gif) repeat-x; }
.navig-left { float:left; width:23px; height:46px; background:url(images/navig_left.png); }
.navig-right { float:left; width:23px; height:46px; background:url(images/navig_right.png); } 

【问题讨论】:

  • 在我测试你的代码快速 cmets 时:list-style-type:none; 应该在 li 上声明,而不是 ul,这会带来问题。还有:为什么你的afloat:left; 而你从来没有在你的css 中定位你正常的li,只是导航、主页和活动的。解决这些问题,您可能会很清楚......
  • 谢谢!那是因为我没有给我正常的li留下浮动,我也改变了你提到的其他几件事,下次吸取教训,谢谢你的帮助:)

标签: html css internet-explorer-7 html-lists internet-explorer-6


【解决方案1】:

尝试添加以下 CSS 规则,以便所有 li 项目浮动(因为您使用的是浮动方法):

#navig ul li {float:left;}

查看您的样式表,您实际上并未将float:left 应用于菜单中的所有列表项,只有li.activeli.home。其他浏览器似乎可以处理它,但 IE 不喜欢它。

jsFiddle(请注意,我必须修改一些颜色才能使其正常工作,因为您在我们无法访问的背景图像上使用白色文本 - 出于测试目的而导致白底白字。)

我在 IE 7/8/9、FF 和 Chrome 中测试了这个小提琴。现在始终如一地工作。

【讨论】:

  • 太棒了!!非常感谢你,不敢相信它是如此简单,但有时你离得太近而看不到它,所有的眼睛都盯着代码看!再次感谢:)
  • @smolkenthin 很高兴它解决了这个问题。如果您认为这是合适的解决方案,请记得点赞并标记为答案。
【解决方案2】:

您可以强制 IE7 呈现为 ie8,并将其添加到页面头部。

<meta http-equiv="X-UA-Compatible" content="EDGE" /> 

【讨论】:

  • 如何强制浏览器呈现比它自己更新的版本?加上 content="edge" 强制所有 IE 版本呈现为可能的最新版本,这实际上不推荐我的 MS。
  • 直接来自 MS:由于边缘模式文档使用用于查看它们的 Internet Explorer 版本可用的最高模式显示网页,因此建议您仅将此文档模式用于测试目的。请勿将其用于生产用途。 msdn.microsoft.com/en-us/library/ie/cc288325%28v=vs.85%29.aspx
  • @KP 我亲爱的朋友,我在我的几个应用程序中都使用了它,它工作得很好,如果你有更好的想法,你可以写它,但不要询问其他参与者他们的反应;)
  • 大声笑你是认真的吗?这里的每个人都有权提出问题或讨论答案。这就是这个网站的目的。如果其他参与者认为您的回答有缺陷,请不要让他们闭嘴,他们有权发表评论。顺便说一句,我已经用你所说的“更好的主意”回答了这个问题。干杯我亲爱的朋友。
  • -1 只是同意 KP。目标是支持尚未升级浏览器的用户。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
  • 2011-04-25
  • 2011-06-11
相关资源
最近更新 更多