今天客户要求,背景图片要全部显示出来,由于div的高度是自适应的,背景图片在html里有没有高度,所以在网上找到了一种js可以根据背景图片的宽高比计算出div的高度,动态赋值,完美解决问题。
css样式部分:
#div {
width: 100%;
background: url("bg.jpg") no-repeat;
background-size: 100% auto;
}
js部分:
function resizeDiv() {
// 获取 div 元素
var div = document.getElementById("div");
// 兼容 style
var style = div.currentStyle || getComputedStyle(div, false);
// 从 url("/path/to/image.jpg") 中获取图像地址
var img_src = style.backgroundImage.replace(/^url\(["']?/, '').replace(/["']?\)$/, '');
// 创建新图像
var img = new Image();
// 图像加载
img.onload = function() {
// 获取宽高比
var ratio = img.width / img.height;
// 根据比例设置 div 高度
div.style.height = parseInt(div.offsetWidth / ratio) + "px";
img = null;
};
img.src = img_src;
};
// 页面加载,设置 div 高度
window.onload = function() {
resizeDiv();
};
// 窗口变化,设置 div 高度
window.onresize = function() {
resizeDiv();
};
本文根据网络整理备份!
1 条评论发表在 “div高度自适应背景图片高度,js动态赋值”
斌哥!不错哟!