具有延迟和不透明度的CSS动画

use*_*110 17 css animation opacity

我试图使用CSS动画在2秒后淡入一个元素.该代码在新浏览器中运行良好,但在旧浏览器中,由于"不透明度:0",该元素将保持隐藏状态.

我希望它在旧的浏览器中可见,我不想让它发送javascript.可以用CSS解决吗?例如.一些目标浏览器如何不支持动画?

CSS:

#element{
animation:1s ease 2s normal forwards 1 fadein;
-webkit-animation:1s ease 2s normal forwards 1 fadein;
opacity:0
}

@keyframes fadein{from{opacity:0}
to{opacity:1}
}

@-webkit-keyframes fadein{from{opacity:0}
to{opacity:1}
}
Run Code Online (Sandbox Code Playgroud)

HTML:

<div id=element>som content</div>
Run Code Online (Sandbox Code Playgroud)

Mic*_*umo 42

只是不要opacity在元素本身上设置初始值,将其设置在@keyframes:

#element{
    -webkit-animation: 3s ease 0s normal forwards 1 fadein;
    animation: 3s ease 0s normal forwards 1 fadein;
}

@keyframes fadein{
    0% { opacity:0; }
    66% { opacity:0; }
    100% { opacity:1; }
}

@-webkit-keyframes fadein{
    0% { opacity:0; }
    66% { opacity:0; }
    100% { opacity:1; }
}
Run Code Online (Sandbox Code Playgroud)

此技术将动画延迟,以便立即开始运行.但是,在动画中大约66%之前,不透明度不会真正改变.因为动画运行3秒钟,它会产生延迟2秒的效果并淡入1秒钟.

请参阅此处的工作示例:https://jsfiddle.net/75mhnaLt/

您可能还想查看对旧版浏览器使用条件注释; IE8和IE9.

您的HTML中的内容如下:

<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en-GB"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8 ie-7" lang="en-GB"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9 ie-8" lang="en-GB"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en-GB"> <!--<![endif]-->
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

.lt-ie9 #element {
    opacity: 1;
}
Run Code Online (Sandbox Code Playgroud)


MgS*_*Sam 9

我遇到了类似的问题,要求是等待n几秒钟,然后再逐渐淡入不同的页面元素。

让这个为我工作的关键是,在任何其他答案中都没有提到,事实上它animation实际上可以运行一个动画列表。它将开始同时运行它们,因此您需要插入延迟才能按顺序运行它们。

我的解决方案是这样的(在 SCSS 中,但如果需要的话,足够简单,可以直接编写为 CSS):

@mixin fade-in($waitTime) {
    animation: 
        wait #{$waitTime},
        fade-in 800ms #{$waitTime};
}

@keyframes wait {
    0% { opacity: 0; }
    100% { opacity: 0; }
}

@keyframes fade-in {
    0% { opacity: 0; }
    100% { opacity: 1; }
}
Run Code Online (Sandbox Code Playgroud)

用法:

h1 {
    @include fade-in('500ms');
}
h2 {
    @include fade-in('700ms');
}
Run Code Online (Sandbox Code Playgroud)