<ul> <li>をdivの中央に配置するには


88

順序付けられていないリストを<li>固定幅に中央揃えするにはどうすればよいdivですか?

<table width="100%">
  <tbody>
  <tr>
    <td width="41%"><img src="/web/20100104192317im_/http://www.studioteknik.com/html2/html/images/hors-service.jpg" width="400" height="424"></td>
    <td width="59%"><p align="left">&nbsp;</p>
      <h1 align="left">StudioTeknik.com</h1>
      <p><br align="left">
        <strong>Marc-André Ménard</strong></p>
      <ul>
        <li>Photographie digitale</li>
        <li>Infographie </li>
        <li>Débug et IT (MAC et PC)</li>
        <li> Retouche </li>
        <li>Site internet</li>
        <li>Graphisme</li>
      </ul>
      <p align="left"><span class="style1"><strong>Cellulaire en suisse : </strong></span><a href="#">+41 079 573 48 99</a></p>
      <p align="left"><strong class="style1">Skype : </strong> <a href="#">menardmam</a></p>
    <p align="left"><strong class="style1">Courriel :</strong><a href="https://web.archive.org/web/20100104192317/mailto:menardmam@hotmail.com">    info@studioteknik.com</a></p></td>
  </tr>
  </tbody>
</table>

回答:


139

ulli要素はdisplay: blockデフォルトであるので、それらに自動マージンとコンテナよりも小さい幅を与えます。

ul {
    width: 70%;
    margin: auto;
}

それらの表示プロパティを変更した場合、または通常の配置規則を上書きするもの(フローティングなど)を実行した場合、これは機能しません。


4
これで満足できない場合は、おそらく次のようになります。stackoverflow.com
Bruiser

10
幅の設定:自動; と表示:インラインブロック; ulはテキスト行のように振る舞うことができます。その後、text-align:center;を使用できます。親要素。これにより、幅が固定されているのではなく、内部コンテンツの変化に応じてulを拡大および縮小できます。
i_a 2014

@Chetabahana —要素ではなくテキストを表示しています:jsfiddle.net/qwbexxog/3
Quentin

すべての解像度で正常に動作しない、フレックスセンターは動作しています
Srinivas08

163

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リンクは次のとおりです。


それが他のソリューションで私が抱えていた問題であり、変更した場合、li要素では機能しません。
Aram Kocharyan、2011

これをBootstrap 3 navに使用していて、に追加float: none;する必要がありましたul
Dylan Valade


22

手順:

  1. style="text-align:center;"divに書き込むul
  2. 書き込みstyle="display:inline-table;"ul
  3. 書き込みstyle="display:inline;"li

または使用

<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>

マージンを追加する必要があります。それ以外の場合は、互いにネストされていますjsfiddle.net/qwbexxog/4
チェタバハナ

9

これは、DIVコンテナー内でULを中央に配置するためのより良い方法です。

このCSSソリューションは、WidthプロパティとFloatプロパティを使用しません。Float:LeftとWidth:70%は、異なるメニュー項目の異なるページでメニューを複製する必要があるときに頭痛の種となります。

幅を使用する代わりに、パディングとマージンを使用して、テキスト/メニュー項目の周囲のスペースを決定します。また、LI要素でFloat:Leftを使用する代わりに、display:inline-blockを使用します。

LIを左にフロートすると、コンテンツを文字どおり左にフロートし、次に上記のハックの1つを使用して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;
}

6

どちらか

div ul
{
 width: [INSERT FIXED WIDTH]
 margin: 0 auto;
}

または

div li
{
text-align: center;
}

それがどのように見えるか(またはそれらを組み合わせるか)に依存します


2
後者のオプションでは、リストアイテムは中央揃えされず、インラインコンテンツのみが中央揃えになります。
クエンティン

それでも、<li>スタイルが設定されていなければ、外観は同じです。
FPの

4

ブロックオブジェクト(例:)を中央に配置するには、そのul上に幅を設定する必要があります。その後、そのオブジェクトの左右のマージンをautoに設定できます。

ブロックオブジェクトのインラインコンテンツ(例:のインラインコンテンツli)を中央揃えにするには、cssプロパティを設定しますtext-align: center;




1

興味深いですが、ul内の浮動li要素でこれを試してください: ここの例

ここでの問題:ulは、実際に中央に位置するために固定幅を必要とします。ただし、コンテナーの幅(または動的)を基準にしたいので、ul:0 autoは機能しません。

より良い方法は、UL / Liリストを手放して、ここで別のアプローチのを使用することです


0

あなたが幅を知っている場合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;
  }

0

ここに私が見つけることができる解決策があります:

#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;
}

0

別のオプションは次のとおりです。

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;
}

0

同じケースを探していて、の幅を変更してすべての回答を試しました<li>
残念ながら、すべてが<ul>ボックスの左と右で同じ距離を得られませんでした。

最も近い一致はこの答えです、パディングで幅の変化調整する必要があります

.container ul {
    ...
    padding: 10px 25px;
}

.container li {
  ...
  width: 100px;
}

以下の結果を参照してください。ボックス<li>までの距離もすべて<ul>同じです。ここに画像の説明を入力してください

あなたはこのjsFiddleでそれをチェックするかもしれません:http ://jsfiddle.net/qwbexxog/14/


-1
<div id="container">
  <table width="100%" height="100%">
    <tr>
      <td align="center" valign="middle">
        <ul>
          <li>item 1</li>
          <li>item 2</li>
          <li>item 3</li>
        </ul>
      </td>
    </tr>
  </table>
</div>

-4

オールドスクールのセンタータグを使用する

<div> <center> <ul> <li>...</li> </ul></center> </div>

:-)


マークアップコードでスタイルタイプの式を使用することは避けてください。これがCSSの目的です。
FPの

1
動作可能ですが、次の点に注意してください:「center要素はHTML 4.01では非推奨であり、XHTML 1.0 Strict DTDではサポートされていません」w3schools.com/TAGS/tag_center.asp
okw

4
ため息 W3Schoolsのは、いつものように、不完全な、誤った情報を提供します。4.01ではなく4.0で非推奨になり、Strictバリアントには表示されません(XHTML 1.0を1つにすることは奇妙な選択です)。
クエンティン

前述のように、これらはHTML 4.01で非推奨になりました...また、これは単に悪い習慣です...
ジョニー・ヘインズ

2
はい、彼はこの種のタグを使用すべきではありませんが、これは否定的な回答に値する理由ではありません。時々、私たちは最もファットなソリューションを求めています。そして私にとって、この答えは肯定的です。
workdreamer '09
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.