页面加载时的不透明度过渡不会在加载时启动

Opacity transition on page load does not kicks in on load

我想要一个非常简单的加载效果,整体上的不透明度变化很快body。所以我使用以下 CSS

body {
  opacity: 0;
  transition: opacity 2s;
}

body.show-page {
  opacity: 1;
}

并在加载时添加 .show-page。这是实时代码http://plnkr.co/edit/Ze5TiqkZYiM41VJZVDuB?p=preview

出于某种原因,它没有转换。页面加载后,如果我 add/remove this class,则过渡有效,但在加载时,它不会发生。知道为什么吗?

一种解决方法是稍微延迟(50 毫秒)您的 JS 这样做:

   setTimeout(function(){body.className += 'show-page';}, 50);

您的脚本将 运行 在 body 完成加载之前,因为脚本位于 body 标签内。

你可能想要这样的东西:

function fadeIn() {
    var body = document.getElementsByTagName('body')[0];
    body.className += 'show-page';
}
window.onload = fadeIn;

Updated Plunker