【问题标题】:Safari 5.1 breaks CSS table cell spacingSafari 5.1 打破 CSS 表格单元格间距
【发布时间】:2011-10-21 01:33:51
【问题描述】:

在更新到 Safari 5.1 之前,我的网站在所有主要浏览器上都运行良好。现在,主要导航被破坏了。我在列表元素中的锚元素上使用display:table-cell,并且还使用font-size:0 hack 来删除菜单元素之间的间距。有没有其他人遇到过这个问题并有他们可以提供的解决方案?

之前:

之后:

CSS:

#navigation {
  padding-top: 7px;
}

#navigation ul.links, /* Main menu and secondary menu links */
#navigation .content ul /* Menu block links */ {
  margin: 0;
  padding: 0;
  display: block;
  font-size: 0; /* this is a hack so that the spacing between the menu buttons disappear
                   since they are inline-block elements, this should be unneccessary when
                   CSS3 is approved */
}

#navigation ul.links li, /* A simple method to get navigation links to appear in one line. */
#navigation .content li {
  display: inline-block;
  padding-right: 0;
  padding-left: 0;
  margin: 0;

  /* below is a fix for IE7 to get the main navigation items lined up correctly
   * in one row
   */
  zoom: 1;
  *display: inline;
}
#main-menu ul {
  width: 100%;
}
#main-menu li {
  width: 108px;
  text-align: center;
  padding-bottom: 7px;
  font-size: 11pt;
}
#main-menu a {
  display: table-cell;
  width: inherit;
  text-decoration: none;
  font-size: 0.9em;
  color: #035B9A;
  background-color: white;
  height: 30px;
  vertical-align: middle;
}

HTML:

<div id="navigation">
    <div class="section">
        <h2 class="element-invisible">Main menu</h2>
        <ul id="main-menu" class="links inline clearfix">
            <li class="menu-379 first"><a href="/about-scrubbed">About Us</a></li>
            <li class="menu-401"><a href="/" title="">Research</a></li>
            <li class="menu-385"><a href="/education">Education</a></li>
            <li class="menu-402"><a href="/" title="">Outreach</a></li>
            <li class="menu-403 active-trail active"><a href="/news" title="" class="active-trail active">News &amp; Events</a></li>
            <li class="menu-439"><a href="/people">People</a></li>
            <li class="menu-405"><a href="/" title="">Resources</a></li>
            <li class="menu-406"><a href="/" title="">Publications</a></li>
            <li class="menu-415 last"><a href="/partners">Partners</a></li>
        </ul>
    </div>
</div>

谢谢。

请注意,这是一个 Drupal 7 站点。

此外,我也坦率而谦虚地承认,我在 CSS 标记方面并不是最擅长的。我现在学到了很多东西,只是想勉强度日。

【问题讨论】:

  • 你能发布一个链接到现场网站吗?
  • 不是一个实时站点,它现在是内部开发的,计划于 10 月 1 日发布......真的很抱歉。
  • 但是我确实又解决了我自己的问题。我将列表元素设置为display: block;float: left;,它又开始工作了。我会把它作为答案发布,但 Stack 不会让我 :( 需要得到那个代表!
  • @BoltClock 请立即查看您上面的评论。我必须再等 6 个小时,Stack 才会让我回答我自己的问题,因为我的代表不够高。
  • 哦,对了,我现在明白了。哎呀。

标签: html css safari drupal-7


【解决方案1】:

对于那些在使用 Safari 和设置为 display:table 的元素时遇到问题的人;我能够通过删除填充并将填充添加到设置为 display:table-cell 的子元素来解决我的问题;

当您尝试向设置为 display:table 的元素添加填充时,显然 Safari 不喜欢它。回想起来,这是有道理的。

【讨论】:

  • 谢谢你一千次。这让我发疯了。
【解决方案2】:

通过使列表元素显示为块并将它们浮动到左侧来解决。

#navigation ul.links li, /* A simple method to get navigation links to appear in one line. */
#navigation .content li {
  display: block;
  float: left;
  padding-right: 0;
  padding-left: 0;
  margin: 0;

  /* below is a fix for IE7 to get the main navigation items lined up correctly
   * in one row
   */
  zoom: 1;
  *display: inline;
}

【讨论】:

    【解决方案3】:

    您希望 display:table 元素上的 border-collapse:collapse 删除单元格间距。

    【讨论】:

    • 这是我最初的想法,但在查看我的 CSS 后,我实际上从未有过带有 display: table; 的父元素,所以我不确定将 border-collapse: collapse; 放在哪里。但是,如上所述,我的修复使一切恢复正常。我会把它作为答案发布,但 Stack 会让我再等 7 个小时。
    【解决方案4】:

    我拿了你的css和html,并添加到css中

    body {
        background-color: gray;
    }
    

    我得到了following,看起来是正确的。

    这是在具有 Safari 5.1 的 lion 下运行的

    【讨论】:

    • 嗯,这种变化肯定不会影响布局。也许这是 Windows 上 Safari 5.1 的问题。感谢您检查它。
    猜你喜欢
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    相关资源
    最近更新 更多