@EvgenyBalalaev

Как сделать такие разделители в меню, как у Wildberries?

Здравствуйте.
Есть задача:
Сделать меню как у вайлбериз в топе Магазин Вайлбериз.
Нужны такие же пункты меню с разделителями.

Данный шаблон будет ставиться потом на OpenCart.
Особенного данного меню заключается в том, что в начале нет разделителя и в конце меню нет разделителя, но это решается (один из способов) путём first- и last-child.

Посмотрел код у вайлдбериз, там реализация сделана путём добавления дополнительных li со свойствами content: "точка".

Сложность у меня возникла вот в чём:

1. Как сделать так, чтобы эти li-разделители появлялись ТОЛЬКО между пунктами меню?
2. При этом эти li-разделители НЕ должны появляться у крайних элементов меню (смотрите конец первой строчки меню на Вайлдбериз и начало второй строчки).

Особенность в том, что шаблон будет кастомизироваться клиентом через админку, а пунктов меню может быть овер-дофига. А то так можно было бы заверстать железно и всё.
По поводу стилизации, то все пункты меню центрировать в контейнере, ну и задать всем элементам свойство, чтобы не выходили в случае если количество символов большое, а переносился весь li на новую строчку.

А как решить вопрос с разделителями? Тут без js не разберёшься, но пока не могу сообразить даже принцип и логику реализации.

Помогите пожалуйста.
Спасибо.
  • Вопрос задан
  • 1658 просмотров
Пригласить эксперта
Ответы на вопрос 5
Inkognitoss
@Inkognitoss
Full-stack разработчик.
Там примерно так https://jsfiddle.net/jvsc4yoj/
Выводить всегда (в цикле php например)
а так вы можете скрыть последний пункт https://jsfiddle.net/jvsc4yoj/1/ чтобы не заморачиваться с php
Ответ написан
leni_m
@leni_m
ЧупаКобрус
Думаю подсчитывать ширину пунктов меню + разделителей. Если больше какого-то значения(т.е. новая строчка) соответственно не добавлять разделитель.
Ответ написан
чтобы у крайних элементов меню небыло "точек" достаточно сделать так
.element:last-child {
 list-style:none;
}
Ответ написан
@SteveenGer
У wildberries всё гораздо проще, на чистом css.
::after {
border-bottom: 1px dashed #ccc;
bottom: 5px;
content: '';
display: block;
height: 20px;
left: 0;
position: absolute;
width: 100%;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы