Как центрировать неупорядоченный список?

Мне нужно центрировать неупорядоченный список неизвестной ширины, сохраняя при этом элементы списка влево.

Достигните того же результата, что и:

HTML

<div>
    <ul>
        <li></li>
        <li></li>
        <li></li>
    </ul>
</div>

CSS

div { text-align: center; }
ul { display: inline-block; text-align: left; }

За исключением моего <ul> не имеет родительского div. ul { margin: 0 auto; } не работает, потому что у меня нет фиксированной ширины. ul { text-align: center; } не работает, потому что элементы списка больше не будут выровнены. Итак, как я могу центрировать этот <ul>, сохраняя при этом <li> выравнивание влево (без наличия родительской обертки div)?

<ul>
    <li></li>
    <li></li>
    <li></li>
</ul>

EDIT: Возможно, моя формулировка не была лучшей... Первый блок кода уже работает... мне нужно сделать это без <div> обертка, если это возможно, конечно. Поплавковые трюки? Псевдоэлементные трюки? Должен быть способ.

Ответ 1

<html>
<body>    
<style>
    ul { display:table; margin:0 auto;}
<style>
     <ul>
        <li>56456456</li>
        <li>4564564564564649999999999999999999999999999996</li>
        <li>45645</li>
    </ul>
    </body>
</html>

http://jsfiddle.net/fNFYr/25/

EDIT: не заметил проблему с шириной.

Ответ 2

http://jsfiddle.net/psbu2/3/

Если вы можете использовать свои собственные пули списка

Попробуйте следующее:

<html>
    <head>
        <style type="text/css">

            ul {
                margin:0;
                padding:0;
                text-align: center;
                list-style:none;                
            }
            ul  li {
                padding: 2px 5px;               
            }

            ul li:before {
                content:url(http://www.un.org/en/oaj/unjs/efiling/added/images/bullet-list-icon-blue.jpg);;
            }
        </style>
    </head>
    <body>

            <ul>
                <li>1</li>
                <li>2</li>
                <li>3</li>
            </ul>

    </body>
</html>

Ответ 3

С вашего поста я понимаю, что вы не можете установить ширину в li

так что об этом?

<ul>
    <li>Hello</li>
    <li>Hezkdhkfskdhfkllo</li>
    <li>Hello</li>
</ul>

CSS

ul{
border:2px solid red;
display:inline-block;
}
li{
  display:inline;
  padding:0 30%; /* try adjusting the side % to give a feel of center aligned.*/
}

Вот демо. http://codepen.io/anon/pen/HhBwx