【问题标题】:Safari vs Firefox: Strange UL "padding"Safari vs Firefox:奇怪的 UL“填充”
【发布时间】:2012-12-31 09:38:00
【问题描述】:

我有这个 HTML:

<article class="images">
  <ul class="cf">
    <li>
      <a href="#">
        <img src="http://www.placehold.it/800x600" alt="" />
      </a>
    </li>
  </ul>
</article>

还有这个 CSS:

 * {
  margin: 0;
  padding: 0;
}

 .images ul {
  margin-left: -3%;
  width: 100%;
  background: red;
}
.images li {
  list-style-type: none;
}
.images li img {
  width: 17%;
  margin-left: 3%;
  margin-bottom: 3%;
  float: left;
}

不过,在 Safari 中,ul 的右侧似乎有某种填充。
在 Firefox 中,ul 显示正确。

自己看看:http://jsfiddle.net/EdCXx/

有什么办法可以解决吗?

编辑:在 OS X 10.8.2 上使用 Safari 6.0.2,它看起来像这样:

【问题讨论】:

  • 对我来说似乎很好。适用于 Windows 的 Safari 5.1.7
  • @Diodeus 我附上了问题的图片,请参阅我的编辑。
  • 您是否尝试过检查Safari Developer tools 中的元素以查看应用了哪些属性?
  • 在(咳咳)右边,而不是左边。
  • 哈哈,对此没有评论;-) @pwdst 不,我没有,因为可以通过明确的无边距无填充重置来隔离问题。我现在还是看看。

标签: html css firefox safari html-lists


【解决方案1】:

我假设问题是您使用的是否定的 margin,这会导致问题(我目前无法访问 Mac,因此无法验证)。

尝试将您的 CSS 更改为以下内容。我还将您的 clearfix 更改为我不久前收到的一个,它具有出色的跨浏览器结果。

http://jsfiddle.net/EdCXx/4/

CSS:

/* Reset */
* {
    margin: 0;
    padding: 0;
}

/* Clearfix */
.clear:after {
    clear: both;
    content: ".";
    display: block;
    height: 0;
    line-height: 0;
    visibility: hidden;
}

/* Images */
.images ul {
    width: 100%;
    background: red;
}
.images li {
    list-style: none;
    overflow: hidden;
    margin-right: 3%;
    margin-bottom: 3%;
    float: left;
    width: 17%;
    height: 17%;
}
.images li img {
    float: left;
    max-width: 100%;
    max-height: 100%;
}

并收紧你的 HTML(不是必需的,但它更漂亮):

<article class="images">
    <ul class="clear">
        <li> <a href="#"><img src="http://www.placehold.it/800x600" alt="" /></a></li>
        <li><a href="#"><img src="http://www.placehold.it/800x600" alt="" /></a></li>
        <li> <a href="#"><img src="http://www.placehold.it/800x600" alt="" /></a></li>
        <li> <a href="#"><img src="http://www.placehold.it/800x600" alt="" /></a></li>
        <li> <a href="#"><img src="http://www.placehold.it/800x600" alt="" /></a></li>
        <li> <a href="#"><img src="http://www.placehold.it/800x600" alt="" /></a></li>
        <li> <a href="#"><img src="http://www.placehold.it/800x600" alt="" /></a></li>
        <li> <a href="#"><img src="http://www.placehold.it/800x600" alt="" /></a></li>
    </ul>
</article>

【讨论】:

  • 感谢您的回复!关于 HTML:你完全正确,我只是这样写的,因为我认为它会使那里的元素更多。关于 Clearfix:太酷了!关于 CSS:我明白你的意思,但是如何将每行的第一个图像与ul 的左边缘对齐?我认为没有其他办法。
  • 您希望它看起来如何?您不想在所有图像周围均匀间隔?
  • 我确实希望在所有图像周围均匀间隔,每行中的第一个图像需要删除 margin-left 以与 ul 对齐,因此与所有其他元素对齐。现在,看起来图像是缩进的,但我希望img 排成一行。看到这两个小提琴:jsfiddle.net/EdCXx/2 vs jsfiddle.net/EdCXx/3
  • 你会使用 HTML5 吗?我通常使用第一个子伪元素来删除边距。
  • 或者在你的情况下,因为有 5 行,我认为你会使用 :nth-child(5n+1)。
猜你喜欢
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 2017-08-03
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 2015-03-20
  • 1970-01-01
相关资源
最近更新 更多