html - :focus 在某些浏览器的下拉列表中不起作用
问题描述
我正在尝试创建一个移动垂直下拉菜单,但我在使用:focus
for both 显示子菜单项时遇到问题。
我通过使用:focus
for sub-menu 和:focus-within
for its items 找到了一种解决方法。
此解决方案正在工作并仅显示 Google Chrome 的子菜单项,而三星互联网和 UC 浏览器等其他浏览器除了:focus
子菜单外不显示任何内容。
我找到了另一种解决方案:hover
,它适用于几乎所有浏览器。
我有两个问题:
- 为什么它只适用于 chrome?
- 如何
:focus
同时使用子菜单及其项目?
使用的 CSS:
.main-nav a {
color:black;
display: block;
padding: 10px 3px 10px 3px;
font-size: 20px;
text-align: center;
font-family: 'hayah';
border-radius: 25px;
transition: border-radius 0.2s ease-in;
}
.main-nav a:hover {
background:#D7D7D7;
border-radius:25px 25px 0 0;
-webkit-transition: border-radius 0.1s ease-in;
-moz-transition: border-radius 0.1s ease-in;
-o-transition: border-radius 0.1s ease-in;
transition: border-radius 0.1s ease-in;
display: block;
}
.main-nav-ul ul {
-webkit-transition: all 0.3s ease-in-out;
-moz-transition: all 0.3s ease-in-out;
-o-transition: all 0.3s ease-in-out;
transition: all 0.3s ease-in-out;
opacity: 0;
max-height: 0;
overflow: hidden;
background-color: #D9D9D9;
color: black;
margin-bottom: 10px;
margin-top: 5px;
border-radius: 0 0 25px 25px;
font-size: 12px;
}
.main-nav-ul li:hover ul {
opacity: 1 !important;
max-height: 400px !important;
color: black;
background-color: #E2E2E2;
display: block;
}
解决方案
如果不了解您是如何实现 HTML 的,就很难知道哪种答案最适合这种情况。:focus-within
没有得到很好的支持:https ://caniuse.com/#search=focus-within 。没有看到其他任何东西我在想也许你会使用 JS 来添加和删除:hover
/:focus
喜欢这个答案:我可以通过 JavaScript 禁用 CSS :hover 效果吗?. 这样,当您不显示子项目时,您就不能使用它们的悬停效果。
推荐阅读
- reactjs - Uppy showSelectedFiles 不隐藏文件
- network-protocols - 如何确定自定义通信协议的唯一标头模式?
- task - Snowflake - 使用多个指令(插入、删除、创建视图、创建表等)安排 Script.sql-
- python - 如何替换给定范围内列表列表中的元素?
- microsoft-teams - 如何在 Teams 的连接器设置中保存外部连接?
- asp.net-mvc-5 - 如何将 MVC5 Identity ApplicationDbContext 合并到我自己的 EF DataContext 中
- docker - 使用覆盖入口点运行测试脚本是否是 Docker 中的反模式?
- java - 如何将 websocket 消息发送到会话中的特定订阅?
- java - 从java验证用户
- python - 没有循环或变量的递归函数