【问题标题】:horizontally aligning multiple divs (CSS) [duplicate]水平对齐多个div(CSS)[重复]
【发布时间】:2015-02-20 14:12:34
【问题描述】:

我需要对齐这些divs,以便“content1”和红色div之间的空间等于“content4”和红色div之间的空间。 我不介意更改 blue-div 的边距,但这应该适用于任何宽度。

我曾经通过使 4 个蓝色 divs 的宽度 + 它们的左右边距 = 100% 来实现这一点,但在这种情况下似乎效果不佳。

我还尝试在包含所有蓝色divs 的红色中添加另一个div 并给它margin: 0 auto,但这也不起作用。

Code in jsfiddle (updated)

PS:如果我不够清楚,请随时编辑我的问题。

【问题讨论】:

  • 我们可以调整什么?宽度或边距是否可调?你有一个预期结果应该是什么的形象吗?
  • @Paulie_D 您可以调整 blue-div 的边距,但不能调整宽度。他们会有一张图片,但我可以稍后处理。

标签: html css alignment


【解决方案1】:

您可以使用令人难以置信的属性 box-sizing:border-box;所有现代浏览器都支持,包括 IE8! 并在 % 上设置宽度和边距:

.red, .blue {
    -moz-box-sizing:    border-box;
    -webkit-box-sizing: border-box;
    box-sizing:        border-box;
}

.red {
    width:650px;
    height:1000px;
    background:red;
    padding: 1% 0 0 1%; // Space top and left of red
}

.blue {
    height:200px;
    width: 24%;
    background:blue;
    display:inline-block;
    float: left;
    margin: 0 1% 1% 0; // Space bottom and right of each blue
}

http://jsfiddle.net/Pik_at/L7qpgdkk/3/

【讨论】:

  • 谢谢!但是overflow: hidden 是干什么用的?
  • 是的!在这种情况下我们不需要它,我要编辑
  • 作为上述内容的扩展,我尝试将文本“Content1”、“Content2”居中放置在各自的蓝色框中,但没有成功。我该怎么做?
【解决方案2】:

嗯,很简单。看看这个

HTML

<div class="red">
    <div class="blue"><div>content1</div></div>
    <div class="blue"><div>content2</div></div>
    <div class="blue"><div>content3</div></div>
    <div class="blue"><div>content4</div></div>
    <div class="blue"><div>content5</div></div>
    <div class="blue"><div>content6</div></div>
</div>

CSS

.red {
    width:680px;
    height:1000px;
    background:red;
}

.blue {
    width: 25%;
    display:inline-block;
    margin-right: -4px;
    box-sizing: border-box;
    padding: 1%;
}

.blue > div {
    background:blue;
    height:200px;
}

Fiddle this.

【讨论】:

  • 但即使蓝色 div 的宽度不是 20% 或 25%,结果也必须有效
  • 在这种情况下,blue-div: width = 100% / (Numbers of blue-div) .
【解决方案3】:

你的计算是错误的:(20% * 4) + (1% * 4) = 88%。

您必须将上边距/左边距设置为 4%,因此宽度将为:80% + (5 * 4%) = 100%。

还添加了font-size: 0 以纠正inline-block 的空白间距问题。

.blue {
    margin: 4% 0 0 4%;
}

小提琴:http://jsfiddle.net/L7qpgdkk/1/

参考:Fighting the Space Between Inline Block Elements

【讨论】:

  • 右侧的边距仍然较小
  • 在我身边工作得很好。
  • 我不知道为什么它在右边显示更多,在我这边.. 但我同意这是一个很好的解决方案
  • @emmanuel 我知道总和不等于 100%,这就是为什么我说我曾经那样做。 font-size:0 会很有用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
  • 1970-01-01
  • 2020-10-21
  • 1970-01-01
  • 2019-08-25
  • 2013-04-16
相关资源
最近更新 更多