Я пытаюсь расположить тонкую серую линию между элементами <li> на горизонтальной панели навигации, чтобы обеспечить восприятие связи между элементами. Код будет таким ниже. Как я могу добавить простую линию между этими элементами?
ul {
display: flex;
align-items: stretch; /* Default */
justify-content: space-between;
width: 100%;
margin: 0;
padding: 0;
}
li {
display: block;
flex: 0 1 auto; /* Default */
list-style-type: none;
}<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>Я хотел сказать не через элементы, а рядом по горизонтали между элементами






Вот пример линии, проходящей между каждым из lis.
position: relative к элементу ul, чтобы он стал родительским для элемента :after:after в вертикальную середину символов, используя вертикальный переводz-index и background-color к li, чтобы они оставались «поверх» серой линии.ul {
display: flex;
align-items: stretch; /* Default */
justify-content: space-between;
width: 100%;
margin: 0;
padding: 0;
position: relative;
}
li {
display: block;
flex: 0 1 auto; /* Default */
list-style-type: none;
background-color: white;
padding: 0 0.75em;
z-index: 1;
}
li:first-child {
padding-left: 0;
}
li:last-child {
padding-right: 0;
}
ul:after {
content: '';
border-bottom: 1px solid lightgray;
position: absolute;
transform: translateY(-50%);
top: 50%;
width: 100%;
}<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>Спасибо, Энди, именно так я и думал.
Если вы не возражаете против центрирования текста на панели навигации, это решение должно вам подойти.
ul {
display: flex;
align-items: stretch; /* Default */
justify-content: space-between;
width: 100%;
margin: 0;
padding: 0;
}
li {
display: block;
flex: 0 1 auto; /* Default */
list-style-type: none;
flex:1;
text-align:center;
border-right:1px solid gray;
}
li:last-of-type{
border-right:none;
}<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>Спасибо, Джелегио. На самом деле это была бы горизонтальная линия, обеспечивающая восприятие связи, как написал выше Энди Хоффман.
Я действительно не понимаю, что такое «между», но вы можете добавить:
li { border-left: 1px solid gray; border-right: 1px solid gray;
Как я уже сказал, не уверен, что это то, что вы имеете в виду. :)
Вы также можете сделать простую окраску фона:
ul {
display: flex;
justify-content: space-between;
margin: 0;
padding: 0;
background:linear-gradient(#ccc,#ccc) center/100% 1px no-repeat;
}
li {
list-style-type: none;
background-color: white;
padding: 20px;
font-size:25px;
}
li:first-child {
padding-left: 0;
}
li:last-child {
padding-right: 0;
}<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>И вот способ, которым вы можете добиться прозрачности:
ul {
display: flex;
justify-content: space-between;
margin: 0;
padding: 0;
background:
linear-gradient(blue,blue) left 50px top 50%,
linear-gradient(blue,blue) right 50px top 50%,
linear-gradient(blue,blue) center;
background-size:calc((100% - 4*50px)/3) 1px;
background-repeat:no-repeat;
}
li {
list-style-type: none;
width: 50px;
font-size:25px;
text-align:center;
}
body {
background:pink;
}<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
Когда вы говорите «между», вы имеете в виду, что линия должна проходить через середину самих символов?