div
(position:absolute;
)要素をウィンドウの中央に配置する必要があります。しかし、幅が不明なため、問題が発生しています。
私はこれを試しました。ただし、幅は反応するため、調整する必要があります。
.center {
left: 50%;
bottom:5px;
}
何か案は?
div
(position:absolute;
)要素をウィンドウの中央に配置する必要があります。しかし、幅が不明なため、問題が発生しています。
私はこれを試しました。ただし、幅は反応するため、調整する必要があります。
.center {
left: 50%;
bottom:5px;
}
何か案は?
回答:
<body>
<div style="position: absolute; left: 50%;">
<div style="position: relative; left: -50%; border: dotted red 1px;">
I am some centered shrink-to-fit content! <br />
tum te tum
</div>
</div>
</body>
position: fixed
ですが、オーバーレイの高さがわからない場合、オーバーレイのスクロールバーを実装する必要があります
<html>
ます。ただし、<html>
要素にはheight
指定がないため、ドキュメント内のすべてのコンテンツの高さを取得します。これは、コンテンツのみが完全に配置されている(コンテンツフローから取り出されている)ため、何もありません。要素に追加するheight: 100%
と、<html>
これに違いが生じます。
これは私にとってはうまくいきます:
#content {
position: absolute;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
width: 100px; /* Need a specific value to work */
}
<body>
<div>
<div id="content">
I'm the content
</div>
</div>
</body>
width
これを機能させるには、特定の値に設定する必要があります。auto
そして100%
要素をセンタリングしません。display: block;
必見です。position: absolute;
必須ではありません。すべての値が機能します。親要素position
は以外に設定する必要がありstatic
ます。設定left
とright
することが0
不要です。margin-left: auto; margin-right: auto;
仕事をします。
IE8以下をサポートする必要がない場合のレスポンシブデザインや一般的な不明な寸法に対する優れたソリューションを次に示します。
.centered-axis-x {
position: absolute;
left: 50%;
transform: translate(-50%, 0);
}
手がかりは、それleft: 50%
はtranslate
変換が要素の幅/高さに関連している間、それが親に関連していることです。
このようにして、完全に中央に配置された要素があり、子と親の両方で幅が柔軟になります。ボーナス:これは、子供が親よりも大きい場合でも機能します。
これを垂直方向に中央に配置することもできます(ここでも、親と子の幅と高さは完全に柔軟です(および/または不明)。)
.centered-axis-xy {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
}
transform
ベンダーのプレフィックスも必要になる場合があることに注意してください。例えば-webkit-transform: translate(-50%,-50%);
webkit-
私が提案したように、接頭辞を付けて試してください。
transform: translate
position: fixed
子供には使えなくなるようです。この場合、受け入れられた回答の方が効果的です。
本当にいい投稿..誰かが単一のdivタグでそれをしたいのなら、ここに出て追加したいだけです:
width
として取る900px
。
#styleName {
position: absolute;
left: 50%;
width: 900px;
margin-left: -450px;
}
この場合、width
事前に知っておく必要があります。
"because the width is unknown"
...これは質問の答えにはなりません
絶対中心
HTML:
<div class="parent">
<div class="child">
<!-- content -->
</div>
</div>
CSS:
.parent {
position: relative;
}
.child {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: auto;
}
デモ: http : //jsbin.com/rexuk/2/
Google Chrome、Firefox、IE8でテスト済み
お役に立てれば :)
垂直と水平のこの作品
#myContent{
position: absolute;
left: 0;
right: 0;
top:0;
bottom:0;
margin: auto;
}
要素の親を中心にしたい場合は、親の相対位置を設定します
#parentElement{
position:relative
}
編集:
垂直中央揃えでは、要素に高さを設定します。@Raulに感謝
要素を親の中心にしたい場合は、親の位置を相対に設定します
解決策を検索すると、上記の回答が得られ、コンテンツをMatthias Weilerの回答に集中させることができますが、text-alignを使用できます。
#content{
position:absolute;
left:0;
right:0;
text-align: center;
}
ChromeとFirefoxで動作しました。
水平方向と垂直方向にも中央揃えする必要がある場合:
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
** 応答性の高いソリューション **
divの要素を想定すると、別のdivです...
このソリューションは正常に動作します
<div class="container">
<div class="center"></div>
</div>
容器は任意のサイズであってもよい(相対位置でなければなりません)
.container {
position: relative;/*important*/
width: 200px;/*any width*/
height: 200px;/*any height*/
background: red;
}
要素(div)は任意のサイズにすることもできます(コンテナよりも小さくなければなりません)
.center {
position: absolute;/*important*/
top: 50%;/*position Y halfway in*/
left: 50%;/*position X halfway in*/
transform: translate(-50%,-50%);/*move it halfway back(x,y)*/
width: 100px;/*any width*/
height: 100px;/*any height*/
background: blue;
}
結果は次のようになります。コードスニペットを実行する
.container {
position: relative;
width: 200px;
height: 200px;
background: red;
}
.center {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
width: 100px;
height: 100px;
background: blue;
}
<div class="container">
<div class="center"></div>
</div>
とても役に立った
これは他の答えの組み合わせであり、私たちにとってはうまくいきました:
.el {
position: absolute;
top: 50%;
margin: auto;
transform: translate(-50%, -50%);
}
この質問にはすでにいくつかの回答があることを理解していますが、ほとんどすべてのクラスで機能する、意味のあるエレガントな解決策を見つけたことがありません。
.container {
position: relative;
}
.container .cat-link {
position: absolute;
left: 50%;
top: 50%;
transform: translate3d(-50%,-50%,0);
z-index: 100;
text-transform: uppercase; /* Forces CSS to treat this as text, not a texture, so no more blurry bugs */
background-color: white;
}
.color-block {
height: 250px;
width: 100%;
background-color: green;
}
<div class="container">
<a class="cat-link" href="">Category</a>
<div class="color-block"></div>
</div>
これが言うことは、a top: 50%
とaを与えleft: 50%
、X / Y軸の両方で-50%
値を変換(スペースを作成)することです。つまり、「ミラースペースを作成する」という意味です。
そのため、これはdivの4つのポイントすべてに等しいスペースを作成します。これは常にボックスです(4つの側面があります)。
この意志:
translate(-50%,-50%);
か?
コンテナ要素の中央に配置したい絶対配置要素のランダムな未知の幅で機能します。
<div class="container">
<div class="box">
<img src="https://picsum.photos/200/300/?random" alt="">
</div>
</div>
.container {
position: relative;
width: 100%;
}
.box {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: flex;
justify-content: center;
align-items: center;
}
display: -webkit-flex;
か?
私の知る限り、これを未知の幅で達成することは不可能です。
あなたは-それがあなたのシナリオでうまくいくなら-幅と高さ100%の目に見えない要素を絶対的に配置し、マージンを使用して要素をそこに中央揃えにすることができます:autoとおそらく垂直方向の配置。それ以外の場合は、Javascriptが必要になります。
@bobinceの答えに付け加えたいのですが:
<body>
<div style="position: absolute; left: 50%;">
<div style="position: relative; left: -50%; border: dotted red 1px;">
I am some centered shrink-to-fit content! <br />
tum te tum
</div>
</div>
</body>
改善:///これにより、水平スクロールバーが中央のdivの大きな要素で表示されなくなります。
<body>
<div style="width:100%; position: absolute; overflow:hidden;">
<div style="position:fixed; left: 50%;">
<div style="position: relative; left: -50%; border: dotted red 1px;">
I am some centered shrink-to-fit content! <br />
tum te tum
</div>
</div>
</div>
</body>
これを行うのに役立つjQueryプラグインを次に示します。ここで見つかりました。純粋にCSSでそれが可能だとは思わない
/**
* @author: Suissa
* @name: Absolute Center
* @date: 2007-10-09
*/
jQuery.fn.center = function() {
return this.each(function(){
var el = $(this);
var h = el.height();
var w = el.width();
var w_box = $(window).width();
var h_box = $(window).height();
var w_total = (w_box - w)/2; //400
var h_total = (h_box - h)/2;
var css = {"position": 'absolute', "left": w_total+"px", "top":
h_total+"px"};
el.css(css)
});
};
上記のレスポンシブソリューションのsass / compassバージョン:
#content {
position: absolute;
left: 50%;
top: 50%;
@include vendor(transform, translate(-50%, -50%));
}
transform: translate(-50%, -50%)
Webkitブラウザを使用して、OS Xでテキストやその他すべてのコンテンツをぼやけさせます。keithclark.co.uk/articles/gpu-text-rendering-in-webkit
-webkit-font-smoothing: antialiased;
私があなたが投稿した記事からそれを収集したあなたが好きなタイプのアンチエイリアスを使用してください!
これは私のために働きました:
<div class="container><p>My text</p></div>
.container{
position: absolute;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
}
私はすでに回答を提供していることを知っています。私の以前の回答は、他の回答とともに、問題なく機能します。しかし、私はこれを以前に使用したことがあり、特定のブラウザーおよび特定の状況でより適切に機能します。だから私もidがこの答えを与えると思った。私は以前の回答を「編集」して追加しませんでした。これは完全に別の回答であり、提供した2つは関連性がないと思うからです。
HTML:
<div id='parent'>
<div id='child'></div>
</div>
CSS:
#parent {
display: table;
}
#child {
display: table-cell;
vertical-align: middle;
}
#container
{
position: relative;
width: 100%;
float:left
}
#container .item
{
width: 50%;
position: absolute;
margin: auto;
left: 0;
right: 0;
}
HTML
<div id='parent'>
<div id='centered-child'></div>
</div>
CSS
#parent {
position: relative;
}
#centered-child {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto auto;
}
このソリューションは、要素にwidth
とheight
.wrapper {
width: 300px;
height: 200px;
background-color: tomato;
position: relative;
}
.content {
width: 100px;
height: 100px;
background-color: deepskyblue;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: auto;
}
<div class="wrapper">
<div class="content"></div>
</div>
私の場合、この質問の解決策は機能しませんでした。いくつかの画像にキャプションを付けており、これを使用して解決しました
top: 0;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
display: flex;
align-items: center;
figure {
position: relative;
width: 325px;
display: block
}
figcaption{
position: absolute;
background: #FFF;
width: 120px;
padding: 20px;
-webkit-box-shadow: 0 0 30px grey;
box-shadow: 0 0 30px grey;
border-radius: 3px;
display: block;
top: 0;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
display: flex;
align-items: center;
}
<figure>
<img src="https://picsum.photos/325/600">
<figcaption>
But as much
</figcaption>
</figure>
HTML:
<div class="wrapper">
<div class="inner">
content
</div>
</div>
CSS:
.wrapper {
position: relative;
width: 200px;
height: 200px;
background: #ddd;
}
.inner {
position: absolute;
top: 0; bottom: 0;
left: 0; right: 0;
margin: auto;
width: 100px;
height: 100px;
background: #ccc;
}
これとその他の例はこちら
これは、DIVをページの中央に正確に浮かせるために私が考え出したトリックです。もちろん本当に醜いですが、すべてで機能します
ドットとダッシュ
<div style="border: 5 dashed red;position:fixed;top:0;bottom:0;left:0;right:0;padding:5">
<table style="position:fixed;" width="100%" height="100%">
<tr>
<td style="width:50%"></td>
<td style="text-align:center">
<div style="width:200;border: 5 dashed green;padding:10">
Perfectly Centered Content
</div>
</td>
<td style="width:50%"></td>
</tr>
</table>
</div>
クリーナー
あの5年間は飛んだだけでしたね。
<div style="position:fixed;top:0px;bottom:0px;left:0px;right:0px;padding:5px">
<table style="position:fixed" width="100%" height="100%">
<tr>
<td style="width:50%"></td>
<td style="text-align:center">
<div style="padding:10px">
<img src="Happy.PM.png">
<h2>Stays in the Middle</h2>
</div>
</td>
<td style="width:50%"></td>
</tr>
</table>
画像をdivに配置してdiv idを追加し、そのdivのCSSに text-align:center
HTML:
<div id="intro_img">
<img src="???" alt="???">
</div>
CSS:
#intro_img {
text-align:center;
}
幅のわからないブロックを水平方向に中央揃えするのに役立つ単純なアプローチ:
<div id="wrapper">
<div id="block"></div>
</div>
#wrapper { position: absolute; width: 100%; text-align: center; }
#block { display: inline-block; }
#blockルールセットにtext-alignプロパティを追加して、ブロックの配置とは無関係にコンテンツを配置できます。
これは、Firefox、Chrome、IE、Edge、Safariの最近のバージョンで動作しました。