Как позиционировать списки по центру экрана?

Добрый день.
Прошу помочь с решением следующего вопроса:
Необходимо центрировать список ul по горизонтали, но при этом, чтобы дочерние элементы li позиционировались с левой стороны.
Как это выглядит сейчас:
b22ae312b00c4d6f953e530884226bd0.jpgРезультат должен быть такой:
1328dc3064234122b35b503accfbbbf5.jpg

Если указать в стилях text-align: center, то дочерние элементы li тоже позиционируются по центру:
6df91ab1c64145d790c8082b67037957.jpgПример: test.inqseo.com

ps: Дизайн адаптивный
  • Вопрос задан
  • 525 просмотров
Пригласить эксперта
Ответы на вопрос 5
@zhainar
Гуглю за вас
.container { text-align: center; }
ul { text-align: left; }
Ответ написан
На свежую голову предлагаю сделать меню инлайн-блоком и назначать ему max-width через медиа-запросы. Инлайн-блок позволит отцентрировать меню внутри контейнера как обычный текст. Внутри меню картинки можно выровнять по левому краю — токе, как обычный текст, поскольку у вас элементы списка уже сделаны инлайнами. Максимальная ширина не позволит меню расползаться на весь экран, когда картинки перестанут помещаться в одной строке. Через медиа-запросы максимальную ширину можно менять или вообще отменять, когда нужна резина по всей ширине экрана. Суть решения: https://jsfiddle.net/glebkema/Lk00dfb3/

Инлайн-блок отличается от обычного блока тем, что не расползается до максимальной ширины, когда в меню только два пункта.

Для test.inqseo.com предлагаю добавить:

.types-wrapper {
  text-align: center;
}

#types .types-list {
  text-align: left;
  display: inline-block;
  max-width: 757px;
}

@media only screen and (max-width: 800px) and (min-width: 600px) {
  #types .types-list {
    max-width: 504px;
  }
  #types .types-list li {
    /* width: 45%; */
  }
}

Для других медиа-запросов нужно настроить дополнительно.

Вчера решал задачу так:

Подзадача 1. Отцентрировать меню внутри родителя, которому назначено относительное позиционирование. Решение — позиционировать меню абсолютно и сдвигать его с помощью transform.

Подзадача 2. Когда пункты меню не помещаются в одной строке и переносятся на вторую, меню расползается на всю ширину контейнера. Нужно, чтобы меню сузилось обратно. Решение — разделить меню на строки и в каждой оставить столько элементов, сколько помещается без переносов. Для этого элемент, который уже не поместится, надо назначить началом новой строки. На экранах разной ширины в строке будет разное количество элементов, поэтому используем медиа-запросы и для каждого задаём формулу nth-of-type.

Вчерашний результат: https://jsfiddle.net/glebkema/20rc3pb7/
Ответ написан
LenovoId
@LenovoId
svg, css,js
codepen.io это пример

<div id="mainmenu">
   <ul>
       <li><a href="#"> Пункт 1 </a></li>
       <li><a href="#"> Пункт 2 </a></li>
       <li><a href="#"> Пункт 3 </a></li>
       <li><a href="#"> Пункт 4 </a></li>
       <li><a href="#"> Пункт 5 </a></li>
   </ul>
</div>

* {
    margin:0;
    padding:0
}
#mainmenu {
    position: relative;
    overflow:hidden;
    height:30px;
    margin:20px 0
}
#mainmenu ul {
    list-style:none;
    margin:0;
    padding:0;
    position: relative;
    left:50%;
    float:left;
    font:14px Arial, Helvetica, sans-serif;
    height:30px
}
#mainmenu ul li {
    position:relative;
    left:-50%;
    float:left;
    margin:0 5px;
    height:30px
}
#mainmenu ul li a {
    display:block;
    text-decoration:none;
    padding:4px 10px
}
#mainmenu ul li a:hover {
    background-color:#444;
    color:#ffffff
}

Источник

097f64ae42244d3ead562b5099b541b4.png
Ответ написан
trampick
@trampick
Веб-разработчик
Если ты знаешь точно сколько li должно вмещаться в строку, то можно посчитать ширину ul и сделать так:
codepen.io/trampick/pen/WwzXLX
Ответ написан
arizona
@arizona
а что я, собственно, здесь делаю?...
Попробуйте для списка растягивание содержимого по ширине:
#types .types-list {
    text-align: justify;
    text-align-last: center;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы