css3 — Как из вертикального списка — сделать горизонтальный

Вопрос задан

Изменён 5 лет 2 месяца назад

Просмотрен 2k раз

Как из вертикального списка:

Сделать, чтобы он был горизонтальный? Вот кусочек кода:

  • css3
  • html5
  • списки

2

Через display: inline-block для li

.horisontal-ul li {
   display: inline-block;
}
<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>
          
         
ul {
  display: flex;
}
li {
  margin-left: 20px;
}
li:nth-child(1){
  margin:0;
}
<nav>
  <ul>
    <li>Главная</li>
    <li>Обучения</li>
    <li>Конференция</li>
    <li>О нас</li>
  </ul>
</nav>

Вариантов несколько.

1 Варинат. C помощью flex:

ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
}

/* 1. Flex */
nav ul {
  display: flex;
  align-items: center;
  justify-content: center;
}

nav ul li {
  margin: 0 1rem;
}
<nav>
  <ul>
    <li>
      <a href="#">Главная</a>
    </li>
    <li>
      <a href="#">Обучение</a>
    </li>
    <li>
      <a href="#">Конференции</a>
    </li>
    <li>
      <a href="#">О нас</a>
    </li>
  </ul>
</nav>

2 Вариант. inline-block:

ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
}

/* 2. inline-block */
nav ul {
  text-align: center;
}

nav ul li {
  margin: 0 1rem;
  display: inline-block;
}
<nav>
  <ul>
    <li>
      <a href="#">Главная</a>
    </li>
    <li>
      <a href="#">Обучение</a>
    </li>
    <li>
      <a href="#">Конференции</a>
    </li>
    <li>
      <a href="#">О нас</a>
    </li>
  </ul>
</nav>

3 Вариант.

float: left:

* {
  box-sizing: border-box;
}

ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
}

/* 3. float */
nav ul {
  text-align: center;
  overflow: hidden;
}

nav ul li {
  padding: 0 1rem;
  float: left;
  width: 25%;
}
<nav>
  <ul>
    <li>
      <a href="#">Главная</a>
    </li>
    <li>
      <a href="#">Обучение</a>
    </li>
    <li>
      <a href="#">Конференции</a>
    </li>
    <li>
      <a href="#">О нас</a>
    </li>
  </ul>
</nav>

4 Вариант. table:

* {
  box-sizing: border-box;
}

ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
}

/* 4. table */
nav ul {
  text-align: center;
  display: table;
  width: 100%;
}

nav ul li {
  padding: 0 1rem;
  display: table-cell;
  width: 25%;
}
<nav>
  <ul>
    <li>
      <a href="#">Главная</a>
    </li>
    <li>
      <a href="#">Обучение</a>
    </li>
    <li>
      <a href="#">Конференции</a>
    </li>
    <li>
      <a href="#">О нас</a>
    </li>
  </ul>
</nav>

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

html — CSS.

Как поставить список в одну строку?

Вопрос задан

Изменён 2 года 1 месяц назад

Просмотрен 7k раза

Вроде поставил float: left; но список не выравнивается по левому краю и не встает в одну линию

* {
  margin: 0;
  padding: 0;
}
.header {
  background-color: #EABCBC;
  text-align: center;
  height: auto;
  font: 1.6em arial;
  padding: auto;
}
.complex_list {
  background-color: #76DBE4;
}
.complex_list ul li {
  float: left;
}
.complex_list li {
  font: 0.75em arial;
  list-style: none;
}
.complex_list li a {
  text-decoration: none;
  color: #FF8604;
}
.complex_list li a:hover {
  text-decoration: underline;
  color: blue;
}
<div>
  <h2>Стройка</h2>
  <ul>
    <li><a href="#">Cтройка</a></li>
    <li><a href="#">Cтройка</a></li>
    <li><a href="#">Cтройка</a></li>
    <li><a href="#">Cтройка</a></li>
    <li><a href="#">Cтройка</a></li>
    <li><a href="#">Cтройка</a></li>
    <li><a href="#">Cтройка</a></li>
  </ul>
  
</div>
  • html
  • css
  • float

2

. complex_list ul li — Это значит «все li внутри ul, который внутри complex_list». Селектор неправильный, должен быть ul.complex_list li — «все li внутри ul с классом complex_list» и заработает.

Но float: left предназначен для обтекания текста, а не для позиционирования.
Пробуйте ul.complex_list { display: flex; }:

* {
  margin: 0;
  padding: 0;
}
.header {
  background-color: #169;
  color: white;
  text-align: center;
  height: auto;
  font: 1.6em arial;
  padding: auto;
}
.complex_list {
  background-color: #2bd;
  padding: 4px;
}
ul.complex_list {
  display: flex;
}
.complex_list li {
  font: 0.75em arial;
  list-style: none;
}
.complex_list li a {
  text-decoration: none;
  margin: 2px;
  color: #fff;
}
.complex_list li a:hover {
  text-decoration: underline;
  color: blue;
}
<div>
  <h2>Стройка</h2>
  <ul>
    <li><a href="#">Cтройка</a></li>
    <li><a href="#">Cтройка</a></li>
    <li><a href="#">Cтройка</a></li>
    <li><a href="#">Cтройка</a></li>
    <li><a href="#">Cтройка</a></li>
    <li><a href="#">Cтройка</a></li>
    <li><a href="#">Cтройка</a></li>
  </ul>
  
</div>

4

у вас ошибка в селекторе . complex_list ul li вы пытаетесь применить стили к несуществующему элементу, селектор должен быть такого вида

.complex_list li {
    float: left;
}

хотя для этой задачи лучше использовать

.complex_list li{
    display: inline-block;
}

либо такой вариант

.complex_list {
    display: flex;
}

1

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Как сделать так, чтобы список HTML отображался горизонтально, а не вертикально, используя только CSS?

Задавать вопрос

спросил

Изменено 1 год, 9 месяцев назад

Просмотрено 176 тысяч раз

Мне это нужно, потому что я хочу, чтобы меню (созданное из HTML-списка) отображалось горизонтально.

Я предпочитаю не использовать абсолютное позиционирование, так как оно может стать беспорядочным, когда я начну изменять макет страницы.

Я также хотел бы убрать отступы подсписков. Является ли это возможным?

  • html
  • css
  • меню
  • позиционирование
  • horizontallist

Вам придется использовать что-то вроде ниже

 #меню ул{
  стиль списка: нет;
}
#меню ли{
  дисплей: встроенный;
}
 <дел>
  <ул>
    
  • Первый пункт меню
  • Второй пункт меню
  • Третий пункт меню
  • 3

    Использование дисплея : inline-flex

     #menu ul {
      стиль списка: нет;
      маржа: 0;
      заполнение: 0;
      дисплей: встроенный гибкий
    } 
     <дел>
      <ул>
        
  • 1 пункт меню
  • 2 пункт меню
  • 3 пункта меню