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

通过JavaScript分配时CSS过渡不起作用

昝浩阔
2023-03-14
问题内容

尝试将CS​​S3转换应用于幻灯片显示槽JavaScript时,我有些头疼。

基本上,JavaScript会获取幻灯片放映中的所有幻灯片,并将CSS类应用于正确的元素以提供良好的动画效果,如果不支持CSS3过渡,它将仅应用样式而无需过渡。

现在,我的“小”问题。所有工作都按预期进行,所有幻灯片都具有正确的样式,代码运行时没有错误(到目前为止)。但是,即使应用了正确的样式,指定的过渡也不起作用。另外,当我自己通过检查员应用样式和过渡时,它们也可以工作。

由于我自己找不到逻辑上的解释,所以我以为这里有人可以回答,请问?


问题答案:

为了transition工作,必须发生三件事。

  1. 在这种情况下,元素必须具有明确定义的属性: opacity: 0;
  2. 元素必须定义了过渡: transition: opacity 2s;
  3. 必须设置新属性: opacity: 1

如果像示例中那样动态分配1和2,则需要在3之前有一个延迟,以便浏览器可以处理请求。它在调试时起作用的原因是您通过逐步执行此延迟来创建此延迟,从而使浏览器有时间进行处理。延迟分配.target- fadein

window.setTimeout( function() { slides[targetIndex].className += " target-fadein"; }, 100 );

.target-fadein-begin直接放入HTML中,以便在加载时进行解析并为过渡做好准备。

添加transition到元素并不是触发动画的原因,而更改属性会触发动画。

HTML:

<div id="fade1" class="fadeable">fade 1 - works</div>
<div id="fade2">fade 2 - doesn't work</div>
<div id="fade3">fade 3 - works</div>

CSS:

.fadeable {
    opacity: 0;
}

.fade-in {
    opacity: 1;
    transition:             opacity 2s;
        -moz-transition:    opacity 2s;
        -ms-transition:     opacity 2s;
        -o-transition:      opacity 2s;
        -webkit-transition: opacity 2s;
}

脚本:

//works
document.getElementById( 'fade1' ).className += ' fade-in';

//doesn't work
document.getElementById( 'fade2' ).className = 'fadeable';
document.getElementById( 'fade2' ).className += ' fade-in';

//works
document.getElementById( 'fade3' ).className = 'fadeable';
window.setTimeout( function() {

    document.getElementById( 'fade3' ).className += ' fade-in';

}, 100);


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

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

  • 问题内容: 我有2 秒,其中一个通过隐藏。两者在属性上具有相同的CSS过渡。 如果我通过JQuery 更改属性并通过使用或或其他方式显示hidden ,则隐藏的div会立即在结束位置绘制 如果我使用它将起作用。但是我的问题是; 这是错误还是正常行为? 编辑 不是显示上的过渡的重复:属性会导致这里的问题不是关于显示属性的动画或可见性 问题答案: 要清楚地了解情况,您需要了解CSSOM和DOM之间的关

  • 该项目提供了两种动画变体。 动画选项1,触发器('imationOption1') 无投诉。 动画选项2,触发器('imationOption2') 转换在此处不起作用。 在线查看这个项目在StackBlitz.com app.component.html 应用程序组件.ts 谷歌搜索并没有导致解决方案。

  • 主要内容:1. transition-property,2. transition-duration,3. transition-timing-function,4. transition-delay,5. transition通常当 CSS 的属性值更改后,浏览器会立即更新相应的样式,例如当鼠标悬停在元素上时,通过 :hover 选择器定义的样式会立即应用在元素上。在 CSS3 中加入了一项过渡功能,通过该功能您可以将元素从一种样式在指定时间内平滑的过渡到另一种样式,类似于简单的动画,但无需借

  • 本文向大家介绍CSS过渡速记,包括了CSS过渡速记的使用技巧和注意事项,需要的朋友参考一下 示例 的CSS 的HTML 此示例将在div悬停时更改背景颜色,背景颜色更改将持续1秒钟。