Этот ответ основан на ответе Барра J .По его словам, используйте tabindex
и :focus
селектор.Поэтому я думаю, что вы должны пометить его ответ как принятый.
Кроме того, но, возможно, вы сделали это специально, продолжайте стилизовать подэлемент span
, а не li
, иначе граница фокуса (пунктирная)серый) покроет оранжевый (по крайней мере, Firefox), и в итоге вы получите уродливый рендеринг.
.btns:focus > span {
color: #2DB46A;
background-color: #fff;
border:1px solid orange;
}
Кстати, вы должны определить размер элемента span
в соответствии с его рамкой,в противном случае он будет больше элемента ul
из-за его значения заполнения:
.btns>span {
padding: 12px 0 8px 20px;
box-sizing:border-box; /* Here */
}
ниже рабочего фрагмента.
.btns {
margin-bottom: 50px;
list-style-type: none;
font-family: Facile;
font-size: 18px;
background-color: #2DB46A;
color: #fff;
}
.btns>span {
padding: 12px 0 8px 20px;
box-sizing: border-box;
display: inline-block;
width: 100%;
height: 100%;
}
.btns:focus>span {
color: #2DB46A;
background-color: #fff;
border: 1px solid orange;
}
<ul id="list-container">
<li class="btns" tabindex="0"><span>pcb design</span></li>
<li class="btns" tabindex="1"><span>analog design</span></li>
<li class="btns" tabindex="2"><span>power design</span></li>
<li class="btns" tabindex="3"><span>wireless design</span></li>
<li class="btns" tabindex="4"><span>fpga design</span></li>
<li class="btns" tabindex="5"><span>embedded software</span></li>
</ul>