• 技术文章 >web前端 >css教程

    CSS3怎么给背景图片添加动态变色效果

    青灯夜游青灯夜游2021-08-24 09:12:44原创313
    在之前的文章《利用CSS3创建炫酷的三角背景图像》中,我们给大家介绍了一种创建炫酷三角背景图像的方法,感兴趣的朋友可以去了解一下~

    而下面本文再给大家介绍一种创建炫酷背景图像方法,带大家了解一下如何利用CSS3创建变色背景图像动画,让你的网页更吸引人!

    我们先来看看效果图

    1.gif

    下面我们来研究一下是怎么实现这个效果的:

    首先我们不创建标签,直接在body标签上设置背景图片

    body {
       background-image: url("https://img.php.cn/upload/article/000/000/024/612360451cede816.jpg");
      background-size: cover;
      background-repeat: no-repeat;
      background-attachment: fixed;
      background-position: center;
    }

    1.png

    怎么将图片变色呢?这就需要在背景图片上添加一个颜色层作为覆盖层,这个可以利用linear-gradient()函数实现:

    background-image: 
               linear-gradient(4deg, rgba(0,255,254,0.3) 50%, rgba(0,255,254,0.3) 100%),
       url("https://img.php.cn/upload/article/000/000/024/612360451cede816.jpg");

    3.png

    此时这个还是静态效果,怎么实现不断变色的动态效果?我们可以利用@keyframes和animation属性来实现--添加动画效果:

    body {
      background-image: url("https://img.php.cn/upload/article/000/000/024/612360451cede816.jpg");
      background-size: cover;
      background-repeat: no-repeat;
      background-attachment: fixed;
      background-position: center;
      animation-name: background-overlay-animation;
      animation-duration: 5s;
    	animation-iteration-count: infinite;
    	animation-direction: alternate;
    	animation-timing-function: linear;
    }

    animation-name:指定要绑定到选择器的关键帧的名称

    animation-duration:动画指定需要多少秒或毫秒完成

    animation-timing-function:设置动画将如何完成一个周期

    animation-delay:设置动画在启动前的延迟间隔。

    animation-iteration-count:定义动画的播放次数。

    animation-direction:指定是否应该轮流反向播放动画。

    animation-fill-mode:规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式。

    animation-play-state:指定动画是否正在运行或已暂停。

    @keyframes background-overlay-animation {
      0%   {
          background-image: 
            linear-gradient(4deg, rgba(255,78,36,0.3) 50%, rgba(255,78,36,0.3) 100%), 
    		url("https://img.php.cn/upload/article/000/000/024/612360451cede816.jpg");
      }
      25%  {
          background-image: 
             linear-gradient(4deg, rgba(213,49,127,0.3) 50%, rgba(213,49,127,0.3) 100%), 
    		 url("https://img.php.cn/upload/article/000/000/024/612360451cede816.jpg");
      }
      50%  {
        background-image: 
           linear-gradient(4deg, rgba(36,182,255,0.3) 50%, rgba(36,182,255,1) 100%),
         url("https://img.php.cn/upload/article/000/000/024/612360451cede816.jpg");
      }
      100% {
        background-image: 
            linear-gradient(4deg, rgba(0,255,254,0.3) 50%, rgba(0,255,254,0.3) 100%),
            url("https://img.php.cn/upload/article/000/000/024/612360451cede816.jpg");
      }
    }

    下面给出完整代码:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <style>
    @keyframes background-overlay-animation {
      0%   {
          background-image: 
            linear-gradient(4deg, rgba(255,78,36,0.3) 50%, rgba(255,78,36,0.3) 100%), 
    		url("https://img.php.cn/upload/article/000/000/024/612360451cede816.jpg");
      }
      25%  {
          background-image: 
             linear-gradient(4deg, rgba(213,49,127,0.3) 50%, rgba(213,49,127,0.3) 100%), 
    		 url("https://img.php.cn/upload/article/000/000/024/612360451cede816.jpg");
      }
      50%  {
        background-image: 
           linear-gradient(4deg, rgba(36,182,255,0.3) 50%, rgba(36,182,255,1) 100%),
         url("https://img.php.cn/upload/article/000/000/024/612360451cede816.jpg");
      }
      100% {
        background-image: 
            linear-gradient(4deg, rgba(0,255,254,0.3) 50%, rgba(0,255,254,0.3) 100%),
            url("https://img.php.cn/upload/article/000/000/024/612360451cede816.jpg");
      }
    }
    
    @-webkit-keyframes background-overlay-animation {   /* 兼容谷歌浏览器*/
      0%   {
          background-image: 
            linear-gradient(4deg, rgba(255,78,36,0.3) 50%, rgba(255,78,36,0.3) 100%)
            url("https://img.php.cn/upload/article/000/000/024/612360451cede816.jpg");
      }
      25%  {
          background-image: 
             linear-gradient(4deg, rgba(213,49,127,0.3) 50%, rgba(213,49,127,0.3) 100%),
            url("https://img.php.cn/upload/article/000/000/024/612360451cede816.jpg");
      }
      50%  {
        background-image: 
           linear-gradient(4deg, rgba(36,182,255,0.3) 50%, rgba(36,182,255,1) 100%),
         url("https://img.php.cn/upload/article/000/000/024/612360451cede816.jpg");
      }
      100% {
        background-image: 
            linear-gradient(4deg, rgba(0,255,254,0.3) 50%, rgba(0,255,254,0.3) 100%),
            url("https://img.php.cn/upload/article/000/000/024/612360451cede816.jpg");
      }
    }
    
    body {
       background-image: url("https://img.php.cn/upload/article/000/000/024/612360451cede816.jpg");
      background-size: cover;
      background-repeat: no-repeat;
      background-attachment: fixed;
      background-position: center;
      animation-name: background-overlay-animation;
      animation-duration: 5s;
    	animation-iteration-count: infinite;
    	animation-direction: alternate;
    	animation-timing-function: linear;
    }
    </style>
    </head>
    <body>
    <!--   你的内容放在这里 -->
    </body>
    </html>

    PHP中文网平台有非常多的视频教学资源,欢迎大家学习《css视频教程》!

    以上就是CSS3怎么给背景图片添加动态变色效果的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇:手把手教你怎么使用css3给文字添加动画效果(附代码) 下一篇:纯CSS3怎么创建瀑布流布局?columns方法浅析
    VIP会员

    相关文章推荐

    • 一个绚丽的CSS3动画效果是如何实现的?(代码实例)• css3动画之transform属性与transition属性的简单使用(代码示例)• css3动画之如何添加多种变换效果(代码示例)• 小程序swiper轮播CSS3动画及跳转到指定swiper-item的使用

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网