600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > html img和背景图处理图片不拉伸_img固定宽度和高度 不规则图片变形问题的解决方法...

html img和背景图处理图片不拉伸_img固定宽度和高度 不规则图片变形问题的解决方法...

时间:2021-10-28 12:33:10

相关推荐

html img和背景图处理图片不拉伸_img固定宽度和高度 不规则图片变形问题的解决方法...

日常项目中,后端传图不规则,比例大小不一。前端又要去做适应,是一个让人非常头大的问题。

总结了一个不规则图片不变形的解决方案:

注:先写一个长 300px 宽 200px 带边框的 div ,图片接近方形,实现图片正常显示不变形。

...

1、背景图法

通过背景图的 background-position 属性,可以使图片居中显示。国外一些网站有看到类似的案例,简单好操作。.box1{

background:url("/42d38784a9e5ad1cbce090966a7a87c274f5d27ba616-VMBaO0_fw658")no-repeatcentercenter;

background-size:auto100%;

}

这样可以显示完整的图片,不变形:

若要图片填满容器,可以将 background-size 属性改为 100% auto :background-size:100%auto;

如下图:

同样background-size 的 contain(完整显示)和 cover(填充)属性也能起到相同的效果。

2、object-fit

object-fit CSS 属性指定可替换元素的内容应该如何适应到其使用的高度和宽度确定的框,不支持IE。

可用属性:

fill 不保持纵横比缩放图片,使图片完全适应

contain 保持纵横比缩放图片,使图片的长边能完全显示出来

cover 保持纵横比缩放图片,只保证图片的短边能完全显示出来

none 保持图片宽高不变

scale-down 当图片实际宽高小于所设置的图片宽高时,显示效果与none一致;否则,显示效果与contain一致

inherit 继承

initial 默认值

unset 继承父元素,若父元素没有属性则显示默认值

CSS:ul>li>img{

width:150px;

height:100px;

}

ul>li:nth-child(1)>img{

object-fit:fill;

}

ul>li:nth-child(2)>img{

object-fit:contain;

}

ul>li:nth-child(3)>img{

object-fit:cover;

}

ul>li:nth-child(4)>img{

object-fit:none;

}

ul>li:nth-child(5)>img{

object-fit:scale-down;

}

3、flex

该方法也可以实现以上两种方法的效果。

以容器宽 200px 高 300px ,图片为方形为例:

设置 width: 100% 为图片完整显示,多出部分留白。

设置 height: 100%; 为图片全部填充,这时候需要给图片的容器添加 overflow: hidden; 属性,防止图片超出。

图片等比例缩放,多余部分,还有就是要考虑IE兼容问题,可以在手机端项目中使用。ul{

display:flex;

}

ulli{

width:200px;

height:300px;

display:flex;

justify-content:center;

align-items:center;

border:1pxsolid#23caff;

margin:20px;

overflow:hidden;

}

img{

width:100%;

}

4、js 方法

js 方法应该比较通用,可以兼容多版本浏览器。varimg=document.getimgmentById("img");

vardiv=document.getimgmentById("div");

img.onload=function(){

if(img.naturalHeight

img.style.width="auto";

img.style.height="100%";

}

}

5、jQuery方法

也可以兼容多版本浏览器,需要 jQuery 加持。var$tabLi=$("#tab").find("ulli"),

length=$tabLi.length,

liWidth=$tabLi.width(),

propArr=[];

$tabLi.each(function(i){

var$img=$(this).find("img");

varwidth=$img.width();

width?imgLoad.call($img[0]):($img[0].onload=imgLoad);

functionimgLoad(){

varwidth=$(this).width();

varheight=$(this).height();

propArr[i]=width/height;

this[width>height?"width":"height"]=liWidth;

for(varj=0;j

}

});

6、一个原始的方法

图片等比例缩放,多余部分空白填补:ulli{

width:200px;

height:200px;

text-align:center;

display:table-cell;

vertical-align:middle;

border:1pxsolidred;

}

ulliimg{

max-height:100%;

max-width:100%;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。