gpt4 book ai didi

javascript - 加载背景图像后触发函数

转载 作者:太空宇宙 更新时间:2023-11-04 06:43:59 26 4
gpt4 key购买 nike

我正在使用 Jimdo 并且有一个给定的 div(包含 3 个子 div,我认为这是我的一般问题,但我不确定)我在浏览器中找到:

<div class="jtpl-background-area jqbga-container jqbga-web--image" background-area="" style="background-image: url('https://image.jimcdn.com/app/cms/image/transf/dimension=767x/path/s4354a59fbfee63e4/backgroundarea/ibb91266a7f033fa3/version/1529172695/image.jpg');background-position: 54.0833% 41.0025%;"></div>

如何在加载此背景图像后触发函数?

我已经为此花费了数小时,尝试了我在这里找到的大量方法或 waitforimages 之类的工具 - 仍然没有成功。 Jimdo/这个 div 是怎么回事?如何在加载背景图像后触发某些内容?

var src = $('.jtpl-background-area').css('background-image');
var url = src.match(/\((.*?)\)/)[1].replace(/('|")/g,'');

var img = new Image();
img.onload = function() {
$('.jtpl-background-area').css('-webkit-animation', 'fadein 4s');
}
img.src = url;
if (img.complete) img.onload();

不起作用。

$('.jtpl-background-area').waitForImages(true).done(function() {
$('.jtpl-background-area').css('-webkit-animation', 'fadein 4s');
});

不起作用(waitforimages-script 包含正确且 .jtpl-background-area 的不透明度在 css 中设置为 0)。

有什么想法吗?

 $(window).on('load', function() {
$(".jtpl-background-area").css('-webkit-animation', 'fadein 4s');
});

导致背景经常弹出太晚。图片尚未准备好/完全加载时显示页面。

-

编辑:

关于 Scott Marcus 和 'adeneo' ( Wait for background images in CSS to be fully loaded ) 的回答:

  $(window).on('load', function() {
$(".jtpl-background-area jqbga-container jqbga-web-
image").ready(function() {
$(".jtpl-background-area").velocity({ opacity: 1 },{ duration: 3000});
})
});

这在这里“有效”——但我的 bg-images 出现得太晚了。但是,如果我将其与

交换,为什么什么也没有发生?
var src = $(".jtpl-background-area jqbga-container jqbga-web-image");
var url = src.match(/\((.*?)\)/)[1].replace(/('|")/g,'');
var img = new Image();
img.onload = function() {
$('.jtpl-background-area').velocity({ opacity: 1 },{ duration: 3000});
}
img.src = url;
if (img.complete) img.onload();

?我的错误在哪里?为什么这不起作用并使我的页面卡住?它保持白色并且无法使用此代码加载。

或者换句话说——我如何得到

var src = $('#test').css('background-image');
var url = src.match(/\((.*?)\)/)[1].replace(/('|")/g,'');

var img = new Image();
img.onload = function() {
alert('image loaded');
}
img.src = url;
if (img.complete) img.onload();

与我的(给定且不可改变的)一起工作

<div class="jtpl-background-area jqbga-container jqbga-web--image" background-area="" style="background-image: url('https://image.jimcdn.com/app/cms/image/transf/dimension=767x/path/s4354a59fbfee63e4/backgroundarea/ibb91266a7f033fa3/version/1529172695/image.jpg');background-position: 54.0833% 41.0025%;"></div>

是吗?

最佳答案

除了使用背景图片,您还可以使用 img 元素和 CSS 定位将其分层放置在其父级 div 的内容之后。然后,您可以使用 img 元素的 load 事件。

document.querySelector(".jtpl-background-area").addEventListener("load", function(){
console.log("Background loaded!");
$(".hidden").fadeIn(4000); // Fade the image in
});
/* by positioning the element absolutely and giving it a negative
z-index, we put it behind any other items in the same space. */
.jtpl-background-area { position:absolute; z-index:-1; top:0; left:0; }

div div { background-color:rgba(255,255,255, .5); }

.hidden { display:none; } /* Image will start off hidden */
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<div>Some other div content</div>
<!-- The image will be hidden at first -->
<img class="hidden jtpl-background-area jqbga-container jqbga-web--image" background-area="" src="http://imgsrc.hubblesite.org/hvi/uploads/image_file/image_attachment/30741/STSCI-H-p1821a-m-1699x2000.png">
</div>

关于javascript - 加载背景图像后触发函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53461284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com