我为一个项目制作了一个3d类型的菜单,自然IE导致了问题,因为IE10 +,即使是3d变换工作,也不支持变换风格:preserve-3d。我尝试了变通方法,通过将变换应用于3d菜单容器的每个子元素,但动画看起来很糟糕,至少可以说。 决定为IE完全删除3d,但是没有能力为IE10 +使用条件样式表,我尝试以这种方式检测preserve-3d属性值:
var detect = document.createElement("div");
detect.style.transformStyle = "preserve-3d";
if (detect.style.transformStyle.length > 0) {
document.getElementsByTagName("html")[0].className = "preserve3D";
}
我注意到IE9 +在上面的情况下返回长度为0,因为它不理解该值,因此单独留下HTML标记。 Chrome和FF知道保留-3d,因此添加了类。我只能通过将IE11的用户代理字符串设置为IE9和IE10来测试。
我的第一个问题是:我可以期待这种方法(通过在IE11中设置用户代理进行测试)是一个故障安全方法,还是我需要掌握真正的IE9和IE10?
我的第二个问题:以上述方式测试价值是否有缺点?是否有更优雅,更好,(未来)更安全的方式?根据我的期望,当IE10 +采用preserve-3d时,应该是相当安全的,还是我错了?