【问题标题】:Horizontally center div with variable dimensions within container容器内具有可变尺寸的水平居中 div
【发布时间】:2012-12-08 13:23:15
【问题描述】:

我有一个尺寸可变的 div,我需要在其容器内动态水平居中。这是当前的结构...

<div class="outer">
    <div class="inner">Sample</div>
</div>

...“内部” div 的高度和宽度取决于其内容,它需要在“外部” div 内水平居中(左右两侧的空间相等),它可能有也可能没有固定的尺寸(所以“内部”可能在“外部”div的宽度内,或者它可能会溢出,但总是居中)。以下是我目前拥有的样式...

.outer {
    width: 10px;
    margin: 0 auto;
    position: relative;
}
.inner {
    position: absolute;
    bottom: 0;
}

...“外部”的属性可以很好地将其居中,但“内部”的属性使其与“外部”div 的左边缘对齐。

我尝试了一些带有负边距和左/右值的“内部”选项,但它们似乎依赖于固定的像素值,而我需要它的尺寸相对于其内容保持可变。

需要注意的是,“内部”div 需要绝对定位,因为即使“外部”的高度为比内部短。

这是一个运行示例:http://jsfiddle.net/bVC3J/

有人对我如何在不使用 JS 的情况下实现这一点有任何想法吗?如果没有 CSS 解决方案,我对 JS 持开放态度,所以欢迎您作为最后的手段提出建议。谢谢。

【问题讨论】:

  • 我不认为只用 CSS 就可以完成,但我不是 CSS 专家,这是你的一些 JS jsfiddle.net/bVC3J/1。我会密切关注这个,看看你是否有任何可行的 CSS 解决方案。
  • @Dampsquid 谢谢,这是一个理想的 JS 解决方案。如果 CSS 前面的所有其他方法都失败了,我会继续这样做。不过,仍然坚持寻找可能的非 JS 解决方案。再次感谢!

标签: css center css-position centering


【解决方案1】:

这可能适合你:http://jsfiddle.net/fF3A4/1/

.outer {
    width:300px;
    height:300px;
    display:table-cell;
    background:#333;
    vertical-align:bottom;
    text-align:center;
}
.inner {
    width:200px;
    margin:0 auto;
    background:#ccc;
    display:inline-block;
}

【讨论】:

  • 正如我在 OP 中指定的,“内部”div 不能具有固定宽度。对于这种情况,我已经有了一个解决方案,不需要将容器显示为表格单元格或自动左/右页边距。但是,我需要“内部”div 的宽度是可变的(没有固定的像素/百分比/em 值)。谢谢。
  • 嗨,我知道你说 ity 应该是可变的,而在你的 live poage 中它显然是可变的 - 但在我的例子中,我必须给它一个宽度才能让它工作。即使你说它是可变的,我假设它会被动态地赋予宽度?
  • 不,它根本不会被赋予固定的宽度。它的宽度将保持可变并相对于其中的内容扩展/收缩。我只需要一个适用于该场景的解决方案。谢谢。
  • 我已经修改了上面的代码和我的 jsfiddle 链接,希望能满足您的要求。
  • 对不起,另一个要求是“内部” div 是绝对定位的,以便当“外部”的宽度低于“内”。谢谢。
猜你喜欢
  • 1970-01-01
  • 2010-11-21
  • 1970-01-01
  • 2014-07-17
  • 1970-01-01
  • 2015-09-16
  • 2019-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多