预加载关键帧中指定的css背景图像

时间:2017-05-23 07:07:36

标签: css google-chrome

我正在使用css动画来完成交叉淡入淡出,如



addprocs(4); # create 4 extra processes (i.e. workers); this is in addition
             # to the main process that handles the REPL

@everywhere import Pycall
@everywhere PyCall.@pyimport numpy as np # load module on _all_ 5 active processes

* { box-sizing: border-box}

.slides {
  width: 300px;
  height: 300px;
  background: tomato;
  animation: images 9s linear 0s infinite alternate;
}

@keyframes images {
  0% {
    background: url('https://fillmurray.com/300/300')
  }
  
  50% {
   background: url('http://www.placecage.com/c/300/300');
  }
  
  100% {
    background: url('https://stevensegallery.com/300/300')
  }
}




似乎浏览器(使用chrome)不会预加载图像,(在第一个动画周期中,转换不平滑)。

如何以最佳方式预加载它们,为什么浏览器还没有这样做?

2 个答案:

答案 0 :(得分:1)

您应该发送标头以预加载图片: 如果使用php:

<?php 
header('Link: <https://fillmurray.com/300/300>; rel=preload; as=image, <http://www.placecage.com/c/300/300>; rel=preload; as=image, <https://stevensegallery.com/300/300>; rel=preload; as=image');
?>

头部中的元素可以实现同样的效果,但对浏览器来说甚至更早。 此外,如果有兴趣,请查看HTTP / 2推送(如果您的服务器支持它)。它也使用标题,并且在这方面以相同的方式工作,尽管图像应该来自您自己的服务器。

答案 1 :(得分:0)

您可以在.slides div中预加载它们并隐藏它们。

.slides {
    width: 300px;
    height: 300px;
    background: url('https://fillmurray.com/300/300') no-repeat -9999px -9999px,
                url('http://www.placecage.com/c/300/300') no-repeat -9999px -9999px,
                url('https://stevensegallery.com/300/300') no-repeat -9999px -9999px;
    animation: images 9s linear 0s infinite alternate;

}