У меня есть следующий элемент, который я хочу выделить в фокусе. При навигации по веб-странице нажатием Tab на клавиатуре.
У меня есть .pagemenu, которое по умолчанию скрыто и появляется при наведении курсора на .stub. Я хочу, чтобы .pagemenu появлялся, когда я добираюсь до .stub, перемещаясь по странице с помощью кнопки Tab на клавиатуре (специальные возможности).
Обычно :focus
делает именно то, что мне нужно. Обычно, когда я использую :focus
для элемента и свойство вроде background color
, цвет фона меняется, но установка :focus
для .stub или .pagenav не работает.
Хорошо, теперь я понимаю, что невозможно сфокусироваться на элементах, которые не отображаются, поэтому я не могу сосредоточиться на .pagenav. Но я могу сосредоточиться на .sub, не так ли? Тогда почему это не работает:
.stub a:focus .pagenav {
display: block;
position: absolute;
top: 100%;
left: -3px;
width: calc(100% + 6px);
}
Я не хочу использовать флажок в качестве решения здесь предлагает, потому что я не хочу добавлять лишние строки в HTML ( и у меня проблемы с пониманием флажка).
Добавление непрозрачности к .pagenav было бы хорошей идеей, но это мешает ширине .stub, когда .pagenav не отображается (не знаю почему), и удаляет центрирование содержимого .pagenav. Я открыт для любых решений, включая JS.
gengns ниже предложил решение с непрозрачностью, которое устраняет проблемы, описанные выше, но все еще не решает проблему с :focus
на Табл.
Что мне нужно сделать, чтобы .pagenav отображался в фокусе на .stub или .pagenav?
var prevScrollpos = window.pageYOffset;
window.onscroll = function() {
var currentScrollPos = window.pageYOffset;
if (prevScrollpos > currentScrollPos) {
document.getElementById("stub").style.top = "0";
} else {
document.getElementById("stub").style.top = "150px";
}
prevScrollpos = currentScrollPos;
}
.stub {
background-color: #577284;
float: right;
position: fixed;
right: 0;
text-transform: uppercase;
font-family: 'Yanone Kaffeesatz', sans-serif;
font-weight: 700;
padding: 10px;
border: 3px solid #ff8000;
margin-right: 1em;
}
#stublink {
color: #F3E0BE;
text-decoration: none;
}
.stub:hover .pagenav {
display: block;
position: absolute;
top: 100%;
left: -3px;
width: calc(100% + 6px);
}
.pagenav {
background-color: #577284;
display: none;
text-transform: uppercase;
font-size: 0.8em;
font-family: 'Yanone Kaffeesatz', sans-serif;
font-weight: 700;
border: 3px solid #ff8000;
border-top: none;
padding-bottom: 10px;
}
.pagenav a {
display: block;
color: #F3E0BE;
padding: 6px 0px 0px 8px;
}
.pagenav a:hover {
box-shadow: inset 5px 0 0 0 #ff8000
}
body {
height: 200vh
}
;
@media only screen and (max-width: 670px) {
.stub {
right: 0;
left: auto;
top: 0;
bottom: auto;
}
.stub:hover .pagenav {
display: block;
position: absolute;
top: 100%;
left: -3px;
width: calc(100% + 6px);
}
}
<body>
<div class="stub" id="stub">
<div class="pagenav">
<a href="#last">
<table>
<tr>
<td>02.19 03.20</td>
<td>:</td>
<td class="two"></td>
</tr>
</table>
</a>
<a href="#previous">
<table>
<tr>
<td>02.18 02.19</td>
<td>:</td>
<td class="two"></td>
</tr>
</table>
</a>
<a href="#dec17">
<table>
<tr>
<td>12.17 04.18</td>
<td>:</td>
<td class="two"></td>
</tr>
</table>
</a>
<a href="#nov17">
<table>
<tr>
<td>11.17 01.18</td>
<td>:</td>
<td class="two"></td>
</tr>
</table>
</a>
<a href="#sep16">
<table>
<tr>
<td>09.16 11.17</td>
<td>:</td>
<td class="two"></td>
</tr>
</table>
</a>
<a href="#sep15">
<table>
<tr>
<td>09.15 08.16</td>
<td>:</td>
<td class="two"></td>
</tr>
</table>
</a>
<a href="#jan15">
<table>
<tr>
<td>01.15 03.16</td>
<td>:</td>
<td class="two"></td>
</tr>
</table>
</a>
<a href="#jan14">
<table>
<tr>
<td>01.14 08.15</td>
<td>:</td>
<td class="two"></td>
</tr>
</table>
</a>
</div><a id="stublink" href=#>Pagemenu</a>
</div>
<script></script>
</body>