いくつかの検索の後、<li>
のリストを固定幅div
に中央揃えする適切な方法が見つかりませんでした。
ページ 。を見てください。それも機能しません!
ul
およびli
エレメントはデフォルトでdisplay: block
であるため、それらを指定します 自動マージンおよびコンテナーより小さい幅 。
ul {
width: 70%;
margin: auto;
}
表示プロパティを変更した場合、または通常の配置規則をオーバーライドするような操作(フロートなど)を行った場合、これは機能しません。
Ulを中央揃えにし、li要素も中央に配置し、ulの幅を動的に変更するには、display:inline-blockを使用します;中央のdivにラップします。
<style type="text/css">
.wrapper {
text-align: center;
}
.wrapper ul {
display: inline-block;
margin: 0;
padding: 0;
/* For IE, the outcast */
zoom:1;
*display: inline;
}
.wrapper li {
float: left;
padding: 2px 5px;
border: 1px solid black;
}
</style>
<div class="wrapper">
<ul>
<li>Three</li>
<li>Blind</li>
<li>Mice</li>
</ul>
</div>
更新
これはjsFiddleリンクです 上記のコードへ。
手順:
div
の親ul
にstyle="text-align:center;"
を書き込むul
にstyle="display:inline-table;"
を書き込むli
にstyle="display:inline;"
を書き込むまたは使用する
<div class="menu">
<ul>
<li>item 1 </li>
<li>item 2 </li>
<li>item 3 </li>
</ul>
</div>
<style>
.menu { text-align: center; }
.menu ul { display:inline-table; }
.menu li { display:inline; }
</style>
フレックスボックスが大好き:
ul {
justify-content: center;
display: flex;
}
これは、ULをDIVコンテナの内側に配置するためのより良い方法です。
このCSSソリューションでは、WidthプロパティとFloatプロパティを使用しません。Float:Left and Width:70%。異なるメニュー項目を持つ異なるページ。
幅を使用する代わりに、パディングとマージンを使用して、テキスト/メニュー項目の周囲のスペースを決定します。また、LI要素でFloat:Leftを使用する代わりに、display:inline-blockを使用します。
LIを左にフロートすることにより、文字通りコンテンツを左にフロートし、次に上記のハックのいずれかを使用してULを中央に配置する必要があります。 Display:inline-blockは、Floatプロパティを作成します(並べ替え)。それはあなたのLI要素を受け取り、それを互いに浮かび上がらないブロック要素に変えます。
レスポンシブデザインで、BootstrapやFoundationなどのフレームワークを使用すると、コンテンツをフロートして中央に配置しようとすると問題が発生します。それらにはいくつかの組み込みクラスがありますが、常にゼロから作成する方が良いでしょう。このソリューションは、動的メニュー(Adobe Business Catalystメニューシステムなど)に適しています。
このチュートリアルのリファレンスは、次の場所にあります。 http://html-tuts.com/center-div-image-table-ul-inside-div/
HTML
<div class="container">
<ul>
<li><a href="#">Button</a></li>
<li><a href="#">Button</a></li>
<li><a href="#">Button</a></li>
<li><a href="#">Button</a></li>
<li><a href="#">Button</a></li>
</ul>
</div>
CSS
.container {
text-align: center;
border: 1px solid green;
}
.container ul {
border: 2px solid red;
display: inline-block;
margin: 10px 0;
padding: 2px;
}
.container li {
display: inline-block;
}
.container li a {
display: inline-block;
background: #444;
color: #FFF;
padding: 5px;
text-decoration: none;
}
どちらか
div ul
{
width: [INSERT FIXED WIDTH]
margin: 0 auto;
}
または
div li
{
text-align: center;
}
どのように見えるか(またはそれらを組み合わせて)に依存します
ブロックオブジェクト(ul
など)を中央に配置するには、幅を設定する必要があります。その後、オブジェクトの左右の余白をautoに設定できます。
ブロックオブジェクトのインラインコンテンツ(li
のインラインコンテンツなど)を中央に配置するには、cssプロパティtext-align: center;
を設定します。
試して
div#divID ul {margin:0 auto;}
text-align: center;
を<ul>
に追加するだけです。問題が解決しました。
私は同じケースを探しており、<li>
の幅を変更してすべての回答を試みました。
残念ながら、すべてが<ul>
ボックスの左右で同じ距離を取得できませんでした。
最も近い一致は this answer ですが、幅の変更を調整する必要があるパディングあり
.container ul {
...
padding: 10px 25px;
}
.container li {
...
width: 100px;
}
以下の結果を参照してください。<li>
から<ul>
ボックスまでの距離はすべて同じです。
このjsFiddleで確認できます。
http://jsfiddle.net/qwbexxog/14/
ここに私が見つけることができる解決策があります:
#wrapper {
float:right;
position:relative;
left:-50%;
text-align:left;
}
#wrapper ul {
list-style:none;
position:relative;
left:50%;
}
#wrapper li{
float:left;
position:relative;
}
ul
の幅がわかっている場合は、ul
のマージンを0 auto;
に設定するだけです
これにより、ul
がdivの中央に配置されます
例:
HTML:
<div id="container">
<ul>
<li>Item1</li>
<li>Item2</li>
</ul>
<div>
CSS:
#container ul{
width:300px;
margin:0 auto;
}
別のオプションは次のとおりです。
HTML
<nav>
<ul class = "main-nav">
<li> Productos </li>
<li> Catalogo </li>
<li> Contact </li>
<li> Us </li>
</ul>
</nav>
CSS:
nav {
text-align: center;
}
nav .main-nav li {
float: left;
width: 20%;
margin-right: 5%;
font-size: 36px;
text-align: center;
}