javascript - CSS Background-Images Loading after HTML Images(涉及Javascript)

标签 javascript html css

我拼凑了一个快速的小型微型网站,您可以在 http://monterraauction.com 上看到它.如果你没有超快的连接(并且没有缓存),最后要加载的元素是用于 CSS 图像文本替换的背景图像(主要是顶部的 h1#head,带有7kb 背景图像)。没有什么使人衰弱的,但它看起来有点尴尬。而且我问这个问题是出于好奇,而不是其他任何事情;)另外,请注意,这发生在 Firefox 中,而不是 Chrome。

现在,在 h1#head 下方我在 div#photo 中有一个 jquery.cycle.lite 支持的幻灯片.在 HTML 标记中,每张幻灯片共有 13 个大图像文件。如果我删除除第一张幻灯片以外的所有幻灯片,那么问题就消失了!所以 CSS 背景图像在加载之后...那些 HTML 图像完成了吗?但令人困惑的是:

我在 YSlow 中查看...CSS 背景图像的响应时间比 #photo 中的所有幻灯片都要短得多.事实上,在所有 JS 文件完成加载之后。那他们为什么不先出现呢?

我试过了 $('#photo img:last-child').load(function() { alert('Locked and Loaded!')}); ,但是背景图像会在警报出现之前弹出一段时间,所以我假设它不会等到最后一张幻灯片加载完毕(诚然我是一个 JS 菜鸟,所以也许我只是做了一个错误的假设) .

我还尝试注释掉所有 jquery.cycle.lite 的东西,这样我就知道我没有任何 JS 来操作 #photo 中的 DOM 元素。 ,但这不是问题所在。我尝试将所有 JS 放在文档底部,就在 </body> 之前,但这没有用。最后,我尝试关闭 javascript,当然 css 背景图像加载方式先于 #photo 中的图像加载。 ,所以它绝对是 JS 的东西(amirite?)

我想这里最明显的解决方案是将幻灯片标记为 LINKS 而不是 IMG,并让 Javascript 在 DOM 准备好后插入这 12 张额外的幻灯片图像——没有 javascript 的用户无论如何都不需要下载额外的图像.但同样,我很好奇:

为什么从#photo 中删除多余的 HTML 图像可以解决问题?为什么 CSS 背景图像在 HTML 图像加载后显示,即使 YSlow 说 css 背景图像首先加载?看看它是如何在 FF 而不是 Chrome 中发生的,这仅仅是浏览器问题吗?

我很感激你们能给我的任何见解!

最佳答案

如果你在 <head> 的顶部插入一个小脚本 block 会发生什么?预加载您的背景图片? (只需创建新的“图像”对象并设置源属性。)我并不是说这一定是个好主意,但这可能是一个有趣的实验。

(请注意,我的意思是您打算在解析时执行的脚本 block ,而不是设置“页面就绪”处理程序的东西,如 la jQuery(function() { ... })。)

关于javascript - CSS Background-Images Loading after HTML Images(涉及Javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2568655/

相关文章:

caching - 我什么时候应该使用Cache-Control : no-cache?

HTML/CSS - 导航栏中 li 元素内的图像

html - Bootstrap - 带间距的列

html - flex 盒元素如何使用其父项的整个宽度

javascript - 如何使用 html 中的视频标签使视频响应?

javascript - 尝试在 JavaScript 中重播 GPX 路线,但在延迟航路点方面遇到困难

javascript - 如何阻止人们通过 quicktime 播放 mp3

javascript - 禁用拖放

html - flexbox 中的自动换行不遵守 100% 宽度限制

css - 使用 primefaces 3.1 实现自定义 CSS