CSSを使用して<div>
を別の<div>
内で水平方向に中央揃えするにはどうすればよいですか?
<div id="outer">
<div id="inner">Foo foo</div>
</div>
このCSSを内側の<div>
に適用することができます。
#inner {
width: 50%;
margin: 0 auto;
}
もちろん、width
を50%
に設定する必要はありません。含まれている<div>
以下の幅であれば問題ありません。 margin: 0 auto
は実際の中心合わせをするものです。
あなたがIE8 +をターゲットにしているなら、代わりにこれを持っている方が良いかもしれません:
#inner {
display: table;
margin: 0 auto;
}
内側の要素を水平に中央にし、特定のwidth
を設定せずに動作します。
ここでの作業例:
#inner {
display: table;
margin: 0 auto;
}
<div id="outer" style="width:100%">
<div id="inner">Foo foo</div>
</div>
内側のdiv
に固定幅を設定したくない場合は、次のようにします。
#outer {
width: 100%;
text-align: center;
}
#inner {
display: inline-block;
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
これは内側のdiv
をtext-align
で中央揃えできるインライン要素にします。
最善のアプローチは CSS 3 です。
#outer{
width: 100%;
/* Firefox */
display: -moz-box;
-moz-box-pack: center;
-moz-box-align: center;
/* Safari and Chrome */
display: -webkit-box;
-webkit-box-pack: center;
-webkit-box-align: center;
/* W3C */
display: box;
box-pack: center;
box-align: center;
}
#inner{
width: 50%;
}
使いやすさに応じて、box-orient, box-flex, box-direction
プロパティも使用できます。
フレックス :
#outer {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
align-items: center;
}
そして これがボックスモデルが最良のアプローチである理由を説明します :
あなたのdivが200px
幅であると仮定します。
.centered {
position: absolute;
left: 50%;
margin-left: -100px;
}
親要素が 位置 すなわち相対、固定、絶対、または固定であることを確認してください。
Divの幅がわからない場合は、負の余白の代わりにtransform:translateX(-50%);
を使用できます。
(垂直)とhorizontalalign
の作り方を示すために、この 例 を作成しました。
コードは基本的にこれです:
#outer {
position: relative;
}
そして...
#inner {
margin: auto;
position: absolute;
left:0;
right: 0;
top: 0;
bottom: 0;
}
画面をre-sizeしてもcenter
のままです。
いくつかのポスターはdisplay:box
を使ってセンタリングするCSS 3の方法を述べました。
この構文は古くなっており、もう使用すべきではありません。 [ この投稿) もご覧ください。
それで、完全を期すために、ここではフレキシブルボックスレイアウトモジュールを使用してCSS 3に集中する最新の方法です。
それで、あなたが以下のような単純なマークアップを持っているなら:
<div class="box">
<div class="item1">A</div>
<div class="item2">B</div>
<div class="item3">C</div>
</div>
...そして、あなたはあなたのアイテムをボックスの中央に置きたい、これは親要素(.box)に必要なものです:
.box {
display: flex;
flex-wrap: wrap; /* Optional. only if you want the items to wrap */
justify-content: center; /* For horizontal alignment */
align-items: center; /* For vertical alignment */
}
.box {
display: flex;
flex-wrap: wrap;
/* Optional. only if you want the items to wrap */
justify-content: center;
/* For horizontal alignment */
align-items: center;
/* For vertical alignment */
}
* {
margin: 0;
padding: 0;
}
html,
body {
height: 100%;
}
.box {
height: 200px;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
border: 2px solid tomato;
}
.box div {
margin: 0 10px;
width: 100px;
}
.item1 {
height: 50px;
background: pink;
}
.item2 {
background: brown;
height: 100px;
}
.item3 {
height: 150px;
background: orange;
}
<div class="box">
<div class="item1">A</div>
<div class="item2">B</div>
<div class="item3">C</div>
</div>
あなたがflexboxのための古い構文を使用する古いブラウザをサポートする必要があるならば{ ここ 見るのに良い場所です。
固定幅を設定したくなく、余白を追加したくない場合は、要素にdisplay: inline-block
を追加します。
あなたが使用することができます:
#element {
display: table;
margin: 0 auto;
}
#outer {
width:100%;
height:100%;
display:box;
box-orient:horizontal;
box-pack:center;
box-align:center;
}
幅を指定しないと中央に配置できません。それ以外の場合はデフォルトで水平スペース全体になります。
width
を設定し、margin-left
とmargin-right
をauto
に設定します。それは 水平方向だけ です。両方の方法が必要な場合は、両方の方法でそれをやるだけです。実験することを恐れないでください。何かを壊すようなものではありません。
水平方向と垂直方向かなり最近のブラウザ(Firefox、Safari/WebKit、Chrome、Internet Explorer 10、Operaなど)で動作します。
.content {
position: absolute;
left: 50%;
top: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
<div class="content">This works with any content</div>
私は最近、ページの中央に配置する必要があるテーブル形式のフォームを持つ「隠し」div(つまりdisplay:none;)を中央に配置する必要がありました。私は次のjQueryを書いて、隠しdivを表示してからCSSを自動生成された幅のテーブルに更新し、余白を中央揃えに変更しました。 (表示切り替えはリンクをクリックすることで引き起こされますが、このコードは表示に必要ではありませんでした。)
注:GoogleがこのStack Overflowソリューションを使用してくれたため、このコードを共有しています。
$(function(){
$('#inner').show().width($('#innerTable').width()).css('margin','0 auto');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="inner" style="display:none;">
<form action="">
<table id="innerTable">
<tr><td>Name:</td><td><input type="text"></td></tr>
<tr><td>Email:</td><td><input type="text"></td></tr>
<tr><td>Email:</td><td><input type="submit"></td></tr>
</table>
</form>
</div>
私は通常それを行う方法は絶対位置を使用しています:
#inner{
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
position: absolute;
}
これが機能するために、外側のdivは追加のプロパティを必要としません。
FirefoxとChromeの場合:
<div style="width:100%;">
<div style="width: 50%; margin: 0px auto;">Text</div>
</div>
Internet Explorer、Firefox、およびChromeの場合:
<div style="width:100%; text-align:center;">
<div style="width: 50%; margin: 0px auto; text-align:left;">Text</div>
</div>
text-align:
プロパティは最近のブラウザではオプションですが、従来のブラウザをサポートするにはInternet ExplorerのQuirksモードでは必要です。
これが私の答えです。
#outerDiv {
width: 500px;
}
#innerDiv {
width: 200px;
margin: 0 auto;
}
<div id="outerDiv">
<div id="innerDiv">Inner Content</div>
</div>
要素の幅を設定せずにこれを解決するもう1つの方法は、CSS 3のtransform
属性を使用することです。
#outer {
position: relative;
}
#inner {
position: absolute;
left: 50%;
transform: translateX(-50%);
}
トリックは、translateX(-50%)
が#inner
要素をそれ自身の幅の50パーセント左に設定することです。垂直方向の配置にも同じ方法を使用できます。
水平方向と垂直方向の配置を示す Fiddle です。
より詳しい情報は Mozilla Developer Network にあります。
Chris Coyierが自身のブログの 'Unknowning in the Unknown'に 優秀な投稿 を書いた。それは複数の解決策のまとめです。この質問に投稿されていないものを投稿しました。それはflexboxソリューションよりも多くのブラウザサポートを持っています、そしてあなたは他のものを壊すことができるdisplay: table;
を使っていません。
/* This parent can be any width and height */
.outer {
text-align: center;
}
/* The ghost, nudged to maintain perfect centering */
.outer:before {
content: '.';
display: inline-block;
height: 100%;
vertical-align: middle;
width:0;
overflow:hidden;
}
/* The element to be centered, can
also be of any width and height */
.inner {
display: inline-block;
vertical-align: middle;
width: 300px;
}
私はゲームにかなり遅れていることを実感しますが、これは非常に人気のある質問です、そして私は最近私がここで言及されていなかったアプローチを見つけたので、私はそれを文書化します。
#outer {
position: absolute;
left: 50%;
}
#inner {
position: relative;
left: -50%;
}
編集:両方の要素は正しく機能するために同じ幅でなければなりません。
たとえば、 このリンク とその下のスニペットを参照してください。
div#outer {
height: 120px;
background-color: red;
}
div#inner {
width: 50%;
height: 100%;
background-color: green;
margin: 0 auto;
text-align: center; /* For text alignment to center horizontally. */
line-height: 120px; /* For text alignment to center vertically. */
}
<div id="outer" style="width:100%;">
<div id="inner">Foo foo</div>
</div>
あなたが親の下にたくさんの子を持っているのであれば、あなたのCSSコンテンツはこのようにする必要があります フィドルの例 .
HTMLコンテンツは次のようになります。
<div id="outer" style="width:100%;">
<div class="inner"> Foo Text </div>
<div class="inner"> Foo Text </div>
<div class="inner"> Foo Text </div>
<div class="inner"> </div>
<div class="inner"> </div>
<div class="inner"> </div>
<div class="inner"> </div>
<div class="inner"> </div>
<div class="inner"> Foo Text </div>
</div>
それならフィドルの この例を見てください 。
私の経験では、ボックスを水平方向に中央に配置する最良の方法は、次のプロパティを適用することです。
text-align: center;
が必要ですdisplay: inline-block;
が必要です.container {
width: 100%;
height: 120px;
background: #CCC;
text-align: center;
}
.centered-content {
display: inline-block;
background: #FFF;
padding: 20px;
border: 1px solid #000;
}
<div class="container">
<div class="centered-content">
Center this!
</div>
</div>
this Fiddle !も参照してください。
私の経験では、ボックスbothを垂直方向と水平方向にセンタリングする最良の方法は、追加のコンテナを使用して、次のプロパティを適用することです。
display: table;
が必要ですdisplay: table-cell;
が必要ですvertical-align: middle;
が必要ですtext-align: center;
が必要ですdisplay: inline-block;
が必要です.outer-container {
display: table;
width: 100%;
height: 120px;
background: #CCC;
}
.inner-container {
display: table-cell;
vertical-align: middle;
text-align: center;
}
.centered-content {
display: inline-block;
background: #FFF;
padding: 20px;
border: 1px solid #000;
}
<div class="outer-container">
<div class="inner-container">
<div class="centered-content">
Center this!
</div>
</div>
</div>
this Fiddle !も参照してください。
最も簡単な方法:
#outer {
width: 100%;
text-align: center;
}
#inner {
margin: auto;
width: 200px;
}
<div id="outer">
<div id="inner">Blabla</div>
</div>
これが最短の方法で欲しいものです。
#outer {
margin - top: 100 px;
height: 500 px; /* you can set whatever you want */
border: 1 px solid# ccc;
}
#inner {
border: 1 px solid# f00;
position: relative;
top: 50 % ;
transform: translateY(-50 % );
}
あなたはこのようなことをすることができます
#container {
display: table;
width: <width of your container>;
height: <height of your container>;
}
#inner {
width: <width of your center div>;
display: table-cell;
margin: 0 auto;
text-align: center;
vertical-align: middle;
}
これはまた#inner
を垂直に揃えます。したくない場合は、display
およびvertical-align
プロパティを削除します。
内容の幅がわからない場合は、次の方法を使用できます 。これら2つの要素があるとします。
.outer
- 全角.inner
- 幅は設定されていません(ただし、最大幅を指定できます)計算された要素の幅がそれぞれ1000pxと300pxであるとします。次のように進めてください。
.inner
の内側に.center-helper
をラップする.center-helper
をインラインブロックにします。それは.inner
と同じサイズになり、幅300ピクセルになります。.center-helper
をその親に対して50%右にプッシュします。これは500px wrtにその左を配置します。外。.inner
をその親に対して50%左にプッシュします。これにより、左が-150px wrtになります。その左を意味するセンターヘルパーは500 - 150 = 350px wrtです。外。.outer
のoverflowをhiddenに設定します。デモ:
body {
font: medium sans-serif;
}
.outer {
overflow: hidden;
background-color: papayawhip;
}
.center-helper {
display: inline-block;
position: relative;
left: 50%;
background-color: burlywood;
}
.inner {
display: inline-block;
position: relative;
left: -50%;
background-color: wheat;
}
<div class="outer">
<div class="center-helper">
<div class="inner">
<h1>A div with no defined width</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.<br>
Duis condimentum sem non turpis consectetur blandit.<br>
Donec dictum risus id orci ornare tempor.<br>
Proin pharetra augue a lorem elementum molestie.<br>
Nunc nec justo sit amet nisi tempor viverra sit amet a ipsum.</p>
</div>
</div>
</div>
.outer {
overflow: hidden;
}
.center-helper {
float: left;
position: relative;
left: 50%;
}
.inner {
float: left;
position: relative;
left: -50%;
}
インラインコンテンツの text-align: center
を適用すると、行ボックスの中央に配置されます。しかし、内側のdivはデフォルトでwidth: 100%
を持っているので、特定の幅を設定するか、次のいずれかを使用する必要があります。
#inner {
display: inline-block;
}
#outer {
text-align: center;
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
margin: 0 auto
を使用することも別の選択肢であり、古いブラウザとの互換性に適しています。 display: table
と一緒に動作します。
#inner {
display: table;
margin: 0 auto;
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
display: flex
はブロック要素のように振る舞い、flexboxモデルに従ってその内容をレイアウトします。これは justify-content: center
で動作します。
注意してください。 Flexboxはほとんどのブラウザと互換性がありますが、すべてとは互換性がありません。ブラウザの互換性に関する完全かつ最新のリストについては、 here を参照してください。
#inner {
display: inline-block;
}
#outer {
display: flex;
justify-content: center;
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
transform: translate
を使用すると、CSSのビジュアルフォーマットモデルの座標空間を変更できます。それを使用して、要素は平行移動、回転、拡大縮小、および傾斜させることができます。水平方向に中央揃えするには position: absolute
と left: 50%
が必要です。
#inner {
position: absolute;
left: 50%;
transform: translate(-50%, 0%);
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
<center>
(廃止予定)タグ <center>
は、 text-align: center
の代わりになるHTMLです。古いブラウザやほとんどの新しいブラウザで動作しますが、この機能は 廃止 でありWeb標準から削除されているため、お勧めできません。
#inner {
display: inline-block;
}
<div id="outer">
<center>
<div id="inner">Foo foo</div>
</center>
</div>
まあ、私はなんとかすべての状況に合うだろうがJavaScriptを使用する解決策を見つけることができた
構造は次のとおりです。
<div class="container">
<div class="content">Your content goes here!</div>
<div class="content">Your content goes here!</div>
<div class="content">Your content goes here!</div>
</div>
そして、これがJavaScriptスニペットです。
$(document).ready(function() {
$('.container .content').each( function() {
container = $(this).closest('.container');
content = $(this);
containerHeight = container.height();
contentHeight = content.height();
margin = (containerHeight - contentHeight) / 2;
content.css('margin-top', margin);
})
});
レスポンシブアプローチでそれを使用したい場合は、以下を追加できます。
$(window).resize(function() {
$('.container .content').each( function() {
container = $(this).closest('.container');
content = $(this);
containerHeight = container.height();
contentHeight = content.height();
margin = (containerHeight - contentHeight) / 2;
content.css('margin-top', margin);
})
});
外側のdivにdisplay: flex
を使うことができ、水平方向の中央にjustify-content: center
を追加する必要があります
#outer{
display: flex;
justify-content: center;
}
あるいは、 w3schools - CSS flex Property をご覧ください。
私が見つけた1つの選択肢がありました:
誰もが使うように言う:
margin: auto 0;
しかし別の選択肢があります。このプロパティを親divに設定します。それはいつでも完璧に動作します。
text-align: center;
そして見て、子供が中心に行きます。
そして最後にあなたのためのCSS:
#outer{
text-align: center;
display: block; /* Or inline-block - base on your need */
}
#inner
{
position: relative;
margin: 0 auto; /* It is good to be */
}
Flexは97%以上のブラウザサポート範囲を持っており、数行以内にこの種の問題を解決するための最良の方法かもしれません。
#outer {
display: flex;
justify-content: center;
}
この方法もうまく機能します。
div.container {
display: flex;
justify-content: center; /* for horizontal alignment */
align-items: center; /* for vertical alignment */
}
内側の<div>
の唯一の条件は、そのheight
とwidth
がそのコンテナのものより大きくてはいけないということです。
と遊んでみてください
margin: 0 auto;
あなたもあなたのテキストを中心に置きたいならば、使ってみてください:
text-align: center;
誰かがcenterのためのjQueryソリューションを望むならば、これらのdivを合わせてください:
$(window).bind("load", function() {
var wwidth = $("#outer").width();
var width = $('#inner').width();
$('#inner').attr("style", "padding-left: " + wwidth / 2 + "px; margin-left: -" + width / 2 + "px;");
});
flexbox のように単純に使うことができます。
#outer {
display: flex;
justify-content: center
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
すべてのブラウザサポートにオートプレフィックスを適用します。
#outer {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
width: 100%;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
transform :を使う
#inner {
position: absolute;
left: 50%;
transform: translate(-50%)
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
autoprefixerを使って:
#inner {
position: absolute;
left: 50%;
-webkit-transform: translate(-50%);
-ms-transform: translate(-50%);
transform: translate(-50%)
}
CSS 3:
親コンテナに次のスタイルを使用して、子要素を水平に均等に配置できます。
display: flex;
justify-content: space-between; // <-- space-between or space-around
justify-content
のさまざまな値についての素敵な DEMO .
CanIUse: ブラウザ互換性
試してみよう!:
#containerdiv {
display: flex;
justify-content: space-between;
}
#containerdiv > div {
background-color: blue;
width: 50px;
color: white;
text-align: center;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<div id="containerdiv">
<div>88</div>
<div>77</div>
<div>55</div>
<div>33</div>
<div>40</div>
<div>45</div>
</div>
</body>
</html>
内側のdivにインラインスタイルを適用しました。これを使ってください。
<div id="outer" style="width:100%">
<div id="inner" style="display:table;margin:0 auto;">Foo foo</div>
</div>
#inner {
width: 50%;
margin: 0 auto;
}
CSS Flexbox を使用してこれを達成できます。すべてうまくいくためには、親要素に3つのプロパティを適用するだけです。
#outer {
display: flex;
align-content: center;
justify-content: center;
}
以下のコードを見て、あなたはその性質をもっとよく理解することができます。
#outer {
display: flex;
align-items: center;
justify-content: center;
border: 1px solid #ddd;
width: 100%;
height: 200px;
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
line-height
+ vertical-align
と50%
左トリックの使用を混在させて、私が最近見つけた素晴らしいことは、center
name__をピュアCSSを使用して水平と垂直の両方で動的サイズのボックスの内側に配置できることです。
現代のブラウザ+ IE8でテストされたスパン(そしてinline-block
)を使わなければならないことに注意してください。 HTML:
<h1>Center dynamic box using only css test</h1>
<div class="container">
<div class="center">
<div class="center-container">
<span class="dyn-box">
<div class="dyn-head">This is a head</div>
<div class="dyn-body">
This is a body<br />
Content<br />
Content<br />
Content<br />
Content<br />
</div>
</span>
</div>
</div>
</div>
CSS:
.container
{
position:absolute;
left:0;right:0;top:0;bottom:0;
overflow:hidden;
}
.center
{
position:absolute;
left:50%; top:50%;
}
.center-container
{
position:absolute;
left:-2500px;top:-2500px;
width:5000px;height:5000px;
line-height:5000px;
text-align:center;
overflow: hidden;
}
.dyn-box
{
display: inline-block;
vertical-align: middle;
line-height: 100%;
/* Purely asthetic below this point */
background: #808080;
padding: 13px;
border-radius: 11px;
font-family: arial;
}
.dyn-head
{
background:red;
color:white;
min-width: 300px;
padding: 20px;
font-size: 23px;
}
.dyn-body
{
padding: 10px;
background:white;
color:red;
}
#inner
divの以下のCSSはどうでしょうか。
#inner {
width: 50%;
margin-left: 25%;
}
私は主にdivを中心に置くためにこのCSSを使います。
それを簡単に!
#outer {
display: flex;
justify-content: center;
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
.outer {
display: -webkit-flex;
display: flex;
//-webkit-justify-content: center;
//justify-content: center;
//align-items: center;
width: 100%;
height: 100px;
background-color: lightgrey;
}
.inner {
background-color: cornflowerblue;
padding: 2rem;
margin: auto;
//align-self: center;
}
<div class="outer">
<div class="inner">Foo foo</div>
</div>
広く使用され、多くのブラウザで動作する最もよく知られている方法は、古いものを含めて、以下のようにmargin
を使用することです:
#parent {
width: 100%;
background-color: #cccccc;
}
#child {
width: 30%; /*we need the width*/
margin: 0 auto; /*this does the magic*/
color: #ffffff;
background-color: #000000;
padding: 10px;
text-align: center;
}
<div id="parent">
<div id="child">I'm the child and I'm horizontally centered! My daddy is a greyish div dude!</div>
</div>
コードを実行して動作を確認します。また、この方法でセンタリングしようとすると、CSSで忘れてはならない2つの重要なことがあります。margin: 0 auto;
width
子の場合、期待どおりに中央に配置されません!
私はただ最も単純な解決策を使用しますが、それはすべてのブラウザで動作します。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>center a div within a div?</title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
#outer{
width: 80%;
height: 500px;
background-color: #003;
margin: 0 auto;
}
#outer p{
color: #FFF;
text-align: center;
}
#inner{
background-color: #901;
width: 50%;
height: 100px;
margin: 0 auto;
}
#inner p{
color: #FFF;
text-align: center;
}
</style>
</head>
<body>
<div id="outer"><p>this is the outer div</p>
<div id="inner">
<p>this is the inner div</p>
</div>
</div>
</body>
</html>
つかいます:
<div id="parent">
<div class="child"></div>
</div>
スタイル:
#parent {
display: flex;
justify-content: center;
}
あなたがそれを水平に中央に置きたいなら、あなたは以下のように書くべきです:
#parent {
display: flex;
justify-content: center;
align-items: center;
}
最近ではフレックスボックスを使用して購入することができます。 flex-boxを使用するには、display: flex;
とalign-items: center;
を親または#outer
div要素に指定する必要があります。コードは次のようになります。
#outer {
display: flex;
align-items: center;
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
これは、子または#inner
divを水平方向に中央に配置する必要があります。しかし、実際に変更を確認することはできません。 #outer
divには高さがないため、つまり高さがautoに設定されているため、すべての子要素と同じ高さになります。そのため、少し視覚的なスタイリングを行った後、結果コードは次のようになります。
#outer {
height: 500px;
display: flex;
align-items: center;
background-color: blue;
}
#inner {
height: 100px;
background: yellow;
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
#inner
divが中央に配置されていることがわかります。 Flex-boxは、CSSを使用して要素を水平または垂直スタックに配置する新しい方法であり、グローバルブラウザーの互換性の96%を持っています。したがって、自由に使用できます。Flex-boxへのアクセスについて詳しく知りたい場合は、 CSS-Tricks の記事を参照してください。Flex-boxを使用して学ぶのに最適な場所です。
CSS 3 flexbox を使えば可能です。フレックスボックスを使用する場合、2つの方法があります。
display:flex;
を設定し、親の要素にプロパティ{justify-content:center; ,align-items:center;}
を追加します。#outer{
display: flex;
justify-content: center;
align-items: center;
}
<div id="outer" style="width:100%">
<div id="inner">Foo foo</div>
</div>
display:flex
を設定し、margin:auto;
を子に追加します。#outer{
display: flex;
}
#inner{
margin: auto;
}
<div id="outer" style="width:100%">
<div id="inner">Foo foo</div>
</div>
このように、絶対位置を使用して水平方向と垂直方向に中央揃えすることもできます。
#outer{
position: relative;
}
#inner{
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%)
}
あなたはflexboxを使うことができます。
#inner {
display: flex;
justify-content: center;
}
あなたはこのリンクでそれについてもっと学ぶことができます: https://css-tricks.com/snippets/css/a-guide-to-flexbox/ /
私は、calcメソッドについて言及した人が誰もいないことに気づいたので、これに答えたかったのです。使い方は中心にあるdivのためです、あなたがその幅を知っているならば、それが1200ピクセルだとしましょう、そして行ってください
.container {
width:1200px;
margin-left: calc(50% - 600px);
}
そのため、基本的に50%マイナス既知の幅の半分の左マージンが追加されます。
FLEXBOXを使用して、これを簡単に実現できます。
<div id="outer">
<div id="inner">Foo foo</div>
</div>
Divを水平にdivの中央に配置します。
#outer {
display: flex;
justify-content: center;
}
Div内のdivを垂直方向に中央に配置します。
#outer {
display: flex;
align-items: center;
}
そして、divを垂直および水平に完全に中央化するには:
#outer{
display: flex;
justify-content: center;
align-items: center;
}
それがあなたの一部に役立つことを願っています。ハッピーコーディング!
.outer
{
background-color: rgb(230,230,255);
width 100%;
height: 50px;
}
.inner
{
background-color: rgb(200,200,255);
width: 50%;
height: 50px;
margin: 0 auto;
}
<div class="outer">
<div class="inner">
margin 0 auto
</div>
</div>
2019年現在、この質問はまだ多くのヒットを得ているので、水平方向の中心に対する非常に単純でクロスブラウザの答えは、この規則を親要素に適用することです。
.parentBox {
display: flex;
justify-content: center
}
これは、 flexbox を使用して、内側のコンテナに幅を指定せずに水平方向に中央揃えする方法です。そのアイデアは、内側のコンテンツを左右からプッシュする疑似要素を使用することです。
擬似要素にflex:1
を使用すると、残りのスペースを埋めて同じサイズになり、内側のコンテナは中央に配置されます。
.container {
display: flex;
border: 1px solid;
}
.container:before,
.container:after {
content: "";
flex: 1;
}
.inner {
border: 1px solid red;
padding: 5px;
}
<div class="container">
<div class="inner">
Foo content
</div>
</div>
縦方向の配置についても、単にフレックスの方向を列に変更することで、同じ状況を考えることができます。
.container {
display: flex;
flex-direction: column;
border: 1px solid;
min-height: 200px;
}
.container:before,
.container:after {
content: "";
flex: 1;
}
.inner {
border: 1px solid red;
padding: 5px;
}
<div class="container">
<div class="inner">
Foo content
</div>
</div>
これはあなたの内側のdivを水平方向と垂直方向に集中させる:
#outer{
display: flex;
}
#inner{
margin: auto;
}
水平位置合わせのみの場合は、
margin: 0 auto;
そして垂直の場合は、変更
margin: auto 0;
_ css _
#inner {
display: table;
margin: 0 auto;
}
_ html _
<div id="outer" style="width:100%">
<div id="inner">Foo foo</div>
</div>
すべての答えを読んだ後、私は私が好むものを見ませんでした。これは、ある要素を別の要素の中央に配置する方法です。
jsfiddle - http://jsfiddle.net/josephtveter/w3sksu1w/
<p>Horz Center</p>
<div class="outterDiv">
<div class="innerDiv horzCenter"></div>
</div>
<p>Vert Center</p>
<div class="outterDiv">
<div class="innerDiv vertCenter"></div>
</div>
<p>True Center</p>
<div class="outterDiv">
<div class="innerDiv trueCenter"></div>
</div>
.vertCenter
{
position: absolute;
top:50%;
-ms-transform: translateY(-50%);
-moz-transform: translateY(-50%);
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
}
.horzCenter
{
position: absolute;
left: 50%;
-ms-transform: translateX(-50%);
-moz-transform: translateX(-50%);
-webkit-transform: translateX(-50%);
transform: translateX(-50%);
}
.trueCenter
{
position: absolute;
left: 50%;
top: 50%;
-ms-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
.outterDiv
{
position: relative;
background-color: blue;
width: 10rem;
height: 10rem;
margin: 2rem;
}
.innerDiv
{
background-color: red;
width: 5rem;
height: 5rem;
}
このコードを追加することができます:
#inner {
width: 90%;
margin: 0 auto;
text-align:center;
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
状況に応じて、最も簡単な解決策は次のとおりです。
margin:0 auto; float:none;
最も簡単な回答add margin:auto; 内側に。
<div class="outer">
<div class="inner">
Foo foo
</div>
</div>
cSSコード
.outer{ width:100%; height:300px; background:yellow;}
.inner{width:30%; height:200px; margin:auto; background:red; text-align:center}
私のcodepenリンクをチェックしてください http://codepen.io/feizel/pen/QdJJrK
内側のwidth
にdiv
を渡し、CSSプロパティにmargin:0 auto;
を追加します。
つかいます:
<style>
#outer{
text-align: center;
width: 100%;
}
#inner{
text-align: center;
}
</style>
はい、これは水平方向の整列のための短くてきれいなコードです。私はあなたがこのコードが好きだと思います。
.classname {
display: box;
margin: 0 auto;
width: 500px /* Width set as per your requirement. */;
}
以下のコードを使用してください。
<div id="outer">
<div id="inner">Foo foo</div>
</div>
#outer {
text-align: center;
}
#inner{
display: inline-block;
}
このコードを使用してください:
<div id="outer">
<div id="inner">Foo foo</div>
</div>
#inner {
width: 50%;
margin: 0 auto;
text-align: center;
}
<div id="outer" style="width:100%;margin: 0 auto; text-align: center;">
<div id="inner">Foo foo</div>
</div>
とても簡単です。
内側のdivに与える幅を決めて、次のCSSを使うだけです。
.inner{
width: 500px; // Assumed width
margin: 0 auto;
}
これは確かにあなたの#inner
を水平にも垂直にも中央に寄せます。これはすべてのブラウザでも互換性があります。中心に配置する方法を示すために、スタイルを追加しました。
#outer {
background: black;
position: relative;
width:150px;
height:150px;
}
#inner {
background:white;
position: absolute;
left:50%;
top: 50%;
transform: translate(-50%,-50%);
-webkit-transform: translate(-50%,-50%);
-moz-transform: translate(-50%,-50%);
-o-transform: translate(-50%,-50%);
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
しかし、もしあなたがそれを水平に並べたいだけなら、これはあなたを助けるかもしれません。
#outer {
background: black;
position: relative;
width:150px;
height:150px;
}
#inner {
background:white;
position: absolute;
left:50%;
transform: translate(-50%,0);
-webkit-transform: translate(-50%,0);
-moz-transform: translate(-50%,0);
-o-transform: translate(-50%,0);
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
text-align:center
という1行のコードを使用できます。
これが例です:
#inner {
text-align:center;
}
<div id="outer" style="width:100%">
<div id="inner"><button>hello</button></div>
</div>
あなたがそれをすることができる最も簡単な方法の一つはdisplay: flex
を使うことです。外側のdivは表示を柔軟にするだけでよく、内側のdivは水平方向の中央に配置するためにmargin: 0 auto
が必要です。
垂直方向に中央揃えし、別のdivの中央にdivを配置するには、以下の.innerクラスのコメントをご覧ください。
.wrapper {
display: flex;
/* Adding whatever height & width we want */
height: 300px;
width: 300px;
/* Just so you can see it is centered */
background: peachpuff;
}
.inner {
/* center horizontally */
margin: 0 auto;
/* center vertically */
/* margin: auto 0; */
/* center */
/* margin: 0 auto; */
}
<div class="wrapper">
<div class="inner">
I am horizontally!
</div>
</div>
#outer {postion: relative}
#inner {
width: 100px;
height: 40px;
position: absolute;
top: 50%;
margin-top:-20px; /* Half of your Height */
}
最も簡単な方法の1つ
<!DOCTYPE html>
<html>
<head>
<style>
#outer-div {
width: 100%;
text-align: center;
background-color: #000
}
#inner-div {
display: inline-block;
margin: 0 auto;
padding: 3px;
background-color: #888
}
</style>
</head>
<body>
<div id ="outer-div" width="100%">
<div id ="inner-div"> I am a easy horizontally centered div.</div>
<div>
</body>
</html>
すみませんが、1990年代のこの赤ん坊は私のために働きました
<div id="outer">
<center>Foo foo</center>
</div>
私はこの罪のために地獄に行きますか?
私が私の様々なプロジェクトで使った中で最高のものは
<div class="outer">
<div class="inner"></div>
</div>
.outer{
width: 500px;
height: 500px;
position: relative;
background: yellow;
}
.inner{
width: 100px;
height: 100px;
background:red;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
次のCSSのクラスを使用して、親に対して任意の要素を垂直方向および水平方向に中央揃えできます。
.centerElement{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
HTML:
<div id="outer">
<div id="inner">
</div>
</div>
CSS:
#outer{
width: 500px;
background-color: #000;
height: 500px
}
#inner{
background-color: #333;
margin: 0 auto;
width: 50%;
height: 250px;
}
Fiddle 。
最善の方法は、表示テーブル(外側)を持つdivの直後に来るテーブルセル表示(内側)を使用し、内側のdiv(垂直表示付き)と内側のdiv内で使用するすべてのタグを垂直に配置するdivまたはpageの中央にあります。
注:指定した高さを外側に設定する必要があります
これは相対的な位置も絶対的な位置もなしに知っている最善の方法であり、すべてのブラウザで同じように使用できます。
#outer{
display: table;
height: 100vh;
width: 100%;
}
#inner{
display: table-cell;
vertical-align: middle;
text-align: center;
}
<div id="outer">
<div id="inner">
<h1>
set content center
</h1>
<div>
hi this is the best way to align your items center
</div>
</div>
</div>
複数のラッパーや自動マージンの代わりに、この簡単な解決策が私のために働きます:
<div style="top:50%; left:50%;
height:100px; width:100px;
margin-top:-50px; margin-left:-50px;
background:url('lib/loading.gif') no-repeat center #fff;
text-align:center;
position:fixed; z-index:9002;">Loading...</div>
Divをビューの中央(垂直および水平)に配置し、サイズを調整してサイズを調整し、背景画像(垂直および水平)を中央揃え、テキストを水平(中央)に配置し、divをビュー内およびコンテンツの上に配置します。単にHTMLのbody
に入れてお楽しみください。
これを試してみてください。
#outer{
display: inline-block;
height: 100%;
vertical-align: middle;
}
#outer > #inner{
display: inline-block;
font-size: 19px;
margin: 20px;
max-width: 320px;
min-height: 20px;
min-width: 30px;
padding: 14px;
vertical-align: middle;
}
これは私のために働いた:
#inner {
position: absolute;
margin: 0 auto;
left: 0;
width: 7%;
right: 0;
}
このコードでは、要素の幅を決めます。
私はmargin-left
と似ていますが、left
でも構いません。
#inner{
width: 100%;
max-width: 65px; /*to adapt to screen width. Can be whatever you want*/
left: 65px; /*this has to be approximately the same as the max-width*/
}
同じサイズの#innerを持つ別のdivを追加し、-50%(#innerの幅の半分)および#innerを50%だけ左に移動できます。私の英語でごめんなさい
#inner {
position: absolute;
left: 50%;
}
#inner > div {
position: relative;
left: -50%;
}
<div id="outer">
<div id="inner"><div>Foo foo</div></div>
</div>
あなたの内側のdivにCSSを追加してください。 margin: 0 auto
を設定し、その幅を外側のdivの幅である100%未満に設定します。
<div id="outer" style="width:100%">
<div id="inner" style="margin:0 auto;width:50%">Foo foo</div>
</div>
これで望ましい結果が得られます。
#inner {
display: table;
margin: 0 auto;
}
<div id="outer" style="width:100%">
<div id="inner">Foo foo</div>
</div>
私はこの質問に答えるのが少し遅れているのを知っています、そして、私はこれをすべての答えを読むのを煩わさなかったので、この may は重複しています。 これが私の考えです :
inner { width: 50%; background-color: Khaki; margin: 0 auto; }
#inner {
width: 50%;
margin: 0 auto;
}
単にMargin:0px auto
:
#inner{
display: block;
margin: 0px auto;
width: 100px;
}
<div id="outer" style="width:100%">
<div id="inner">Foo foo</div>
</div>
親divにtext-align:center;
を追加する
#outer {
text-align: center;
}
https://jsfiddle.net/7qwxx9rs/
または
#outer > div {
margin: auto;
width: 100px;
}
#outer {
width: 160px;
padding: 5px;
border-style: solid;
border-width: thin;
display: block;
}
#inner {
margin: auto;
background-color: lightblue;
border-style: solid;
border-width: thin;
width: 80px;
padding: 10px;
text-align: center;
}
<div id="outer">
<div id="inner">Foo foo</div>
</div>
Divをセンタリングする主な属性は、要件に応じてmargin: auto
とwidth:
です。
.DivCenter{
width: 50%;
margin: auto;
border: 3px solid #000;
padding: 10px;
}
div{
width:100px;
height:100px;
margin:0 auto;
}
あなたがdivの静的な方法を使用している場合は通常のもののために
divがその親に対して絶対であるときにdivを中央に配置したい場合は、次のようになります。
.parentdiv{
position:relative;
height:500px;
}
.child_div{
position:absolute;
height:200px;
width:500px;
left:0;
right:0;
margin:0 auto;
}
別の方法でそれをすることができます。以下の例を参照してください。
1. First Method
#outer {
text-align: center;
width: 100%;
}
#inner {
display: inline-block;
}
2. Second method
#outer {
position: relative;
overflow: hidden;
}
.centered {
position: absolute;
left: 50%;
}
これを試して:
<div id="a">
<div id="b"></div>
</div>
CSS:
#a{
border: 1px solid red;
height: 120px;
width: 400px
}
#b{
border: 1px solid blue;
height: 90px;
width: 300px;
position: relative;
margin-left: auto;
margin-right: auto;
}
まず第一に:あなたは第二divに幅を与える必要があります:
例えば:
<div id="outter">
<div id="inner"Centered content">
</div
</div>
#inner{
width: 50%;
margin: auto;
}
幅を指定しないと、線の幅全体になります。