后退 刷新 前进 收藏 顶部 |   知道 黑匣子 富媒体 技术服务

js背景图片自适应

程序猿 JS js 背景 图片 浏览器 自适应... (shuke.2016-06-16 03:47)
<style type="text/css">
#div {
  width: 100%;
  background: url("bg.jpg") no-repeat;
  background-size: 100% auto;
  border: 1px solid #f00;
}
</style>
<script type="text/javascript">
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();
};
</script>

<div id="div"></div>


2 楼 shuke[2016-06-16 15:50]
实战完整版本:
<style type="text/css">.banner{ width:100%;background:blue url(http://localhost:63342/home_html/img/culture_banner.jpg) no-repeat;display:block;border:gray solid 0px; }</style>
<div id="banner" class="banner"></div>
IE9+、Firefox 4+、Opera、Chrome 以及 Safari 5+ 支持 background-size 属性。

<script type="text/javascript">
/*power by shuke 2016/6/16 */
function bg_auto(div){
var divelement = document.getElementById(div); //获取ID
//var divelement =document.getElementsByClassName(div)[0]; 也可以用CLASS来循环
//获取图片地址并赋值给IMG;
var style = divelement.currentStyle || getComputedStyle(divelement, false);
var img_src = style.backgroundImage.replace(/^url\(["']?/, '').replace(/["']?\)$/, '');
var image=new Image();
image.src=img_src; //可以换成以传进来的ID来命名的图片 如:image.src='http://xxx.com/img/banner_'+div+'.jpg';
//新图片不能超过原图高度,否则会失真;
if(divelement.offsetWidth<image.width){
//进行1:1的填充
divelement.style.backgroundSize='100% 100%';
//DIV的高度等于图片缩放后的高度,也就是等比适应;
var myheight=eval(image.height*divelement.offsetWidth/image.width);
}else{
//图片超过原图高度不做适应,维持原状;
divelement.style.backgroundSize='auto';
var myheight=eval(image.height);
}
//重新给盒子高度;
divelement.style.height=myheight+'px';
};
//pic start
bg_auto('banner');
window.onresize = function(){
bg_auto('banner');
};
</script>
/*精简版本
function bg_auto(div){
var divelement = document.getElementById(div);       
var style = divelement.currentStyle || getComputedStyle(divelement, false);
var img_src = style.backgroundImage.replace(/^url\(["']?/, '').replace(/["']?\)$/, '');
var image=new Image();
image.src=img_src;
if(divelement.offsetWidth<image.width){divelement.style.backgroundSize='100% 100%';var myheight=eval(image.height*divelement.offsetWidth/image.width);
}else{        divelement.style.backgroundSize='auto';var myheight=eval(image.height);}
divelement.style.height=myheight+'px';
};
bg_auto('banner');
window.onresize = function(){       
        bg_auto('banner');
};
*/


进度:100% 返回程序猿

解决织梦图集中上传图片时跳出302错误

图片新热点

导航


目录


    站内搜索
    首页 | W3C | ME