CSS display: inline свойство со list-style-image: property в тегах <li>

У меня проблема с использованием свойства CSS display:inline со свойством list-style-image: в тегах <li>. По сути, я хочу вывести следующее:

* Link 1  * Link 2

где * представляет собой изображение.

Я делаю это с помощью следующего фрагмента HTML:

<ol class = "widgets">
    <li class = "l1">Link 1</li>
    <li class = "l2">Link 2</li>
</ol>

который оформлен с помощью следующего фрагмента CSS:

ol.widgets { list-style-type:none; }

ol.widgets li { display:inline;
                margin-left:10px; }

ol.widgets li.l1 { list-style-image:url(image1.gif); }

ol.widgets li.l2 { list-style-image:url(image2.gif); }

Проблема в том, что когда элементы списка отображаются встроенными, изображения, связанные с элементами списка, не отображаются. Они делать появляются, если я убираю свойство display:inline в теге <li>.

Есть ли способ заставить изображения отображаться даже тогда, когда элементы списка отображаются встроенными, или это просто невозможно?

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
20
0
100 266
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Попробуйте использовать float: left (или right) вместо display: inline. Встроенное отображение заменяет отображение элементов списка, что и добавляет пункты списка.

Большой! Это все еще выглядело не совсем правильно (изображения перекрывали текст), но добавление list-style-position: inside ко всем элементам <li> помогло. Спасибо!

mipadi 10.12.2008 00:39

что-то еще не так, это является правильная техника. попробуйте соответствующие поля на <li> и в случае неудачи попробуйте это на простой тестовой странице

annakata 10.12.2008 00:47

Я использовал display: inline with: before для пуль. Работает отлично! Я предпочитаю это как альтернативу поплавкам

AlessMascherpa 28.08.2013 13:28

Вы хотите, чтобы элементы списка располагались рядом друг с другом, но не были встроенными элементами. Так что вместо этого используйте их:

ol.widgets li { 
    float: left;
    margin-left: 10px;
}

Если вы посмотрите на свойство 'display' в спецификации CSS, вы увидите, что «list-item» - это именно тип отображения. Когда вы устанавливаете элемент как «встроенный», вы заменяете тип отображения по умолчанию list-item и маркер, в частности, является частью типа list-item.

В приведенном выше ответе предлагается float, но я пробовал это, и это не работает (по крайней мере, в Chrome). Согласно спецификации, если вы устанавливаете свои боксы в положение с плавающей запятой влево или вправо, «Отображение игнорируется, если оно не имеет значения« нет »». Я понимаю, что это означает, что тип отображения по умолчанию «элемент списка» пропадает (беря с собой маркер), как только вы перемещаете элемент.

Обновлено: Да, думаю, я ошибался. См. Верхнюю запись. :)

Я бы посоветовал не использовать list-style-image, так как он ведет себя по-разному в разных браузерах, особенно положение изображения.

вместо этого вы можете использовать что-то вроде этого

ol.widgets,
ol.widgets li { list-style: none; }
ol.widgets li { padding-left: 20px; backgroud: transparent ("image") no-repeat x y; }

он работает во всех браузерах и даст одинаковый результат в разных браузерах.

Я на самом деле думаю, что это, вероятно, правильный способ использовать изображения пули, но они все равно должны быть плавающими, а не встроенными

annakata 10.12.2008 00:48

да, inline иногда вызывает проблемы с позицией в стиле списка, в IE это разочаровывает.

Liwen 10.12.2008 01:14

Вам нужно изображение стиля и Nav с плавающей точкой друг к другу, а затем используйте это

ol.widgets ul
{
list-style-image:url('some-img.gif');
}
ol.widgets ul li
{
float:left;
}

У меня была аналогичная проблема, я решаю с помощью css ": before" .. код выглядит так:

.widgets li:before{
    content:"• ";
}

Другие вопросы по теме