我目前有一个 CSS 动画,当它被访问时,它会在我的整个 index.html 中消失。
我想做的只是当有人从外部站点访问时才会发生这种情况。如果他们从我网站的另一个页面导航回主页,我只会为那些已更改的元素设置动画,而使选框和页脚等内容保持不变。
我想知道这实际上是否可行,以及如何实现 - jquery、cookies?因为我喜欢来自另一个站点时的淡入,因为它有助于平滑元素的加载,但是在从一个页面导航到另一个页面时它有点笨拙。
谢谢!!
只需使用 CSS 为 body 标签的不透明度设置一次动画。
编辑Firefox 会记住动画已运行,因此当您返回缓存页面时它不会再次运行,但其他浏览器 (Chrome) 会重新运行动画。为避免这种情况,您需要将动画键入 ID 或类,并在 BODY 标记中包含一段 JavaScript 来检查 cookie。
#first {
animation: fadeInOnce 1s 1 ease;
-webkit-animation: fadeInOnce 1s 1 ease;
-moz-animation: fadeInOnce 1s 1 ease;
-o-animation: fadeInOnce 1s 1 ease;
-ms-animation: fadeInOnce 1s 1 ease;
}
@keyframes fadeInOnce { 0% {display: none; opacity: 0;} 100% {display:block; opacity: 1;} }
@-webkit-keyframes fadeInOnce { 0% {display: none; opacity: 0;} 100% {display:block; opacity: 1;} }
@-moz-keyframes fadeInOnce { 0% {display: none; opacity: 0;} 100% {display:block; opacity: 1;} }
@-o-keyframes fadeInOnce { 0% {display: none; opacity: 0;} 100% {display:block; opacity: 1;} }
@-ms-keyframes fadeInOnce { 0% {display: none; opacity: 0;} 100% {display:block; opacity: 1;} }
<body>
if(false == /(^|;)\s?first=1\s?($|;)/i.test(document.cookie)) {
document.body.id="first";
document.cookie = "first=1; expire= path=/";
}
....
</body>