To achieve this layout of a fully justified menu list, I can not use CSS pseudo-classes to display separators between list items; instead, I have to put the separator directly in the HTML.
Since according to HTML5 standard in an <ul>
only <li>
and script-supporting elements are allowed, I made the below code. It is valid HTML5 but it seems quirky to me. Any concerns?
ul {
list-style: none;
padding: 0;
margin: 0;
display: flex;
justify-content: space-between;
}
li.home {
padding: 0;
}
li,
script::after {
vertical-align: middle;
padding-top: 10px;
}
nav {
border-bottom: 1px solid black;
border-top: 1px solid black;
height: 40px;
}
script.separator {
display: block;
}
script.separator::after {
content: "*";
}
<nav id="main-menu">
<ul>
<li class="home">
<a href="/de"><img src="http://dummyimage.com/40x40/000/fff"></a>
</li>
<script class="separator"></script>
<li class="second"><a href="#">Item 1</a></li>
<script class="separator"></script>
<li><a href="#">Item 2</a></li>
<script class="separator"></script>
<li><a href="#">One more Item</a></li>
<script class="separator"></script>
<li><a href="#">Another Item</a></li>
<script class="separator"></script>
<li class="last"><a href="#">Contact</a></li>
</ul>
</nav>