2

我想在我的包装器的背景图像中添加一个连续的淡入淡出效果。我知道您可以使用关键帧动画来使背景图像四处移动,但是,我想知道使用这种技术是否可以产生淡入淡出效果。

http://css-tricks.com/snippets/css/webkit-keyframe-animation-syntax/

例如:

@-webkit-keyframes fontbulger {
0% {
    font-size: 10px;
}
30% {
    font-size: 15px;
}
100% {
    font-size: 12px;
}

在我的完美情况下会像......

@-webkit-keyframes fontbulger {
0% {
    background: url(image.png, 1);
}
30% {
    background: url(image.png, 0.5);
}
100% {
    background: url(image.png, 1);
}

...对于其中 0.5 将是 50% 的可见性。当然,这个建议是行不通的。有什么办法可以做到这一点?我知道您可以将透明度应用于RGB 值,但我想将其应用于图像。

4

1 回答 1

2

我目前不知道有任何方式可以直接影响您所寻求的背景图像的不透明度。两种可能的解决方法是:

1. 纯 CSS3 方式(还没有很好的支持)

使用伪元素来提供background-image允许opacity使用并将整个东西保持为纯 css,但它不起作用webkit(显然不支持伪元素上的动画),仅在moz扩展上(我无法测试 IE10 ...对此的反馈会有所帮助)。比较 Firefox 和 Chrome 的这个 fiddle,它使用了这个代码:

HTML

<div class="bkgAnimate">Foreground text</div>

CSS

.bkgAnimate {
    width: 300px; /*only for demo*/
    height: 200px; /*only for demo*/
    position: relative;
    z-index: 1; /* make a local stacking context */
}

.bkgAnimate:after {
    content: '';
    position: absolute;
    top:0;
    right: 0;
    bottom: 0;
    left: 0;
    background: url(src="your/image/path/file.png") no-repeat;
    z-index: -1;  
    -webkit-animation: fontbulger  3s infinite;
    -moz-animation:    fontbulger  3s infinite;
    -ms-animation:     fontbulger  3s infinite;
}
@-webkit-keyframes fontbulger {
    0%   { opacity: 1; }
    30%  { opacity: 0.5; }
    100% { opacity: 1; }
}
@-moz-keyframes fontbulger  {
    0%   { opacity: 1; }
    30%  { opacity: 0.5; }
    100% { opacity: 1; }
}
@-ms-keyframes fontbulger  {
    0%   { opacity: 1; }
    30%  { opacity: 0.5; }
    100% { opacity: 1; }
}

2. 杂乱无章的 HMTL 解决方案(更跨浏览器友好)

更改为将实际img标签作为背景放置似乎是唯一webkit的行为方式,正如这个小提琴所示。但这可能不适合您。代码与上面类似,除了:

HTML

<div class="bkgAnimate">Foreground text 
  <img class="bkg" src="your/image/path/file.png"/>
</div>

CSS 从上面改变

:after将选择器更改为并从该代码.bkgAnimate .bkg中删除contentand属性。background

于 2012-05-07T01:48:52.207 回答