垂直方向と水平方向の両方で、キャラクターを div 内の中央に配置しようとしています。
そうするために、次のcssを使用しました。
margin : 0 auto; //attempt1
text-align:center; //attempt2
どちらも機能しませんでした。試行 2 では、文字を水平方向に揃えるだけです。
しかし、私もそれを垂直に揃える必要があります。
これを達成するための手がかりはありますか?
これを修正する方法は次のとおりです。
最初に文字を要素にラップします。
<div id="DivMenu">
<div id="character">R</div>
</div>
次に、次の CSS を設定します。
#DivMenu{
...
text-align:center;
}
#character{
position:relative;
top:50%;
margin-top:-10px
}
垂直方向のセンタリングのもう 1 つの簡単なアイデアは、height プロパティを削除し、上下にパディングを追加することです。それぞれ元の高さの半分です。もちろん、水平方向のセンタリングには text-align を使用します:
text-align: center;
padding-top: 6%;
padding-bottom: 6%;
別の方法は、古き良きものを使用line-height
して垂直方向の配置を作成することです。アイデアは、線の高さを高さと同じにすることです。次にtext-align: center
、水平方向に。これは、私がテストしたすべての主要なブラウザーで機能し、最も簡単なソリューションです。
この例では、配置プロパティは他のスタイルから分離されています。
<html>
<head>
<title>Untitled Document</title>
<style type="text/css">
#DivMenu
{
background: #CCC;
border: 2px solid #2F2E2E;
width: 100px;
height: 100px;
text-align: center;
line-height: 100px;
}
</style>
</head>
<body>
<div id="DivMenu">
R
</div>
</body>
</html>
block
私がよく使うテクニックは、要素の中央に配置したいものをラップすることです。中央に配置したいものの幅と高さを知っている必要があります。ここにデモがあります。
<div>
<span>R</span>
</div>
次に、次のように要素のスタイルを設定しspan
ます (または、必要に応じてセマンティックに保ちます!)。
span {
width:10px;
height:20px;
margin:-10px 0 0-5px; /* margin-top is minus half your height, margin-left is minus half your width */
top:50%; left:50%;
position:absolute;
display:block;
}
DOM
表示目的で無駄な要素を配置したくない場合line-height
は、テキスト ノードの をコンテナの高さに合わせることができます。欠点は、テキストが 2 行にまたがる場合、line-height
が異常に高くなるため、必然的にデザインが台無しになることです。ここにデモがあります。
div {
[...]
width: 200px;
height: 200px;
text-align:center;
line-height:200px;
}
ここにJsfiddleがありますhttp://jsfiddle.net/HLet2/1/
<div id="DivMenu">
<p>R</p>
</div>
#DivMenu
{
position:absolute;
-webkit-border-radius: 999px;
-moz-border-radius: 999px;
border-radius: 999px;
behavior: url(PIE.htc);
background: #ccc;
border: 2px solid #2F2E2E;
width: 10%;
height: 12%;
}
#DivMenu p
{
text-align:center;
margin-top:50%;
}