将绝对定位的div与空格中心对齐:nowrap

时间:2015-10-23 05:44:26

标签: css

我正在处理一些输出代码中的图像标题,我无法改变,但必须使用CSS进行样式处理,并且我很难将带有标题的div放在中心。

下面的片段显示了我的困境。句子的中点应与容器的中点对齐(在此示例中,它将表示T形状)。

#container{
  width: 50px;
  height: 200px;
  background-color: grey;
  margin-left: 300px;
  position: relative;
}
#sentence{
  white-space: nowrap;
  background-color: lightblue;
  position: absolute;

}
<div id="container">
  <div id="sentence">
    This is a sentence that stretched on a bit
  </div>
</div>

有没有办法单独用CSS实现这个目标?

我试过了:

#container{
  width: 50px;
  height: 200px;
  background-color: grey;
  margin-left: 300px;
  position: relative;
}
#sentence{
  white-space: nowrap;
  background-color: lightblue;
  position: absolute;
  left: -50%;
  right:-50%;
}
<div id="container">
  <div id="sentence">
    This is a sentence that stretched on a bit
  </div>
</div>

但是,如果没有nowrap,句子div会重新调整大小。

2 个答案:

答案 0 :(得分:0)

如果你知道身体(或外部容器元素)的宽度,你可以在text-align:center上设置#sentence,然后给它一个负左边距= body / 2 - #container / 2 :

&#13;
&#13;
#container{
  width: 50px;
  height: 200px;
  background-color: grey;
  margin-left: 300px;
  position: relative;
}
#sentence{
  width:500px;
  white-space: nowrap;
  background-color: lightblue;
  position: absolute;
  text-align:center;
  left: -225px;

}
&#13;
<div id="container">
  <div id="sentence">
    This is a sentence that stretched on a bit
  </div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

使用绝对值可能有点棘手,尤其是当您不知道宽度时。

如果我正确理解您的问题,您希望将文本置于图像中心。

所以,而不是与

一起去
<div id="container">
  <div id="sentence">
    This is a sentence that stretched on a bit
  </div>
</div>

我用,

<div id="container">
    <div id="img-container"></div>
    <div id="sentence">This is a sentence that stretched on a bit</div>
</div>

所以,现在我可以定位子元素(至少这个例子)

我的css看起来像这样。

#container{
    text-align: center;
    width: 50%;
    position: relative;
    border: 1px solid #eee;
}
#img-container {
    width: 50px;
    height: 200px;
    background-color: grey;
    display: inline-block;
}
#sentence {
    width: 100%;
    text-align: center;
    white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden;
    background-color: lightblue;
    position: absolute;
    top : 0;
}

我希望这就是你要找的东西。

JSFiddle