我使用CSS转换从右到左的鼠标悬停动画容器。这适用于除Internet Explorer以外的所有浏览器。原因是我在我的CSS left属性中使用(并需要使用)calc()。IE 10 + 11:使用calc()进行CSS转换不起作用
我创建了一个现场演示在这里:Live Demo
的CSS是这样的:
div {
background: red;
width: 100px;
height: 100px;
position: absolute;
top: 100px;
left: 90%;
-webkit-transition: left 0.7s cubic-bezier(0.77, 0, 0.175, 1);
-moz-transition: left 0.7s cubic-bezier(0.77, 0, 0.175, 1);
-o-transition: left 0.7s cubic-bezier(0.77, 0, 0.175, 1);
transition: left 0.7s cubic-bezier(0.77, 0, 0.175, 1);
}
div.translate-less {
left: calc(90% - 4rem)
}
我加入类.translate少鼠标悬停使用jQuery:
$(document)
.on('mouseenter', 'div', function(){
$(this).addClass('translate-less')
})
.on('mouseleave', 'div', function(){
$('div').removeClass('translate-less');
})
现在我想在Internet Explorer中顺利过渡。为此,我甚至会抛弃这些特定浏览器的calc()并添加一条规则,如left: 85%;
。但IE 10和11有dropped support for conditional comments,似乎没有办法专门针对这些浏览器。 IE 10可以用-ms-high-contrast-hack作为目标,但IE 11不能。我不想use JavaScript检测浏览器,因为这看起来甚至比使用CSS hack hackier。
任何帮助?提前致谢!
刚刚使用左边的问题是:85%,因为它可以与所有浏览器一起使用?另外,为什么不使用.translate-less:悬停,而不是在鼠标悬停上添加一个类。 – Charles380
Charles380,左侧85%,左侧90%-4rem有显着差异。前者的滑动距离是相对的(在宽视口上较大,在狭窄的视口上较小),而后者是绝对的。这恰好是我设计中的一个重要区别。 (感谢:悬停提示,但我需要在这里使用jQuery的其他原因。基本上,我修改更多的元素,而不仅仅是这个,不能以这些:hover。) – bootsmaat