HTML list-style-type dash
есть ли способ создать список-стиль в HTML с тире (т. е.-или -– или —), т. е.
<ul>
<li>abc</li>
</ul>
вывод:
- abc
мне пришло в голову сделать это с чем-то вроде li:before { content: "-" };, хотя я не знаю минусов этого варианта (и был бы очень обязан за обратную связь).
более обобщенно, я бы не прочь знать, как использовать общие символы для элементов списка.
16 ответов:
вы могли бы использовать
:beforeиcontent:учитывая, что это не поддерживается в IE 7 и ниже. Если вы в порядке с этим, то это ваше лучшее решение. Смотрите Могу Ли Я Использовать или QuirksMode таблицы совместимости CSS для получения полной информации.немного более неприятное решение, которое должно работать в старых браузерах, - это использовать изображение для маркера и просто сделать изображение похожим на тире. Смотрите W3C
list-style-imageстраница для примера.
существует простое исправление (текст-отступ), чтобы сохранить эффект списка с отступом с помощью
:beforeпсевдокласс.ul { margin: 0; } ul.dashed { list-style-type: none; } ul.dashed > li { text-indent: -5px; } ul.dashed > li:before { content: "-"; text-indent: -5px; }Some text <ul class="dashed"> <li>First</li> <li>Second</li> <li>Third</li> </ul> <ul> <li>First</li> <li>Second</li> <li>Third</li> </ul> Last text
используйте этот:
ul { list-style: square inside url('data:image/gif;base64,R0lGODlhBQAKAIABAAAAAP///yH5BAEAAAEALAAAAAAFAAoAAAIIjI+ZwKwPUQEAOw=='); }
вот версия без какой-либо позиции относительной или абсолютной и без текстового отступа:
ul.dash { list-style: none; margin-left: 0; padding-left: 1em; } ul.dash > li:before { display: inline-block; content: "-"; width: 1em; margin-left: -1em; }наслаждаться ;)
ul { list-style-type: none; } ul > li:before { content: "–"; /* en dash */ position: absolute; margin-left: -1.1em; }demo скрипка
позвольте мне добавить свою версию тоже, в основном для меня, чтобы найти свое собственное предпочтительное решение снова:
ul { list-style-type: none; /*use padding to move list item from left to right*/ padding-left: 1em; } ul li:before { content: "–"; position: absolute; /*change margin to move dash around*/ margin-left: -1em; }<!-- Just use the following CSS to turn your common disc lists into a list-style-type: 'dash' Give credit and enjoy! --> Some text <ul> <li>One</li> <li>Very</li> <li>Simple Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</li> <li>Approach!</li> </ul>
в моем случае добавление этого кода в CSS
ul { list-style-type: '- '; }было достаточно. Все очень просто.
вот мой скрипка версия:
класс (modernizr)
.generatedcontenton<html>практически означает IE8+ и любой другой вменяемый браузер.<html class="generatedcontent"> <ul class="ul-dash hanging"> <li>Lorem ipsum dolor sit amet stack o verflow dot com</li> <li>Lorem ipsum dolor sit amet stack o verflow dot com</li> </ul>CSS:
.ul-dash { margin: 0; } .ul-dash { margin-left: 0em; padding-left: 1.5em; } .ul-dash.hanging > li { /* remove '>' for IE6 support */ padding-left: 1em; text-indent: -1em; } .generatedcontent .ul-dash { list-style: none; } .generatedcontent .ul-dash > li:before { content: "–"; text-indent: 0; display: inline-block; width: 0; position: relative; left: -1.5em; }
мое решение заключается в добавлении дополнительного тега span С mdash в нем:
<ul class="mdash-list"> <li><span class="mdash-icon">—</span>ABC</li> <li><span class="mdash-icon">—</span>XYZ</li> </ul>и добавление в css:
ul.mdash-list { list-style:none; } ul.mdash-list li { position:relative; } ul.mdash-list li .mdash-icon { position:absolute; left:-20px; }
Я не знаю, есть ли лучший способ, но вы можете создать пользовательский графический маркер, изображающий тире, а затем сообщить браузеру, что вы хотите использовать его в своем списке с list-style-type собственность. Пример на этой странице показывает, как использовать графику в качестве маркера.
Я никогда не пробовал использовать :раньше так, как у вас, хотя это может сработать. Недостатком является то, что он не будет поддерживаться некоторые старые браузеры. Моя внутренняя реакция заключается в том, что это все еще достаточно важно, чтобы принять во внимание. В будущем, это может быть не так важно.
EDIT: я сделал небольшое тестирование с подходом OP. В IE8 я не мог заставить технику работать, поэтому она определенно еще не кросс-браузер. Кроме того, в Firefox и Chrome настройка типа списка-стиля в none в сочетании, по-видимому, игнорируется.
вместо использования lu li, используется
dl (definition list) and dd.<dd>можно определить с помощью стандартного стиля css, такого как{color:blue;font-size:1em;}и использовать в качестве маркера любой символ после тега html. Он работает как ul li, но позволяет использовать любой символ, вам просто нужно отступить его, чтобы получить эффект списка с отступом, который вы обычно получаете сul li.CSS: dd{text-indent:-10px;} HTML <dl> <dd>- One</dd> <dd>- Two</dd> <dd>- Three</dd></dl>дает гораздо более чистый код! Таким образом, вы можете использовать любой тип символа в качестве маркера! Отступ имеет значение около
-10pxи он отлично работает!
иначе:
li:before { content: '14a0a0'; /* em-dash followed by two non-breaking spaces*/ } li { list-style: none; text-indent: -1.5em; padding-left: 1.5em; }
CSS:
li:before { content: '— '; margin-left: -20px; } li { margin-left: 20px; list-style: none; }HTML:
<ul> <li>foo</li> <li>bar</li> </ul>
то, что сработало для меня было
<ul> <li type= "none"> – line 1 </li> <li type= "none"> – line 2 </li> <li type= "none"> – line 3 </li> </ul>
Comments