使用css3淡入淡出图像

时间:2014-04-11 11:27:25

标签: html css css3

这是我的代码: http://jsfiddle.net/NVk2N/2/

我正试图淡化大背景图片。我试过这个:

#cover {
    background: url(http://bootstrapguru.com/preview/cascade/images/carousel/imageOne.jpg)         no-repeat center center fixed;
    background-size: cover;
    height:100%;
    width: 100%;
    position:fixed;
    opacity:0;
    transition: opacity 2s;
}
然而,图像永远不会出现。我做错了什么?

詹姆斯

5 个答案:

答案 0 :(得分:4)

您实际上需要一个不透明度的动画,您可以在其中设置animation-fill-mode: forwards,以便在动画的最后一次迭代后继续应用最后一帧。

更新小提琴http://jsfiddle.net/NVk2N/7/

#cover {
    ...
    -webkit-animation: 2s show;
    -moz-animation: 2s show;
    -ms-animation: 2s show;
    animation: 2s show;

    -webkit-animation-fill-mode: forwards;
    -moz-animation-fill-mode: forwards;
    -ms-animation-fill-mode: forwards;
    animation-fill-mode: forwards;

}


@-webkit-keyframes show {
    from { opacity: 0 }
    to { opacity: 1 }
}
@-moz-keyframes show {
    from { opacity: 0 }
    to { opacity: 1 }
}
@-ms-keyframes show {
    from { opacity: 0 }
    to { opacity: 1 }
}
@keyframes show {
    from { opacity: 0 }
    to { opacity: 1 }
}

(当然,您需要在必要时使用供应商前缀)


注意:如果您只需要淡入背景图片(而不是整个元素),您可以在绝对定位的伪元素中加载背景(例如{ {1}})使用负#cover:before并将动画应用于psuedoelement本身:

  

以下是codepen的示例:http://codepen.io/anon/pen/EJayr/

相关CSS

z-index

关于伪元素的动画在每个现代浏览器上运行良好(Chrome< 26 - as reported on issue #54699除外 - 但不是真正的问题,因为此时的当前版本是34.0.1847.116)

答案 1 :(得分:0)

我相信您可以使用keyframes and animations来完成工作。 纯粹的css不可能仅淡化背景图像。参考:How to fade in background image by CSS3 Animation

答案解释说你可以在<img>内使用<div>来应用淡入淡出动画,因为除了css之外没有别的办法。

答案 2 :(得分:0)

你需要使用一些js代码来触发动画属性。只需为#cover添加一个具有不透明度的新类:1并在body load上指定此类来覆盖。

example

<body onload="document.getElementById('cover').classList.add('showed');">

答案 3 :(得分:0)

要触发过渡,您实际上需要一个触发器。

您正在设置&#34; 0&#34;的不透明度这就是你得到的:0不透明度。 如果不透明度的声明从0变为1,则过渡将起作用。 这就是过渡所做的。

Fabrizio Calderan与动画的解决方案应该可以胜任。

答案 4 :(得分:0)

使用已经给出的其他答案会让您淡化该元素中的所有元素,这样就无法达到您想要的效果。

最好的方法是:

1)创建一个z-index为1的div,它保存您的背景图像以及您想要淡化的内容 2)创建另一个z-index为10的div,它保存你不想淡化的内容,并将它放在位置绝对的背景div上。 3)使用jquery animate

为背景图像设置动画

我希望这会有所帮助,这会给你理想的结果!