JavaScript实现未知尺寸的img图片自适应

@源自本人知乎。 https://zhuanlan.zhihu.com/p/37566352

针对未知宽高的图片进行等比例缩放,防止图片拉伸。

使用img标签好处是可以使用onerror来判断图片是否加载成功。

使用方法:

对应img标签添加class 'zoom-logo',其父级添加class 'zoom-log-box'

1、 默认效果:把图像图像扩展至最大尺寸,以使其宽度和高度完全适应内容区域。

2、 图片完全覆盖父级区域效果:添加data-zoom-reverse属性(大于1或其他任何字符串)

ps:相同于background-size里的contain和cover属性

JavaScript实现未知尺寸的img图片自适应_第1张图片长图默认效果 JavaScript实现未知尺寸的img图片自适应_第2张图片长图覆盖父级div效果 JavaScript实现未知尺寸的img图片自适应_第3张图片宽图默认效果 JavaScript实现未知尺寸的img图片自适应_第4张图片宽图覆盖父级div效果


HTML:

src="ss1.bdstatic.com/70cFvX">



CSS:

.zoom-logo-box{

margin: 100px auto;

width: 250px;

height: 250px;

overflow: hidden;

position: relative;

display: flex;

align-items: center;

justify-content: center;

background: #fff;

}

.zoom-logo{

position: absolute;

/*left: 50%;

transform: translateX(-50%);*/

}



JS

function zoomLogo() {

$.each($('.zoom-logo'), function () {

var that = $(this);

var src = that.attr('src');

if (src && src != '') {

var reverseType = that.attr('data-zoom-reverse');

var img = new Image();

img.src = src;

img.onload = function(){

var removeAttr = img.width >= img.height ? (reverseType ? 'width' : 'height') : (reverseType ? 'height' : 'width');

that.removeAttr(removeAttr);

};

}

});

}

zoomLogo();

你可能感兴趣的:(前端web,JS)