背景图像的CSS动画过渡越来越暗

Lau*_*ter 3 javascript css jquery css3 css-animations

所以我正在构建一个具有背景图像的页面:

body {
    background:url(images/bg.png) center center no-repeat fixed;
    -webkit-background-size:cover;
    -moz-background-size:cover;
    -o-background-size:cover;
    background-size:cover
}
Run Code Online (Sandbox Code Playgroud)

页面加载一个看起来像警报/消息的div.当这个div加载时我想要一个背景图像变暗的短动画,
现在我用这个:

back { 
    background:rgba(0,0,0,.95);
    display:block;
    height:100%;
    left:0;
    opacity:1;
    position:fixed;
    top:0;
    width:100%
}
Run Code Online (Sandbox Code Playgroud)

这使它更暗,但我希望这在平滑过渡/动画中逐渐发生.

Tyl*_*erH 5

您可以使用@keyframes.我不知道你的HTML是什么样子,但这里有一个小小的演示:

.back { 
    background:rgba(0,0,0,.95);
    display:block;
    height:500px;
    left:0;
    opacity:1;
    position:fixed;
    top:0;
    width:500px;
}

@keyframes back-change {
   from { background: rgba(133,133,133,.95) }
     to { background: rgba(0,0,0,.95) }
}

.back {
  animation: back-change 4s linear;
}
Run Code Online (Sandbox Code Playgroud)
<div class="back"></div>
Run Code Online (Sandbox Code Playgroud)

我将它设置为以线性模式在4s内从亮到暗变化.您可以更改持续时间或将模式更改为您想要的任何内容(无,无限等).

请注意,该名称back-change后面的@keyframes字是你必须在该所谓的animation财产以后.如果您在一个位置更改名称,则必须在两者中更改它.

这是一个JSFiddle示例,也可以自己搞乱.


您也可以使用CSS3 Transitions.这些在Web浏览器中得到了更长时间的支持.

.back { 
    background:rgba(0,0,0,.95);
    display:block;
    height:500px;
    left:0;
    opacity:1;
    position:fixed;
    top:0;
    width:500px;
    transition-property: background-color;
    transition-duration: 0.3s;
}

.back:hover {
    background-color: rgba(133,133,133,.95);
}
Run Code Online (Sandbox Code Playgroud)
<div class="back"></div>
Run Code Online (Sandbox Code Playgroud)

再次,这是一个JSFiddle示例供您玩.