html - 无法在 Safari 的 CSS 中启用带有 anchor 的焦点选择器

标签 html css css-selectors

我知道某些元素不能接受 focus 选择器,例如列表元素,但我认为 anchor 很好。使用以下代码(我正在创建一个纯 css 响应式下拉菜单),我无法在单击 anchor 时显示隐藏的 ul

HTML:

<ul>
  <li class="primarylist">
    <a href="#" class='category1anchor'>Text</a>
    <ul class="menudrop">
      <li class="secondarylist">One</li>
      <li class="secondarylist">Two</li>
      <li class="secondarylist">Three</li>
    </ul>
  </li>
</ul>

CSS:

ul.menudrop {
  display: none;
  background-color: white;
}
li.primarylist a:focus + ul.menudrop {
  display: block;
}

jsFiddle: https://jsfiddle.net/kx0kex7x/

jsFiddle 选择器从 focus 更改为 hover,它完美地工作,让我没有任何理由怀疑我的语法是否正确。使用 active 仅在鼠标按下期间显示 ul。任何指针? (我在 Safari 10 上。似乎可以在最新的 Chrome 和 FF 中正常工作)。


更新

我尝试使用 target 选择器并取得了部分成功。如果我更改我的 a.categor1anchor 链接以匹配为每个 ul.menudrop 新创建的唯一 ID,我可以使 ul.menudrop 出现在点击 anchor 。但是,这是一个响应式设计,我似乎无法删除其他页面大小的 target 选择器。例如,在较大的页面尺寸下,我改为使用 hover 选择器,但来自较小屏幕尺寸的最后一个目标 ul.menudrop 在较大屏幕尺寸下仍保持打开状态。我看不出有什么方法可以清除响应式设计的目标选择器。 InheritInitial 显示不影响它。

最佳答案

似乎 Safari 中的 anchor 标记需要设置 tabindex 才能获得焦点。

ul.menudrop {
  display: none;
  background-color: white;
}
li.primarylist a:focus + ul.menudrop {
  display: block;
}
<ul>
  <li class="primarylist">
    <a href="#" class='category1anchor' tabindex="0">Text</a>
    <ul class="menudrop">
      <li class="secondarylist">One</li>
      <li class="secondarylist">Two</li>
      <li class="secondarylist">Three</li>
    </ul>
  </li>
</ul>

https://jsfiddle.net/VilleKoo/dhpom1uw/

关于html - 无法在 Safari 的 CSS 中启用带有 anchor 的焦点选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43093657/

相关文章:

javascript - HTML- 内容未在选项卡中正确显示

javascript - 单击一下计算字数

javascript - 为什么 toStaticHTML 会删除 data-* 属性

javascript - 如何在文档中获取(具有)最高 CSS z-index 的(元素)?

javascript - Morphtext jQuery 插件不工作

css - webkit 转换阻塞链接

javascript - 无法在 'querySelector' : 'Document' is not a valid selector 上执行 '#traveller[36350015][date_of_birth(3i)]'

CSS 选择器 - 未到达我的元素

jquery - 选择同级按钮时,取消选择其他按钮(从中删除类)

javascript - 除了事件的 jQuery 之外,所有 div 都恢复为默认值