我正在使用CSS过渡效果将一个容器从右侧向左侧动画化,当鼠标悬停时。这在除了Internet Explorer浏览器之外的所有浏览器中都能正常工作。原因是我在CSS的left属性中使用了calc()函数(而且需要使用它)。
我在这里创建了一个实时演示:实时演示
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)
}
我正在使用jQuery在鼠标悬停时添加.translate-less类:
$(document)
.on( 'mouseenter', 'div', function(){
$(this).addClass('translate-less')
})
.on( 'mouseleave', 'div', function(){
$('div').removeClass('translate-less');
})
现在我想要在Internet Explorer中实现平滑的过渡效果。为此,我甚至愿意放弃使用calc()函数,添加一个规则,如left: 85%;
。但IE10和11已经不再支持条件注释,似乎没有办法专门针对这些浏览器进行定位。可以使用-ms-high-contrast-hack针对IE10进行定位,但无法针对IE11进行定位。我不希望使用JavaScript检测浏览器,因为这似乎比使用CSS hack更加hacky。