【问题标题】:jQuery to FadeOut Background image declared by HTML inline stylejQuery 到 HTML 内联样式声明的 FadeOut 背景图像
【发布时间】:2013-01-10 00:07:25
【问题描述】:

我一直在尝试将 Jquery 用于 fadeOut 仅通过内联样式而不是 CSS 声明的 div 中的背景图像。例如:

<div class="big-video-wrap-image" style="background:url(images/image1.jpg) repeat;">

我应该如何对 div 类的背景样式应用淡出效果,以便 div 保留但只有背景图像消失(通过淡出)。


可能不必要的信息: 分享我想要做的事情会带来一些额外的问题,但我希望分享这些细节能够描绘出我正在做的事情的完整画面。

我正在使用:

  • jQuery 1.8.3
  • Modernizr 2.6.2
  • 循环 2.9
  • 缓和 1.3
  • 漂亮的照片
  • BigVideo.js 和所有依赖库。

BigVideo.js 在网站(或理论上任何 div)的背景中显示动态大小的视频。

但它不适用于移动设备。所以我使用 Modernizr 来检查设备,所以运行 BigVideo.js 的脚本设置如下:

var BV = new $.BigVideo();
if (Modernizr.touch) {
} else {
    BV.init();
    BV.show($('.big-video-play').attr('data-video'),{altSource:$('.big-video-play').attr('data-video2')});
    $(".big-video-wrap-image").attr('[style*="background"]') /*No idea what should be on this line*/

}

html 本身:

<div class="big-video-wrap big-video-play" data-video="vids/vid1.mp4" data-video2="">
<div class="big-video-wrap-image" style="background:url(images/ally1.jpg) repeat;">

以及外部 CSS:

.big-video-wrap {
position: relative;
height: 100%;
width: 100%;
overflow: hidden;
}
.big-video-wrap-image {
position: relative;
height: 100%;
width: 100%;
overflow: hidden;
}

这用于响应式网站布局。 这就是它现在的设置方式,bigvideo.js 都将视频扔到主主体 div 的顶部而不是正确的 div 类,当然,在视频加载时使第一帧/移动图像褪色也不起作用。

非常感谢您的帮助。谢谢。

【问题讨论】:

    标签: jquery html styles inline fadeout


    【解决方案1】:

    一种方法是创建一个图像以放置在 div 上。然后去掉背景样式,淡出图片。

    var $imageDiv = $(".big-video-wrap-image"),
        bgUrl     = $imageDiv.css('background-image').split('(')[1].replace(')', '') //Should probably be done in another way, feel free to fill in anyone,
        imgDummy  = new Image();
    
    imgDummy.onload = function () {
        $(this).addClass('dummyImg').insertBefore($imageDiv).fadeOut();
        $imageDiv.removeAttr('style');
    };
    
    imgDummy.src = bgUrl;
    

    http://jsfiddle.net/tbleckert/SkQ2Y/1/

    【讨论】:

    • 嗯,它可以淡出图像......但不是我正在寻找的方式......向您展示淡入淡出之前的原始外观,请参阅此图片链接:IMGUR image link .像这样将图像放在顶角将无法正常工作。必须有一种方法可以淡出 div 背景中的图像,而不会淡出整个 div 和子 div... ??
    • 但是为什么不能在背景 div 上方放置一些东西呢?或者我不明白……
    • 也许是我不理解.. 哈哈好吧,那么我怎样才能将图像放置在重复但不覆盖所有子 div 的背景 div 上?例如,如果我在 div 上使用上面的脚本,它会在所有子 div 上呈现我的背景图像而不重复然后淡出。那样看起来并不少或漂亮。基本上只需要该 div 背景图像,因为它是在页面加载到淡出之后。除了其他问题,我的问题是如何将 Jquery 指向任何类或 ID 中使用的任何背景图像,所以我所要做的就是在 js 行的末尾添加“.fadeOut('fast')”。
    • 啊哈好吧,所以将虚拟 img 放在 div 后面吗?并将 div 上的背景设置为透明。
    • 那行得通!我会试一试.. 这是一个响应式页面,所以不确定这会导致什么伪影。而且因为重复在图像上的作用与在 div 背景上的作用不同..也许我可以在它后面放另一个 Div?嗯
    猜你喜欢
    • 1970-01-01
    • 2019-03-19
    • 2016-10-20
    • 2017-10-21
    • 2021-07-01
    • 1970-01-01
    • 2011-05-29
    • 2021-05-27
    • 2018-08-15
    相关资源
    最近更新 更多