我使用这篇文章Stretch and scale a CSS image in the background - with CSS only来弄清楚如何拉伸我的背景图像以适应大小。我正在使用background-size:cover;
但我害怕,这不是我需要的安静。我无法弄清楚(一个好方法)如何做到这一点: 假设我的图像分辨率非常宽,如3840px x 1024px
要求:
当前的实施(很糟糕): 图像被切成3个偶数块。中间部分是内容部分的背景。如果屏幕宽度增加,将显示中间部分左右两个div,它们将图像的左侧和右侧部分作为背景)。每次调整窗口大小时,都会使用js计算此边div的大小(高度和宽度)。背景图片的偏移量在Chrome中有效,但在Firefox中左侧div存在问题。
这个代码是:
var PageWidth = 1280;
var SideImageWidth = 1280;
function calculateImageSet(){
var bodyWidth = $('body').width();
var fillerSize = Math.floor((bodyWidth - PageWidth)/2);
if(bodyWidth < PageWidth){
$('#fillerLeft').hide();
$('#fillerRight').hide();
}
else{
var imageOffset = SideImageWidth - fillerSize;
var mainHeight = $('#main').outerHeight();
$('#fillerLeft').width(fillerSize).height(mainHeight).show();
# Doesn't seem to work
if($.browser.mozilla){
$('#fillerLeft').css('background-position', '-'+imageOffset+'px 0px');
}
$('#fillerRight').width(fillerSize).height(mainHeight).show();
}
}
有一个很好的方法吗?没有js?
如果您不理解任何要求,请询问。
谢谢
编辑: 我有一个(近乎工作)的方法:
#main{
background-color: #d4eaff;
background-image: url('forest-wide.jpg');
background-repeat: no-repeat;
background-size: auto 1280px;
background-position: center top;
min-width: 1280px;
}
如果内容不高于1024px,这很不错,但是当它超过1024px时,它会将蓝色添加到底部,所以我必须在此时将背景位置更改为中心底部。
答案 0 :(得分:2)
html {
background: url(images/bg.jpg) no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}