如何在加载时在第一个元素上设置动画?
How to set animation on first element on loading?
我正在使用 Angular2 和 SystemJs。我想知道如何在 example 中的 Loading
标签上设置一些动画(如淡出效果)。我们可以在应用程序加载之前看到标签。有没有办法在以下内容变化时添加淡出效果(index.html):
<body>
<my-app>loading...</my-app>
</body>
最好的方法是在标签中添加一个隐藏的class,并在加载应用程序后删除class。
要使用 css 实现淡入淡出动画,请将此属性添加到标签:
transition: all 0.5s
opacity: 1
然后到class隐藏的
.hidden {
opacity: 0 !important
}
当您删除隐藏的 class 时,它会将不透明度设置为默认值 1 (100%)。
如果您的应用程序中有 JQuery,可以使用 $('label').fadeOut()。但是现在最好使用 pure CSS
CSS 留有改进空间
@Component({
selector: 'my-app',
template: `
<router-outlet></router-outlet>
`,
directives: [ROUTER_DIRECTIVES],
host: {
'[class.loaded]': 'isLoaded',
},
})
@RouteConfig([
{path: '/', name: 'Main View', component: MainViewComponent}
])
export class AppComponent {
isLoaded:boolean = false;
constructor(){}
ngAfterViewInit() {
setTimeout(() => this.isLoaded = true, 0);
}
}
<style>
my-app {
visibility: hidden;
opacity: 0;
}
my-app.loaded {
visibility: visible;
opacity: 1;
transition: visibility 0s 2s, opacity 2s linear;
}
div.spinner {
position: absolute;
top: 150px;
left: 150px;
}
my-app.loaded + div.spinner {
visibility: hidden;
opacity: 0;
transition: visibility 0s 2s, opacity 2s linear;
background-color: red;
}
</style>
<body>
<my-app></my-app>
<div class="spinner">loading...</div>
</body>
我正在使用 Angular2 和 SystemJs。我想知道如何在 example 中的 Loading
标签上设置一些动画(如淡出效果)。我们可以在应用程序加载之前看到标签。有没有办法在以下内容变化时添加淡出效果(index.html):
<body>
<my-app>loading...</my-app>
</body>
最好的方法是在标签中添加一个隐藏的class,并在加载应用程序后删除class。
要使用 css 实现淡入淡出动画,请将此属性添加到标签:
transition: all 0.5s
opacity: 1
然后到class隐藏的
.hidden {
opacity: 0 !important
}
当您删除隐藏的 class 时,它会将不透明度设置为默认值 1 (100%)。
如果您的应用程序中有 JQuery,可以使用 $('label').fadeOut()。但是现在最好使用 pure CSS
CSS 留有改进空间
@Component({
selector: 'my-app',
template: `
<router-outlet></router-outlet>
`,
directives: [ROUTER_DIRECTIVES],
host: {
'[class.loaded]': 'isLoaded',
},
})
@RouteConfig([
{path: '/', name: 'Main View', component: MainViewComponent}
])
export class AppComponent {
isLoaded:boolean = false;
constructor(){}
ngAfterViewInit() {
setTimeout(() => this.isLoaded = true, 0);
}
}
<style>
my-app {
visibility: hidden;
opacity: 0;
}
my-app.loaded {
visibility: visible;
opacity: 1;
transition: visibility 0s 2s, opacity 2s linear;
}
div.spinner {
position: absolute;
top: 150px;
left: 150px;
}
my-app.loaded + div.spinner {
visibility: hidden;
opacity: 0;
transition: visibility 0s 2s, opacity 2s linear;
background-color: red;
}
</style>
<body>
<my-app></my-app>
<div class="spinner">loading...</div>
</body>