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

CSS从`display:none`过渡到类变化?

杨赞
2023-03-14
问题内容

我已经开始使用过渡来“现代化”网站的感觉。到目前为止,:hover过渡效果很好。现在,我想知道是否有可能基于其他因素(例如,类更改时)触发转换。

以下是相关的CSS:

#myelem {
    opacity: 0;
    display: none;
    transition: opacity 0.4s ease-in, display 0.4s step-end;
    -ms-transition: opacity 0.4s ease-in, display 0.4s step-end;
    -moz-transition: opacity 0.4s ease-in, display 0.4s step-end;
    -webkit-transition: opacity 0.4s ease-in, display 0.4s step-end;
}
#myelem.show {
    display: block;
    opacity: 1;
    transition: opacity 0.4s ease-out, display 0.4s step-start;
    -ms-transition: opacity 0.4s ease-out, display 0.4s step-start;
    -moz-transition: opacity 0.4s ease-out, display 0.4s step-start;
    -webkit-transition: opacity 0.4s ease-out, display 0.4s step-start;
}

触发更改的JavaScript是:

document.getElementById('myelem').className = "show";

但是过渡似乎并没有发生-它只是从一个州跳到另一个州。

我究竟做错了什么?


问题答案:

当您删除display属性时,它确实起作用。

#myelem {
    opacity: 0;
    transition: opacity 0.4s ease-in;
    -ms-transition: opacity 0.4s ease-in;
    -moz-transition: opacity 0.4s ease-in;
    -webkit-transition: opacity 0.4s ease-in;
}
#myelem.show {
    opacity: 1;
    transition: opacity 0.4s ease-out;
    -ms-transition: opacity 0.4s ease-out;
    -moz-transition: opacity 0.4s ease-out;
    -webkit-transition: opacity 0.4s ease-out;
}​

原因是只能转换带有数字的CSS属性。您认为“ 50%状态”应介于“ display: none;”和“ display: block;”之间是什么?由于无法计算该值,因此无法为该display属性设置动画。



 类似资料:
  • 目前,想从 Subversion 过渡到 Git 其实并不困难,只要你不把 Git 和 Subversion 混淆就行。一旦你明白了两者在概念上的区别,这个改变的过程就会变得容易。 分布式与集中式 Subversion 是一个集中式(centralized)的版本控制系统。所有的开发团队成员都工作在单一的远程中央仓库上,当在这个中央仓库上进行 “签出(checkout)” 操作时,它就会在你的本地

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

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

  • 本文向大家介绍CSS 过渡(纵向),包括了CSS 过渡(纵向)的使用技巧和注意事项,需要的朋友参考一下 示例 的CSS 的HTML transition-property:指定过渡效果所针对的CSS属性。在这种情况下,当鼠标悬停时,div会在水平和垂直方向上扩展。 transition-duration:指定过渡完成所需的时间。在上面的示例中,高度和宽度过渡将分别花费1秒和500毫秒。 trans

  • 问题内容: 是否有一个跨浏览器解决方案仅使用CSS而不使用javascript来生成幻灯片过渡?以下是html内容的示例: 问题答案: 您可以使用CSS3过渡或CSS3动画在元素中滑动。 我举了两个简单的例子,只是为了向您展示我的意思。 CSS过渡(悬停时) 相关代码 在这种情况下,我只是将位置从转换为1s。持续时间。也可以使用 CSS动画 与上面的原理相同(演示一),但是动画在2秒后自动开始,在

  • 问题内容: 我正在创建一个DOM元素(一个div),将其添加到DOM,然后在javascript中快速点击即可更改其宽度。从理论上讲,这应该触发CSS3转换,但是结果是从A到B直接转换,而两者之间没有转换。 如果我通过单独的测试点击事件来更改宽度,则一切都会按预期进行。 这是我的JS和CSS: JS(jQuery): CSS(目前仅使用mozilla): 我是在这里搞砸了吗,还是“一键通”不应该做