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

标签 css google-chrome

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

* { 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')
  }
}
<div class="slides"></div>

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

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

最佳答案

您应该发送 header 以预加载图像: 如果使用 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 推送(如果您的服务器支持)。它还使用 header ,并且在这方面以相同的方式工作,尽管那时图像应该来自您自己的服务器。

关于css - 预加载关键帧中指定的 css 背景图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44127959/

相关文章:

css - margin-top : auto and margin-bottom: auto amounting to 0 margin? 背后的基本原理是什么

javascript - Applescript : wait that the page is load on chrome

javascript - 测试 navigator.getUserMedia 是否需要 https,无需浏览器用户代理嗅探

javascript - Chrome PDF Viewer 嵌入式下载按钮不起作用

CSS 变量和字符串连接

html - 如何在 AngularJS 中使用 ng-options 和 ng-init

css - 如何将一些文本居中并在同一行上右对齐更多文本?

c# - HTML/CSS 打印功能

android - Chrome数据压缩和文件上传

ie7 和 i6 上的 Jquery Slider 间距 fubar