iOS CSS不透明度+可见性转换
在桌面浏览器( JSFiddle )中查看以下testing:
a { background: gray; display: block; margin: 100px; padding: 100px; } a span { opacity: 0; -webkit-transition: 0.5s; visibility: hidden; } a:hover span { opacity: 1; -webkit-transition: 0.5s; visibility: visible; }
<a href="#">a <span>span</span></a>
将鼠标hover在锚点元素上,span元素就会像应该那样淡入。
现在通过一个iOS设备来看看。 结果:它什么都没做。
事实:
- 如果转换属性不存在,则可以使用。
- 如果不透明或可视性属性不存在,则可以使用。
- 没有为不透明或可见性属性引发webkitTransitionEnd事件。
有没有解决办法?
转变只有不透明性很糟糕。
因为在iPhone上,你需要点击为了集中一个元素,这是我已经解决了我的问题:
.mydiv { visibility:hidden; opacity: 0; transition: all 1s ease-out; -webkit-transition: all 1s ease-out; -moz-transition: all 1s ease-out; -o-transition: all 1s ease-out; } .mydiv:hover { visibility:visible; opacity: 1; } .mydiv:active { -webkit-transition: opacity 1s ease-out; }
我已将不透明度转换添加到:active。
通过这种方式,它可以在Chrome,Firefox和iPhone上轻松使用所有的过渡animation(假设您想将animation应用于高度或其他内容)。
感谢Grezzo和Michael Martin-Smucker发现不透明过渡。
(从CSSanimation可见性复制/粘贴我的可见性:可见;适用于Chrome和Safari,但不适用于iOS )
通过对transition
属性进行一些较小的修改,这可以在iOS上运行。 在:hover
,限制transition
只有opacity
属性,如下所示:
a:hover span { opacity:1; -webkit-transition: opacity 0.5s; transition: opacity 0.5s; visibility:visible; }
虽然可见性是一个animation的属性 ,但似乎有一个在iOS实现中的错误。 当您尝试转换visibility
,似乎整个转换不会发生。 如果你只是限制你的过渡到opacity
,事情按预期工作。
要清楚:在CSS中留下visibility
属性,只是如果你想在移动Safari浏览器中工作,不要试图转换它。
作为参考,这里是您更新的小提琴 ,我在iPad上testing:
a { background: gray; display: block; margin: 100px; padding: 100px; } a span { opacity: 0; -webkit-transition: 0.5s; visibility: hidden; } a:hover span { opacity: 1; -webkit-transition: opacity 0.5s; visibility: visible; }
<a href="#">a <span>span</span></a>