Як встановити вертикальний пробіл між елементами списку?


115

Всередині <ul>елемента чітко вертикальний інтервал між рядками може бути відформатований за допомогою атрибута висоти рядка.

Моє запитання полягає в тому <ul>, як всередині елемента, як встановити вертикальний інтервал між елементами списку?


1
ul li { margin: ???; padding: ???; line-height: ???; }всі або деякі з цих атрибутів CSS
Бред Крісті

Відповіді:


112

Ви можете використовувати маржу. Дивіться приклад:

http://jsfiddle.net/LthgY/

li{
  margin: 10px 0;
}

конкретно, використовуйте поле для liелементів, а не для ulелемента.
дуанев

41

HTML

<ul>
   <li>A</li>
   <li>B</li>
   <li>C</li>
   <li>D</li>
   <li>E</li>
</ul>

CSS

li:not(:last-child) {
    margin-bottom: 5px;
}

EDIT: Якщо ви не використовуєте спеціальний регістр для останнього елемента li, після цього у списку буде невеликий пробіл, який ви можете побачити тут: http://jsfiddle.net/wQYw7/

Тепер порівняйте це з моїм рішенням: http://jsfiddle.net/wQYw7/1/

Звичайно, це не працює в старих браузерах, але ви можете легко використовувати js розширення, що дозволить це використовувати для старих браузерів.


1
@Layne частина нашої роботи як веб-розробників / кодерів - це надання рішень, які працюватимуть у якомога більшій кількості середовищ. Ваша відповідь справді надмірна для поставленого питання.
дезінфор

1
Я не думаю, що так. Ви надаєте рішення лише для середовища, на яке хочете націлити, все інше було б надмірним, якщо ви не плануєте розширюватись. Плюс до всіх відповідей є недолік додавання місця перед та / або після першого / останнього елемента списку. Про це не було питання, він хотів мати лише інтервал між елементами списку (принаймні, він це написав). Останній елемент в інших відповідях буде мати інтервал після цього, хоча немає наступних елементів li.

Середовище, з яким він працює, - це веб-браузери. Це не зайвий намір запропонувати рішення, яке працює всюди. Плюс, якщо ви дійсно переживаєте за останній запас елемента, ви б не запропонували рішення, яке потребуватиме js для виправлення. Ви можете використати, :first-childі він буде працювати у всьому IE7 +
дезінформувати

4
@disinдля цього я не погоджуюся. Частина напруги веб-розробки пов'язана з підтримкою браузерів, які не підтримують нас. Сафарі - один із них. Нам потрібно протистояти веб-переглядачам, які стримують Інтернет, medium.com/@richtr/… . Наші веб-сторінки повинні повернути повідомлення "Ми не підтримуємо ваш браузер", а не переходити через пекло, щоб воно працювало всюди. І нам потрібно інформувати і протистояти клієнтам. Або ми не можемо нічого робити і бути приголомшливими килимами для підлоги.
1,21 гігаватта

@ 1.21gigawatts "Наші веб-сторінки повинні повернути" Ми не підтримуємо ваш браузер "," ні, ні. Це називається саботажем конкуренції і є незаконним у багатьох країнах. Microsoft зробила це зі Skype для Інтернету. Skype для Web все ще чудово працює в інших браузерах. Google зробив несправності Youtube у Safari більше року. Google забороняє користувачам Tor використовувати певні послуги. Чи не сенс "веб-платформи" робити додатки та послуги платформою незалежними, як це не блокувати конкретні платформи? Якщо ви хочете це зробити, то чому б не зробити натомість програми замість цього? Зрештою, вони більш потужні.
Андреас

35

Я б схильний до цього, який має добродію підтримки IE8.

li{
    margin-top: 10px;
    border:1px solid grey;
}

li:first-child {
    margin-top:0;
}

JSFiddle


27

Додайте marginдо своїх liтегів. Це створить простір між liі ви можете використовувати line-heightдля встановлення інтервалу між текстом у liтегах.


3

Багато разів при створенні вибухів HTML електронної пошти ви не можете використовувати таблиці стилів або блоки стилів / стилів. Усі CSS повинні бути вбудованими. У випадку, коли ви хочете відрегулювати відстань між кулями, я використовую li style = "margin-bottom: 8px;" у кожному пункті кулі. Налаштуйте значення пікселів за своїм смаком.


Також застарілі теги стилю / стилю
Бен Слейд,

2

Щоб застосувати до всього списку, використовуйте

ul.space_list li { margin-bottom: 1em; }

Потім у html:

<ul class=space_list>
<li>A</li>
<li>B</li>
</ul>

0

встановлення нижньої нижньої частини для кожного списку за допомогою псевдокласу є життєздатним методом. Також може використовуватися висота лінії. Пам'ятайте, що властивості шрифту, такі як сімейство шрифтів, вага шрифту тощо, відіграють роль для нерівномірної висоти.


2
Чи можете ви навести приклад свого рішення?
Muldec

-9

<br>між <li></li>рядковими записами, здається, відмінно працює у всіх веб-браузерах, які я намагався, але він не вдається передати онлайн-перевірку W3C CSS3. Це дає мені саме міжрядкові інтервали, за якими я перебуваю. Що стосується мене, оскільки це, безперечно, працює, я наполегливо використовую його, що б не говорив W3C, поки хтось не зможе придумати хорошу юридичну альтернативу.


Ваша пропозиція прекрасно працює, якщо ви задоволені поточною висотою лінії, але я думаю, що він хоче вказати свій простір. Використовуючи розриви рядків, просто створюйте нові лінії, використовуючи поточну висоту лінії.
1,21 гігаватта

Якщо ви повторите список із багатьма пунктами, додавання br - жахлива практика. Розмітка - це найбезпечніший і найкоротший спосіб додавання місця, оскільки запропоновані вище відповіді.
SeaWarrior404
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.