【问题标题】:How to fade changing background image如何淡化变化的背景图像
【发布时间】:2011-06-27 12:06:38
【问题描述】:

我想在执行此代码时淡化图像:

$("#large-img").css('background-image', 'url('+$img+')');

我试过在很多地方添加淡入淡出。

谢谢

【问题讨论】:

  • @fade.. 你的问题是什么?您是在问如何淡化,还是您尝试过如何通过该代码淡化图像..请清楚地提及。
  • 如果#large-img里面没有内容,那么我建议你淡出整个元素,因为你不能淡出单个背景图片。
  • @mihir 我正在尝试淡出旧背景图像并淡入新背景图像
  • @anriette 它没有任何内容,所以我应该将其淡出,更改背景图像并将其淡入?

标签: jquery background fade


【解决方案1】:

不透明度符合您的目的?

如果是这样,试试这个:

$('#elem').css('opacity','0.3')

【讨论】:

  • 我认为这会保持不透明度,直到我重置它,我还是会尝试一下
【解决方案2】:

如果您尝试淡化背景图像但保留前景文本/图像,您可以使用 css 将背景图像分离到一个新的 div 中,并将其放置在包含文本/图像的 div 上,然后淡化背景 div。

【讨论】:

  • 我不需要那个。我有一组缩略图图像,当我单击缩略图时,它将从缩略图的 href 更改大 img。我希望大图像的这种转换淡入/淡出。
  • 好的,我明白了。我已经将灯箱插件用于类似leandrovieira.com/projects/jquery/lightbox 的东西,但我不认为这正是你所追求的。祝你好运。
【解决方案3】:

这可能是你想要的:

$('#elem').fadeTo('slow', 0.3, function()
{
    $(this).css('background-image', 'url(' + $img + ')');
}).fadeTo('slow', 1);

延迟 1 秒:

$('#elem').fadeTo('slow', 0.3, function()
{
    $(this).css('background-image', 'url(' + $img + ')');
}).delay(1000).fadeTo('slow', 1);

【讨论】:

  • 我完全了解您来自哪里,但我正在更改不同元素的背景。我单击缩略图,然后它将大图像从缩略图更改为图像
  • 好的,我得到了它的工作,但它有时会卡在褪色并且看起来变暗或在图像之间跳跃/剪切。不像我想要的那么顺利
  • 好的,我已经解决了卡住的问题。我怎样才能使它淡入新图像以及淡出其他图像?
  • 我相信你的延迟功能放错了地方;将其添加到第一行后,脚本将根据需要运行。
【解决方案4】:

这可能会有所帮助

HTML

<div id="textcontainer">        
    <span id="sometext">This is some information </span>
    <div id="container">

    </div>
</div>

CSS

#textcontainer{
    position:relative;
    border:1px solid #000;
    width :300px;
    height:300px;
}
#container{
    background-image :url("http://dcooper.org/gallery/cf_appicon.jpg");
    width :100%;
    height:100%;
}
#sometext{
    position:absolute;
    top:50%;
    left:50%;
}

Js

$('#container').css('opacity','.1');

【讨论】:

    【解决方案5】:

    我可以提供替代解决方案吗?

    我也遇到了同样的问题,但由于它淡化了整个元素,而不仅仅是背景,所以淡入淡出不起作用。在我的例子中,元素是 body,所以我只想淡化背景。

    解决这个问题的一种优雅方法是对元素进行分类并使用 CSS3 过渡作为背景。

    transition: background 0.5s linear;

    当您使用 toggleClass 或您的代码更改背景时,$("#large-img").css('background-image', 'url('+$img+')'); 它会按照类的定义淡化。

    【讨论】:

    • 它如何为您工作?我认为背景图像无法转换...
    • 这是一个优雅的解决方案,烦人的 css3 不支持 bg 图像转换,这里是一个替代 css 方法:mightymeta.co.uk/…
    • 目前:我只在 chrome 中工作。希望浏览器支持能赶上这个。
    • 这是有史以来最好的解决方案,您甚至不需要 jQuery 进行转换。这也很棒,因为如果您确实更改了背景图像,如果新的背景图像相同,它就不会褪色。这对 JS 滑块非常有用。
    【解决方案6】:

    在上面Rampant Creative Group的解决方案的基础上,我使用jQuery来改变body标签的背景图片:

    例如

    $('body').css({'background': 'url(/wp-content/themes/opdemand/img/bg-sea.jpg) fixed', 'background-size': '100% 100%'});
    
    $('body').css({'background': 'url(/wp-content/themes/opdemand/img/bg-trees.jpg) fixed', 'background-size': '100% 100%'});
    

    我有一个在两个语句之间切换的 javascript 计时器。

    我所要做的就是解决创建淡出的问题 -> 淡入效果是使用 Rampant Creative Group 的建议并添加

    transition: background 1.5s linear;
    

    我的代码。现在它淡出并漂亮地消失了。

    感谢 Rampant Creative Group 和 SoupEnvy 的编辑!!

    【讨论】:

      【解决方案7】:

      这是我发现的唯一合理的淡化背景图像的方法。

      <div id="foo">
        <!-- some content here -->
      </div>
      

      您的 CSS;现在使用CSS3 transition 进行了增强。

      #foo {
        background-image: url(a.jpg);
        transition: background 1s linear;
      }
      

      现在换掉背景

      document.getElementById("foo").style.backgroundImage = "url(b.jpg)";
      

      瞧,它消失了!


      明显的免责声明:如果您的浏览器不支持 CSS3 transition 属性,这将不起作用。在这种情况下,图像将在 的情况下更改。鉴于&lt;1% 的用户浏览器不支持 CSS3,这可能没问题。不要自欺欺人,没关系。

      【讨论】:

      • 最好的解决方案,我有很多代码结合了 background-color 的转换,改变了 background-image 和更多的转换......这个解决方案让它变得更好更容易
      • 但我不能让它在 FF 中工作¿?虽然我使用 -moz-transition,但为什么呢?
      【解决方案8】:

      有人将我指向此线程,因为我遇到了同样的问题,但它对我不起作用。经过数小时的搜索,我找到了一个解决方案 - https://github.com/rewish/jquery-bgswitcher#readme

      除了淡入淡出之外,它还有其他一些选项。

      【讨论】:

      猜你喜欢
      • 2020-06-30
      • 1970-01-01
      • 2014-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-28
      • 1970-01-01
      相关资源
      最近更新 更多