【问题标题】:How do you dynamically center a div inside another div element relative to content?你如何在另一个 div 元素中相对于内容动态地将 div 居中?
【发布时间】:2013-12-27 21:27:34
【问题描述】:

我目前正在尝试在另一个 div 内专门定位多个 div,而该 div 本身以另一个 div 为中心。

从视觉角度了解我正在尝试做的事情:

我有一个具有特定高度和宽度的父 div。该 div 元素内部应该是另一个居中的 div(白色边框)。同样,该 div 内部应该是一些特定定位(绿色)的 div。绿色 div 应由 javascript 函数创建和附加。

现在,当我将绿色 div 放入其中时,我希望居中 div 的高度和宽度动态变化。

我当前的代码是:

HTML:

<div id="grandparent">
    <div id="parent">
        <!-- <div class="child"></div> -->
        <!-- <div class="child"></div> -->
        <!-- <div class="child"></div> -->
        <!-- <div class="child"></div> --> (commented because they're not yet in there)
    </div>
</div>

CSS:

#grandparent{
    height: 130px;
    width: 145px;
    background-color: #000000;
    border: 3px solid #00ffff;
    display: table;
}

#parent{
    display: table-cell;
    vertical-align: middle;
}

.child{
    height: 23px;
    width: 23px;
    float: left;
}

javascript:

for(var i = 0; i < number; i++){
    var top = ...
    var left = ...
    var child = $("<div class='child'></div>");
    child.css("top", top);
    child.css("left", left);
    $("#parent").append(child)
}

到目前为止,我的内容基于本指南: http://www.vanseodesign.com/css/vertical-centering/

如何根据内容改变 div 的大小? 如果您更改此内容,那么 div 会保持居中吗?

【问题讨论】:

  • 是否需要将显示设置为tabletable-cell,或者您只是为了达到效果而这样做?
  • 我只是为了实现垂直定位而这样做

标签: javascript css html layout


【解决方案1】:

如果我知道你不需要任何 JS 来将 div 居中,只需使用 inline-block:

#parent{
  display: table-cell;
  vertical-align: middle;
  text-align:center; /*Add this*/
}

.child{
  height: 23px;
  width: 23px;
  /*float: left; Remove this*/
  display:inline-block; /*Add this*/
}

编辑

根据您的图片,您可能需要一个额外的 div:

 <div id="grandparent">
  <div id="parent">
   <div class="border">
     <div class="child"></div>
        ....

查看完整演示http://jsfiddle.net/R9YGb/10/

【讨论】:

  • 我不想使用 JS 将 div 居中放在里面,而是专门定位它们。但是,是的,如果我用你的建议替换它,我不需要浮动。
  • 这确实很有用!但是现在有没有办法自定义边框元素内绿色 div 的位置?
  • @Joliver 基于什么?或者尝试提出另一个问题以使这个更清洁并且不要扩展。我认为这个问题的主要问题是解决了增加尺寸和居中元素。
猜你喜欢
  • 2013-07-08
  • 2019-04-10
  • 1970-01-01
  • 2017-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-31
  • 2016-04-16
相关资源
最近更新 更多