美文网首页
css使用@keyframes首次加载图片循环会出现白色间隙

css使用@keyframes首次加载图片循环会出现白色间隙

作者: Fanny | 来源:发表于2020-02-23 18:56 被阅读0次

    问题解说:
    在使用css 的animations 属性时,首次加载循环会出现白色的间隙,看着有点像页面有刷新的感觉,后面每次循环就不会再有这个问题
    问题演示

    keyframes.gif
    //html
     <div class="container">
            <div class="first"> </div>
      </div>
    
    //less
    .container {
      width: 100vw;
      height: 100%;
    }
    .container .first {
      width: 100vw;
      height: 100vh;
      animation: bgmove 10s infinite;
    }
    @keyframes bgmove {
      0% {
        background: url("https://sqimg.qq.com/qq_product_operations/im/pcqq/9.0/firstscreen_img/BG-1.jpg") no-repeat center center;
        background-size: cover;
        opacity: 1;
      }
      15% {
        background: url("https://sqimg.qq.com/qq_product_operations/im/pcqq/9.0/firstscreen_img/BG-1_1.jpg") no-repeat center center;
        opacity: 1;
        background-size: cover;
      }
      30% {
        background: url("https://sqimg.qq.com/qq_product_operations/im/pcqq/9.0/firstscreen_img/BG-2_1.jpg") no-repeat center center;
        opacity: 1;
        background-size: cover;
      }
      45% {
        background: url("https://sqimg.qq.com/qq_product_operations/im/pcqq/9.0/firstscreen_img/BG-4_1.jpg") no-repeat center center;
        opacity: 1;
        background-size: cover;
      }
      60% {
        background: url("https://sqimg.qq.com/qq_product_operations/im/pcqq/9.0/firstscreen_img/BG-5_1.jpg") no-repeat center center;
        opacity: 1;
        background-size: cover;
      }
      80% {
        background: url("https://sqimg.qq.com/qq_product_operations/im/pcqq/9.0/firstscreen_img/BG-1_1.jpg") no-repeat center center;
        opacity: 1;
        background-size: cover;
      }
      100% {
        background: url("https://sqimg.qq.com/qq_product_operations/im/pcqq/9.0/firstscreen_img/BG-1.jpg") no-repeat center center;
        background-size: cover;
        opacity: 1;
      }
    }
    

    解决办法

    //less
    .container {
      width: 100vw;
      height: 100%;
    }
    .container .first {
      width: 100vw;
      height: 100vh;
      background:url("https://sqimg.qq.com/qq\_product\_operations/im/pcqq/9.0/firstscreen\_img/BG-1.jpg"),
                 url("https://sqimg.qq.com/qq\_product\_operations/im/pcqq/9.0/firstscreen\_img/BG-1\_1.jpg"),
                 url("https://sqimg.qq.com/qq\_product\_operations/im/pcqq/9.0/firstscreen\_img/BG-2\_1.jpg"),
                 url("https://sqimg.qq.com/qq\_product\_operations/im/pcqq/9.0/firstscreen\_img/BG-4\_1.jpg"),
                 url("https://sqimg.qq.com/qq\_product\_operations/im/pcqq/9.0/firstscreen\_img/BG-5\_1.jpg"),
                 url("https://sqimg.qq.com/qq\_product\_operations/im/pcqq/9.0/firstscreen\_img/BG-1\_1.jpg");
      animation: bgmove 10s infinite;
    }
    @keyframes bgmove {
      0% {
        background: url("https://sqimg.qq.com/qq_product_operations/im/pcqq/9.0/firstscreen_img/BG-1.jpg") no-repeat center center;
        background-size: cover;
        opacity: 1;
      }
      15% {
        background: url("https://sqimg.qq.com/qq_product_operations/im/pcqq/9.0/firstscreen_img/BG-1_1.jpg") no-repeat center center;
        opacity: 1;
        background-size: cover;
      }
      30% {
        background: url("https://sqimg.qq.com/qq_product_operations/im/pcqq/9.0/firstscreen_img/BG-2_1.jpg") no-repeat center center;
        opacity: 1;
        background-size: cover;
      }
      45% {
        background: url("https://sqimg.qq.com/qq_product_operations/im/pcqq/9.0/firstscreen_img/BG-4_1.jpg") no-repeat center center;
        opacity: 1;
        background-size: cover;
      }
      60% {
        background: url("https://sqimg.qq.com/qq_product_operations/im/pcqq/9.0/firstscreen_img/BG-5_1.jpg") no-repeat center center;
        opacity: 1;
        background-size: cover;
      }
      80% {
        background: url("https://sqimg.qq.com/qq_product_operations/im/pcqq/9.0/firstscreen_img/BG-1_1.jpg") no-repeat center center;
        opacity: 1;
        background-size: cover;
      }
      100% {
        background: url("https://sqimg.qq.com/qq_product_operations/im/pcqq/9.0/firstscreen_img/BG-1.jpg") no-repeat center center;
        background-size: cover;
        opacity: 1;
      }
    }
    

    最终效果

    最终效果.gif
    问题解析

    图片的加载一般有两种情况,图片的预加载图片的懒加载,在这里就涉及到图片的预加载问题,当页面的图片过多的时候,服务器的压力就会大,加载图片一次性显示会有不连贯所以在第一次将所有的图片都加载下来,这样后面在使用这些图片的时候就是缓存在本地的资源,加载速度也会块很多,就不会出现白色断层

    相关文章

      网友评论

          本文标题:css使用@keyframes首次加载图片循环会出现白色间隙

          本文链接:https://www.haomeiwen.com/subject/xncsqhtx.html