在做背景图片自适应窗口之前,我们需要先获取图片的尺寸和浏览器窗口的尺寸。通过 Javascript 可以这样获取:
var cw, ch, iw, ih, img; cw = $(window).width(); ch = $(window).height(); img = new Image(); // url 是你的图片地址 img.src = url; img.onload = function() { iw = img.width; ih = img.height; }
接下来再对图片和窗口的比例做比较。如果窗口的比例大于图片的窗口,则以窗口的宽度作为图片的宽度,再计算出图片的高度,减去窗口的高度除以 2,作为图片的绝对定位的值。
从上面的图片解释中,我们可以这样来写代码:
if( cw / ch >= iw / ih ) { var new_h = parseInt(cw / iw * ih, 10); var imgTop = parseInt((ch - new_h) / 2, 10); // 假设图片的 id 为 J-img $("#J-img").css({ "width" : cw + "px", "height" : new_h + "px", "top" : imgTop + "px", "left" : "" }); }
如果窗口的比例小于图片的比例,则以窗口的高度作为图片的高度,再计算出图片的宽度,减去窗口的宽度除以 2 ,作为图片的绝对定位的值。
if( cw / ch < iw / ih ) { var new_w = parseInt(ch / ih * iw, 10); var imgLeft = parseInt((cw - new_w) / 2, 10); // 假设图片的 id 为 J-img $("#J-img").css({ "width" : new_w + "px", "height" : ch + "px", "top" : "", "left" : imgLeft + "px" }); }
除了上面的 Javascript 功能之外,还需要对应的样式控制:
body { position: relative; overflow: hidden; } #J-img { position: absolute; }
恩,大概就是这样。算是最近的一篇水文总结吧。