Интересно, что я не думаю, что какие-либо из опубликованных решений достаточно хороши, потому что они основаны на том факте, что используемый символ имеет ширину 1 м, что не обязательно должно быть так (за исключением, возможно, ответа Джона Магнолии, который, однако, используетплавает, что может усложнить ситуацию по-другому).Вот моя попытка:
ul {
list-style-type: none;
margin-left: 0;
padding-left: 30px; /* change 30px to anything */
text-indent: -30px;
}
ul li:before {
content: "xy";
display: inline-block;
width: 30px;
text-indent: 0;
text-align: center; /* change this for different bullet position */
}
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam</li>
<li>Item 4</li>
<li>Item 5</li>
</ul>
Это имеет следующие преимущества (по сравнению с другими решениями):
- Это не зависит от ширины символа как вы видите в примере.Я использовал два символа, чтобы показать, что он работает даже с широкими пулями.Если вы попробуете это в других решениях, вы получите смещенный текст (фактически он даже виден с символом * в увеличенных масштабах).
- Это дает вам контроль над пространством, используемым пулями ,Вы можете заменить 30 пикселей на что угодно (даже 1em и т. Д.).Только не забыли поменять его на все три места.
- Если дает вам общее управление позиционированием пули .Просто замените
text-align: center;
на что угодно.Например, вы можете попробовать
color: red;
text-align: right;
padding-right: 5px;
box-sizing: border-box;
или, если вам не нравится играть с рамкой, просто вычтите отступ (5px) из ширины (т.е. width: 25px в этом примере).Есть много вариантов. - Он не использует поплавки, поэтому он может содержаться где угодно.
Наслаждайтесь.