2017-03-22 5 views
0

私は通常、次のコードを使って動的な幅の要素を中央に配置します。未知の幅でセンタリング

.horz-vert-center { 
    position: absolute; 
    left: 50%; 
    top:50%; 
    transform: translate(-50%,-50%); 
} 

問題は、私が望むより早くサイズを変更することです。例えば。

enter image description here

私は本当にこれを理解していない私は%値を使用していた場合、なぜマージンが小さくなり続けるません。メニューは、それはまだ1に収まる可能性が二行に行きますか?ここ

デモ: https://codepen.io/garethj/pen/LWdaRr

+0

それは私のために正常に動作スニペット。 –

+0

リサイズを続ける - それは前にフォールドする必要があります – user1059511

+0

'display:inline-flex'の値を与えることができますか? – zik

答えて

0

"セオドア・K." を使用してちょうど別のアプローチ

Demo

.horz-vert-center { 
 
    width:50%; 
 
    margin: auto; 
 
    border: 1px #000 solid; 
 
    text-align: center; 
 
} 
 
.horz-vert-center li{ 
 
    display: inline-block; 
 
    float: none; 
 
} 
 

 
*{margin:0;padding:0;}
<ul class="horz-vert-center"> 
 
    <li>About</li> 
 
    <li>Work</li> 
 
    <li>Blog</li> 
 
    <li>Journal</li> 
 
</ul>

+0

が機能します。これは、テキスト以外の要素を扱っている場合は機能しません。 – user1059511

+0

これは、幅が50%であるため、要件に答えるようになりました(そして、テキストは質問内のコードを折ってしまうだけでなく、質問のように垂直にセンタリングされません) –

1

liuldisplay: inline-block; float: none;white-space:nowrap;を追加するには、トリックを行うようです。

.horz-vert-center { 
 
    position: absolute; 
 
    left: 50%; 
 
    top: 50%; 
 
    transform: translate(-50%, -50%); 
 
    white-space:nowrap; 
 
} 
 
.horz-vert-center li{ 
 
    display: inline-block; 
 
    float: none; 
 
} 
 

 
body {background:#ccc} 
 
*{margin:0;padding:0;font-family:arial;font-size:20px} 
 
ul {list-style-type:none} 
 
li {float:left;margin-right:10px} 
 
li:last-child {margin-right:0;}
<ul class="horz-vert-center"> 
 
    <li>About</li> 
 
    <li>Work</li> 
 
    <li>Blog</li> 
 
    <li>Journal</li> 
 
</ul>

+0

どうもありがとうと私の要素を中心にしたいと思っています。それがテキストでないなら、私はそれがうまくいかないと思う。 5%のマージンをどのようにして中心化するのですか?私のコードは常に要素を50%の幅に保つと言っているのでしょうか? "width:50%"を削除すると、 – user1059511

関連する問題