今天客户要求,背景图片要全部显示出来,由于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动态赋值”
斌哥!不错哟!