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

具有可见性的CSS过渡不起作用

郭胤
2023-03-14
问题内容

在下面的小提琴中,我分别对可见性和不透明度进行了过渡。后者有效,但前者无效。此外,在可见的情况下,过渡时间被解释为悬停时的延迟。在Chrome和Firefox中都会发生。这是错误吗?

情况1:

#inner{
    visibility:hidden;
    transition:visibility 1000ms;
}
#outer:hover #inner{
    visibility:visible;
}

情况2:

#inner1{
    opacity:0;
    transition:opacity 1000ms;
}
#outer1:hover #inner1{
    opacity:1;
}

问题答案:

这不是错误 -您只能在有序/可计算的属性上进行转换(一种简单的想法是,任何具有数字开始和结束数字值的属性。尽管有一些例外)。

这是因为过渡通过计算两个 之间的关键帧并通过外推中间量来产生动画来起作用。

visibility 在这种情况下,它是一个二进制设置(可见/隐藏),因此,当过渡持续时间过去后,该属性会简单地切换状态,您会将此视为延迟-
但实际上可以将其视为过渡动画的最终关键帧,中间关键帧尚未计算出来(隐藏/可见之间的值是什么?不透明度还是维度?由于不是很明确,所以不计算在内)。

opacity 是一个值设置(0-1),因此可以在提供的持续时间内计算关键帧。



 类似资料:
  • 问题内容: 我在CSS中添加了一个“扰流器”类,用于扰流器。文本通常是不可见的,但是当鼠标悬停在其上方以向想要阅读该文本的任何人显示扰流板时,该文本就会出现。 应该很简单,但是由于某种原因这是行不通的。即使我将鼠标指向文字,文字仍然不可见。知道是什么原因造成的吗? 问题答案: 您不能将鼠标悬停在隐藏的元素上。一种解决方案是将元素嵌套在另一个容器中: CSS: HTML: 更新资料 在Chrome上

  • 问题内容: 我正在用CSS过渡在鼠标悬停时从右到左设置一个容器动画。在InternetExplorer以外的所有浏览器中,此功能均正常运行。原因是我在CSSleft属性中使用了(并且需要使用)calc()。 CSS看起来像这样: 我正在使用jQuery在mouseover上添加.translate-less类: 现在,我想在Internet Explorer中顺利过渡。为此,我什至放弃了这些特定浏

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

  • 问题内容: 我似乎找不到具有多个属性的CSS过渡 速记 的正确语法。这没有做任何事情: 我用javascript添加了show类。元素变得更高且可见,它只是不过渡。在最新的Chrome,FF和Safari中进行测试。 我究竟做错了什么? 编辑:为了清楚起见,我正在寻找简化我的CSS的简写版本。使用所有供应商前缀已经足够enough肿。还扩展了示例代码。 问题答案: 句法: 请注意,如果指定了延迟,

  • 问题内容: 我正在构建一个简单的示例,使用该属性翻转卡片。 几天前它运行良好,但突然间它停止工作。效果仍然有效,但是当我将鼠标悬停在卡片上时,正面应该消失以使背面可见。为此,我正在使用该属性。但是似乎无法在chrome中正常工作(无论是稳定版还是每晚构建版) 如果我在做一些糟糕的事情,这里是代码 之所以得出这个结论,是因为我做了几个简单的示例,只使用了一个旋转的div,上面有一个简单的文本,背面隐

  • 我正在尝试使用LayoutTransition动画,但它们不起作用。 我设置 在我的activity布局中的父级LinearLayout中。然后,在选中或未选中另一个复选框时,对包含一些复选框的子LinearLayout执行setVisibility(View.Visible)或setVisibility(View.Gone)。可见性更改不是动画的。父级LinearLayout中有一个Scroll