【问题标题】:in a css three column setup using the float:left how do I horizontally centre an image inside each column在使用 float:left 的 css 三列设置中,我如何在每列内水平居中图像
【发布时间】:2013-03-22 01:53:12
【问题描述】:

我已经浏览了这里的帖子,但似乎找不到想要工作的解决方案,我想知道我的 float:left 标签是否导致了问题。

基本上我有 wordpress 博客,我现在正在尝试使用 nextgen 画廊设置我想要做的事情,我需要修改它显示图像列表的方式。分为三个部分。在列中将每个图像居中。现在我已经使用以下代码进行了设置,该代码在其非常基本的下方创建了三个很好的列,但它在这里不起作用我假设我可以使用 margin:0 auto;但这不起作用。

http://jsfiddle.net/locka/dcdkf/

HTML

<div id="wrapper">
<div id="column-left">
<p>LEFT </p>
  <img src="http://t2.gstatic.com/images?q=tbn:ANd9GcQtZTDwx3wVJMqWWTlCW8BDZ7fPvQVbRZpILy0NAeHIGaRxcRtR">
</div>
<div id="column-center">
    <p>MIDDLE </p>
    <img src="http://t3.gstatic.com/images?q=tbn:ANd9GcTCgQRoPbKR8WpHtPZfBiPKK6NaNN3vyWqLarsKDDb0zLWd0AID"></p>
   </div>
<div id="column-right">
    <p>RIGHT </p>
   <img src="http://t0.gstatic.com/images?q=tbn:ANd9GcScF65ryaqzfG9gpVrld1CLJ7_5wJOpmH96FRvB4TvnkFaqyloh">
</div>

CSS

* {
margin: 0;
padding: 0;
}

#wrapper {
width: 980px;
background: silver;
margin: 0 auto;
}

#column-left {
width: 280px;
float: left;
background: red;
}

#column-center {
width: 420px;
float: left;
background: GREEN;
margin: 0 auto;

}

#column-right {
width: 280px;
float: left;
background: BLUE;
}

我基本上需要连续有 3 张图像,这些图像可能是 2 尺寸,横向或纵向,高度相同但宽度不同,我需要将每张图像在其列中居中。左列和右列将与最宽的图像相同,就像风景照片一样,它们看起来总是左右对齐,并且如果肖像出现在列的中心,则它们将始终居中。然后中心列将占据其余空间,这将使所有图像居中,从而使左右边框相等。并让它们整洁。

我可以在网络上看起来很正常的内容之后设置列,因为我可能无法将图像居中。

【问题讨论】:

  • 图片默认是内联元素,所以这很自然。我认为您不必将它们包装在段落标签中以使其尊重文本对齐?
  • 刚刚脑电波并能够在测试代码上做到这一点,但没有做 text-align:centre 并将图像包装在

    段落标记中。然而,这在我的网站上不起作用,所以不确定这是一个修复。如果它在哪里工作是最好的方法,它似乎有点奇怪,因为它不是文本。

  • 抱歉,彼得刚刚重新发布了我的第二个 cmets,因为在我的网站上测试后它不起作用。你是说我应该能够只使用文本对齐来对齐图像,我确定我之前测试过这个,但它没有用。我的网站还没有上线,所以我无法显示它在做什么,我的 wamp 服务器中的代码有很多 php 和其他东西,几乎没有要发布的东西,但它或多或少是我发布的图像以外的内容包含 div 标签。但是我已经删除了大多数要测试的所有格式
  • 我明白了。我添加了一个答案,希望能澄清问题并解决您的问题。

标签: css css-float center


【解决方案1】:

默认情况下,图像是内联元素,因此会遵守其父级的text-align CSS 规则。由于 text-align 在您的情况下不起作用,这一定意味着您的图像不再是内联元素。可能在您的 CSS 中某处有一个 img { display: block }

这意味着margin: 0 auto 应该可以解决问题。问题是您将该样式应用于 img 的容器而不是 img 本身。

所以,而不是

#column-center {
  width: 420px;
  float: left;
  background: GREEN;
  margin: 0 auto;
}

使用

#column-center {
  width: 420px;
  float: left;
  background: GREEN;
}

#column-center img {
  margin: 0 auto;
}

【讨论】:

  • peter 感谢它设法让它与 text-align:centre 一起工作,尽管我正在学习负载,所以很高兴了解我哪里出错了。
【解决方案2】:

如您所说,使用text-align: center; 将列的所有内容居中。如果您不希望列的其余内容居中,则可能需要使用此属性将图像包装在 div 中。

【讨论】:

  • 是的,一旦我决定撕掉所有 div 标签并将它们一一放回去,它就起作用了。一个是导致问题的原因,但我不知道为什么。这就是您修改插件作者和不断改变主意的开发人员设置的模板的结果。
猜你喜欢
  • 1970-01-01
  • 2021-05-27
  • 1970-01-01
  • 2016-04-12
  • 2012-06-14
  • 2011-10-08
  • 2017-02-26
  • 1970-01-01
  • 2012-07-03
相关资源
最近更新 更多