#html #css
#HTML #css
Вопрос:
Как мне разместить значки (изображения) на левом поле списка?
Вот пример в HTML
<ul>
<li>
<img class="icon" src="https://via.placeholder.com/40x30.png/f60"/>
<img class="icon" src="https://via.placeholder.com/40x30.png/ff0"/>
Some text
</li>
<li>
<img class="icon" src="https://via.placeholder.com/40x30.png/ff0"/>
Some other text
</li>
</ul>
и CSS
body {
margin-left: 200px;
}
.icon {
display: inline-block;
position:relative;
left: -80px;
}
Тот же пример в живой демонстрации https://www.codeply.com/p/R2rUeDHoVC
Вот что я хочу
Вот что у меня есть so fa (изображения создают нежелательные пробелы в тексте и скрывают маркеры списка).
Если на элемент приходится несколько маркеров, группа изображений if должна увеличиваться влево (все изображения должны быть выровнены по правому краю).
Я пробовал различные настройки для отображения, положения, гибкости и т. Д., Но почему-то не могу найти правильную комбинацию.
Комментарии:
1. посмотрите на селектор css ::before
Ответ №1:
Мое решение зависит от ограниченного количества значков (изображений), но его можно улучшить.
РЕДАКТИРОВАТЬ: я отредактировал ответ, чтобы сохранить маркеры.
body {
margin-left: 200px;
}
li {
position: relative;
height: 35px;
}
li .icon {
position: absolute;
display: inline-block;
left: -65px;
}
li .icon:nth-child(2) {
position: absolute;
display: inline-block;
left: -110px;
}
li .icon:nth-child(3) {
position: absolute;
display: inline-block;
left: -160px;
}
li .icon:nth-child(4) {
position: absolute;
display: inline-block;
left: -210px;
}
<ul>
<li>
<img class="icon" src="https://via.placeholder.com/40x30.png/f60"/>
<img class="icon" src="https://via.placeholder.com/40x30.png/ff0"/>
Some text
</li>
<li>
<img class="icon" src="https://via.placeholder.com/40x30.png/ff0"/>
Some other text
</li>
<li>
<img class="icon" src="https://via.placeholder.com/40x30.png/f60"/>
And even more text
</li>
</ul>
Комментарии:
1. Я хотел сохранить маркеры списка, поскольку могут быть элементы, которые не оформлены. Похоже, что модификация ответа Озгура решает проблему. Возможно, есть более элегантное решение с помощью селектора ::before, предложенного DCR.
2. @DavidL Я отредактировал свой ответ, чтобы сохранить маркеры.
Ответ №2:
Вот решение, основанное на ответе Озгура, но с сохранением маркеров списка. Тот же пример кода доступен на https://www.codeply.com/p/r036MF41Fp
body {
margin-left: 200px;
background: #fff;
}
li {
position: relative;
}
li .icon {
position: absolute;
display: inline-block;
left: -60px;
}
li .icon:nth-child(2) {
position: absolute;
display: inline-block;
left: -105px;
}
li .icon:nth-child(3) {
position: absolute;
display: inline-block;
left: -150px;
}
li .icon:nth-child(4) {
position: absolute;
display: inline-block;
left: -195px;
}
<ul>
<li>
<img class="icon" src="https://via.placeholder.com/40x30.png/f60"/>
<img class="icon" src="https://via.placeholder.com/40x30.png/ff0"/>
Some text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac lectus id quam iaculis condimentum. Aenean venenatis nec felis at dictum. Nullam vitae rhoncus est.
</li>
<li>
<img class="icon" src="https://via.placeholder.com/40x30.png/f60"/>
Some text 2. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac lectus id quam iaculis condimentum. Aenean venenatis nec felis at dictum. Nullam vitae rhoncus est.
</li>
<li>
Some text 3. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac lectus id quam iaculis condimentum. Aenean venenatis nec felis at dictum. Nullam vitae rhoncus est.
</li>
<li>
<img class="icon" src="https://via.placeholder.com/40x30.png/f60"/>
<img class="icon" src="https://via.placeholder.com/40x30.png/ff0"/>
<img class="icon" src="https://via.placeholder.com/40x30.png/660"/>
<img class="icon" src="https://via.placeholder.com/40x30.png/6f0"/>
Some text 4. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac lectus id quam iaculis condimentum. Aenean venenatis nec felis at dictum. Nullam vitae rhoncus est.
</li>
</ul>