web-dev-qa-db-ja.com

絶対に配置されたDivの中央揃え

div#thing {
  position: absolute;
  top: 0px;
  z-index: 2;
  margin: 0 auto;
}

<div id="thing">
   <p>text text text with no fixed size, variable font</p>
</div>

Divは最上部にありますが、<center>またはmargin: 0 autoで中央に配置できません。

88
Steve

次のようにdivに固定幅を指定すると、問題が解決する場合があります。

div#thing {
    position: absolute;
    top: 0px;
    z-index: 2;
    width:400px;
    margin-left:-200px;
    left:50%;
}
147
JacobE
div#thing
{
    position: absolute;
    width:400px;
    right: 0;
    left: 0;
    margin: auto;
}
96

私はパーティーに遅れていることは知っていますが、正確な幅がわからないときに絶対アイテムを水平に配置する必要がある人のためにここで答えを提供すると思いました。

これを試して:

// Horizontal example.
div#thing {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
}

次のようにプロパティを調整するだけで、垂直方向の配置が必要な場合にも同じ手法を適用できます。

// Vertical example.
div#thing {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}
32

垂直と水平の両方に中央揃えするには、次の操作を行います。

div#thing {
   position: absolute;
   left: 50%;
   top: 50%;
   transform: translate(-50%, -50%);
}
1
Armin

相対幅(パーセンテージ)が必要な場合は、絶対位置にdivをラップできます。

div#wrapper {
    position: absolute;
    width: 100%;
    text-align: center;
}

要素を絶対に配置するには、親要素を相対的に配置する必要があることに注意してください。

0
dalvallana

私は同じ問題を抱えていましたが、私の制限は幅を事前に定義できないことでした。要素の幅が固定されていない場合は、これを試してください

div#thing 
{ 
  position: absolute; 
  top: 0px; 
  z-index: 2; 
  left:0;
  right:0;
 }

div#thing-body
{
  text-align:center;
}

次に、htmlを次のように変更します

<div id="thing">
 <div id="thing-child">
  <p>text text text with no fixed size, variable font</p>
 </div>
</div>
0
Usman Shaukat