基于Patrick Sexton tutorial,我想按照与img
一样的方式推迟背景图片:
<img src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="your-image-here">
<script>
function init() {
var imgDefer = document.getElementsByTagName('img');
for (var i=0; i<imgDefer.length; i++) {
if(imgDefer[i].getAttribute('data-src')) {
imgDefer[i].setAttribute('src',imgDefer[i].getAttribute('data-src'));
} } }
window.onload = init;
</script>
我如何使用背景做同样的事情?
<div style="background:url(your-image-here)"></div>
答案 0 :(得分:2)
所需的更改只是我们选择元素的方式
document.querySelectorAll('div[data-src]');
以及我们如何设置值(此处不是设置src
属性,而是设置style
属性)。
编辑:我甚至会在这里避免attribute
检查(在JavaScript中),因为我们的选择器会这样做。
标记(在此处编辑代码:http://codepen.io/anon/pen/rryxoK)
function init() {
var imgDefer = document.querySelectorAll('div[data-src]');
var style = "background-image: url({url})";
for (var i = 0; i < imgDefer.length; i++) {
imgDefer[i].setAttribute('style', style.replace("{url}", imgDefer[i].getAttribute('data-src')));
}
}
window.onload = init;
&#13;
.deferImage {
width: 800px;
height: 600px;
}
&#13;
<div class="deferImage" data-src="https://upload.wikimedia.org/wikipedia/commons/thumb/9/96/Domestic-crested-duck-CamdenME.jpg/800px-Domestic-crested-duck-CamdenME.jpg"></div>
&#13;
答案 1 :(得分:1)
您可以做同样的想法,但不是源代码,而是更改init函数中的背景
<div id='my-div' style="" data-src="your-image-here"></div>
<script>
function init() {
var backgroundDefer = document.getElementById('my-div');
if(backgroundDefer.getAttribute('data-src')) {
backgroundDefer.style.background="url("+backgroundDefer.getAttribute('data-src')+")";
}
}
window.onload = init;
</script>
答案 2 :(得分:0)
如果您想要做的只是在纯JS使用中页面加载后设置背景:
window.onload="myFunction()";
myFunction
在哪里进行加载。
答案 3 :(得分:-1)
我尝试使用getElementsByClassName()
,但也遇到了backgroundDefer.getAttribute is not a function
错误。因此,我最终注入了id属性以及data-src属性以用作图像URI的占位符,并使用上述代码延迟了背景图像。
我还必须首先在后台URI图像中创建一个空字符串。
<div id="my-div" class="parallax-background" data-stellar-background-ratio="0.7" data-src="https://d5y2y5rl4e57i.cloudfront.net/GWL_atl-108.jpg" style="background-image:url('')"></div>
<script>
function init() {
var backgroundDefer = document.getElementById('my-div');
//have to use document.getElementById in order to use getAttribute() function
if(backgroundDefer.getAttribute('data-src')) {
backgroundDefer.style="background-image:url("+backgroundDefer.getAttribute('data-src')+")";
}
}
window.onload = init;
</script>