当前位置: 首页 > 面试题库 >

带有calc()的CSS过渡在IE10 +中不起作用

狄高畅
2023-03-14
问题内容

我正在用CSS过渡在鼠标悬停时从右到左设置一个容器动画。在InternetExplorer以外的所有浏览器中,此功能均正常运行。原因是我在CSSleft属性中使用了(并且需要使用)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在mouseover上添加.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放弃了对条件注释的支持,而且似乎没有办法专门针对这些浏览器。IE 10可以使用-ms-high-contrast-
hack作为目标,但IE11不能。我不想使用JavaScript来检测浏览器,因为这似乎比使用CSS骇客还要骇人。


问题答案:

也许transform: translateX()可以提供解决方法。根据具体情况,使用转换和正确的属性可能会更好:

right: 10%;
transform: translateX(-4rem);

另外,虽然你不能使用calc()中的translateX()在IE(因为错误),可将多个translateX()在变换S:

/* This */
transform: translateX(90%) translateX(-4rem);
/* is equivalent to this */
transform: translateX(calc(90% - 4rem));

(但是,在这种情况下,90%表示目标的90%,而不是父级。)



 类似资料:
  • 问题内容: 在IE10中,此代码无法正常工作: 应该发生的是,该宽度应为31px,并占用内的其余可用空间。由于某种原因,发生的事情只是默认为263px。 在Chrome和Firefox中可以正常运行。 问题答案: IE尚不完全支持Flex布局模式。IE10实现了规范的“补间”版本,该版本不是完全最新的,但仍然可以使用。

  • 问题内容: 在下面的小提琴中,我分别对可见性和不透明度进行了过渡。后者有效,但前者无效。此外,在可见的情况下,过渡时间被解释为悬停时的延迟。在Chrome和Firefox中都会发生。这是错误吗? 情况1: 情况2: 问题答案: 这不是错误 -您只能在有序/可计算的属性上进行转换(一种简单的想法是,任何具有数字开始和结束数字值的属性。尽管有一些例外)。 这是因为过渡通过计算两个 值 之间的关键帧并通

  • 问题内容: 尝试将CS​​S3转换应用于幻灯片显示槽JavaScript时,我有些头疼。 基本上,JavaScript会获取幻灯片放映中的所有幻灯片,并将CSS类应用于正确的元素以提供良好的动画效果,如果不支持CSS3过渡,它将仅应用样式而无需过渡。 现在,我的“小”问题。所有工作都按预期进行,所有幻灯片都具有正确的样式,代码运行时没有错误(到目前为止)。但是,即使应用了正确的样式,指定的过渡也不

  • 本文向大家介绍CSS中的calc()有什么作用?相关面试题,主要包含被问及CSS中的calc()有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 calc使得开发者能够使用四则运算表达式来填写CSS属性。 px、%、em等不同单位的数值均可参与计算,浏览器会进行自动转换。 MDN

  • 问题内容: 我注意到将CSS3 功能用作单位不能在最新版本的Chrome中使用。 在Chrome Developer工具中,带有的规则具有 删除线 ,并在其左侧的黄色三角形中带有感叹号。这表示无法识别该属性或值。 如何使它在现代浏览器中运行?因为它是一个值而不是一个属性,所以供应商前缀在哪里? 更新: 当我说它不起作用时,我的意思是Chrome开发工具在说它无法识别我的用法。我怎么知道它无法识别?

  • 问题内容: 我已经尝试过两种方法。 方式1 方式二 这两种工作方式上的镀铬细,但由于某种原因与IE不发送数据的,或根本。 我已经在本地服务器和实时Web服务器上进行了尝试,两者都得到了相同的结果。 在这里使用IE10。 问题答案: ~~~~ 应该 您将变量的值作为键传递,因此,如果您的服务器端资源期望它实际上看到了该变量的值。 这可能不是IE10问题,这不应该像在任何浏览器中一样起作用。 更新资料