在玩弄了 acdcjunior 和 MaxArt 给我的想法之后,我最终在页面顶部创建了一个标题元素,并用带有背景图像的 div 填充它。我使用 div 代替长背景样式,因为我发现这种方式更方便。这样我就不必担心背景图像的大小,即使我在我的问题中指定它们都具有相同的大小。
我的 HTML 结构如下所示:
<header><div class=bg data-bgNumber=1 style="background-image:url('header1.png')"></div></header>
CSS:
header {
white-space: nowrap;
height: 260px;
display: inline-block;
max-width: 100%;
overflow:hidden;
}
header .bg {
width: 650px;
height: 260px;
display: inline-block;
background: no-repeat center;
background-size: cover;
}
头文件类的 JS:
function Header() {
this.header = document.body.getElementsByTagName('header')[0];
this.makeHeader(4);
window.onresize = function() {
this.makeHeader(4);
}.bind(this);
}
Wrapper.prototype = {
makeHeader: function(difBgCount) {
while(this.header.offsetWidth < document.body.clientWidth) {
var bg = 1+this.header.lastElementChild.getAttribute('data-bgNumber')%difBgCount;
this.header.innerHTML += '<div class=bg data-bgNumber='+bg+' style="background-image:url(\'header'+bg+'.png\')"></div>';
}
}
}
然后,当你的文档准备好时,你创建一个新的头类实例,一切都会好起来的:
var header;
function onBodyLoad() {
wrapper = new Header();
}
makeHeader 函数的参数是不同背景图像的数量。这些图像必须命名为“header1.png”、“header2.png”等,但如果您想以不同的方式命名,更改名称和扩展名应该不难。
最后,当图像大小不同时,它看起来像这样:
并缩小: