【发布时间】:2021-02-17 14:47:29
【问题描述】:
我正在尝试使用一些 CSS3 过渡制作下拉导航菜单。但是,当使用可见性隐藏/可见时,iOS 不会显示下拉菜单(它只是转到链接)。如果我使用 display none/block,iOS 将在第一次单击父元素时显示下拉菜单,但转换在任何浏览器中都不起作用。
有没有办法让这些转换在浏览器中正常运行,并使下拉菜单在 iOS 中运行而不使用 javascript?
下拉菜单在 iOS 中不起作用:
nav ul li ul {
position: absolute; visibility: hidden; opacity: 0; left: 0; top: 50px; z-index: 99;
-webkit-transition: all .35s ease-in-out;
-moz-transition: all .25s ease-in-out;
-o-transition: all .35s ease-in-out;
-ms-transition: all .35s ease-in-out;
transition: all .35s ease-in-out;
}
nav ul li:hover > ul { visibility: visible; opacity: 1; top: 40px; }
过渡在浏览器中不起作用:
nav ul li ul {
position: absolute; display: none; opacity: 0; left: 0; top: 50px; z-index: 99;
-webkit-transition: opacity .35s ease-in-out, top .35s ease-in-out;
-moz-transition: opacity .35s ease-in-out, top .35s ease-in-out;
-o-transition: opacity .35s ease-in-out, top .35s ease-in-out;
-ms-transition: opacity .35s ease-in-out, top .35s ease-in-out;
transition: opacity .35s ease-in-out, top .35s ease-in-out;
}
nav ul li:hover > ul { display: block; opacity: 1; top: 40px; }
【问题讨论】:
-
您所说的 iOS 是指 Mobile Safari 吗?你为什么要依赖 :hover 触摸设备(这是不可预测的)?我看到您不想使用 JS,但它可以让您更精确地处理事件。在我看来,您应该使用 Javascript 点击事件来显示和隐藏内容并使用 event.preventDefault(); 抑制链接操作;
标签: ios css css-transitions