背景图像不透明度淡出整个元素

Posted

技术标签:

【中文标题】背景图像不透明度淡出整个元素【英文标题】:Background images opacity fades out the whole element 【发布时间】:2013-11-25 07:01:05 【问题描述】:

我有一个带有背景图像的 div 元素,我正在尝试使用 Jquery 淡入和淡出背景图像。 到目前为止,该功能运行良好,但它会淡出整个 div,而不仅仅是我希望的背景。

function rentPics()

    $('#d2').css('background-image','url(' + mazdaArr[1] + ')');
    interID=setInterval (changeImage,3000);


function changeImage()
    
        $('#d2').animate(opacity: 0, 1500, function()
        $('#d2').css('background-image', 'url(' + mazdaArr[x] + ')');
        ).animate(opacity: 1, 1500);
        x++;
        if (x==mazdaArr.length)
        
            x=1;
        
    

【问题讨论】:

opacity 设置整个元素的透明度 我可以通过其他方式使用代码进行褪色吗? 这里告诉你怎么做***.com/questions/4997493/… 【参考方案1】:

如果您正在寻找简单轻量级的交叉淡入淡出,请使用 CSS transition。这不会影响元素内部的textborderbox-shadow

transition: background-image 1s ease-in-out;
-webkit-transition: background-image 1s ease-in-out;
-moz-transition: background-image 1s ease-in-out;
-ms-transition: background-image 1s ease-in-out;
-o-transition: background-image 1s ease-in-out;

看看这个fiddle。

Chrome、Safari 和 Opera 都支持,但我不太确定 Firefox 和 IE 是否支持

如果您要循环的图像列表更大。您可能还需要考虑先缓存图像 URL,因为我注意到第一次使用时有些闪烁/闪烁。在此处查看解决方案 - Preloading CSS Background Images

【讨论】:

【参考方案2】:

淡入将不透明度应用于包含背景图像的整个 div,您可以在 div 后面创建一个图层来应用淡入和淡出。

【讨论】:

【参考方案3】:

您可以让它添加或删除一个类,而不是使用 jQuery 来为不透明度设置动画。然后将过渡添加到您的 CSS,这应该会产生您想要的结果。像下面这样的东西可能会起作用。您可以查看 CSS 转换的文档here。按照惯例,唯一的缺点是 IE。

.element 
  -webkit-transition: ease 0.2 all;
  -moz-transition: ease 0.2 all;
  -o-transition: ease 0.2 all;
  -ms-transition: ease 0.2 all;
  transition: ease 0.2 all;

【讨论】:

【参考方案4】:

使用具有绝对定位叠加层的相对容器。您的 html 应如下所示:

<div id="d2" class="image-wrapper">
  <img src="/img/1.jpg" />
  <div class="overlay"> your text goes here </div>
</div>

... 和你的 CSS:

.image-wrapper 
    position: relative;

.image-wrapper .overlay 
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    overflow: auto;

.image-wrapper img 
    display: block;

现在您可以更改图像的不透明度,而无需更改覆盖内的内容。

【讨论】:

我不确定你说得对,我没有任何文字我只想让淡入淡出效果不会影响边框、框阴影等。我只想改变图像...

以上是关于背景图像不透明度淡出整个元素的主要内容,如果未能解决你的问题,请参考以下文章

使用另一个图像淡入/淡出背景图像/淡出其他元素

在循环中更改 div 元素的背景颜色交叉淡入淡出

元素(背景图像)不透明度,但没有边框不透明度

CSS3 淡出/淡入文本和图像从和到透明

角度6背景图像交叉淡入淡出动画

淡出 div 背景会影响背景图像顶部的其他 div