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

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

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

...

1、背景图法

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

background: url("https://hbimg.huabanimg.com/42d38784a9e5ad1cbce090966a7a87c274f5d27ba616-VMBaO0_fw658") no-repeat center center;

background-size: auto 100%;

}

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

若要图片填满容器,可以将 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;

}

ul li{

width: 200px;

height: 300px;

display: flex;

justify-content: center;

align-items: center;

border: 1px solid #23caff;

margin: 20px;

overflow: hidden;

}

img{

width: 100%;

}

4、js 方法

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

var div = document.getimgmentById("div");

img.onload = function () {

if (img.naturalHeight

img.style.width = "auto";

img.style.height = "100%";

}

}

5、jQuery方法

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

length = $tabLi.length,

liWidth = $tabLi.width(),

propArr = [];

$tabLi.each(function (i) {

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

var width = $img.width();

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

function imgLoad() {

var width = $(this).width();

var height = $(this).height();

propArr[i] = width/height;

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

for (var j = 0; j

}

});

6、一个原始的方法

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

width: 200px;

height: 200px;

text-align: center;

display: table-cell;

vertical-align: middle;

border: 1px solid red;

}

ul li img {

max-height: 100%;

max-width: 100%;

}

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

  1. html img和背景图处理图片不拉伸_css如何设置背景图片拉伸不重复?

    css可以使用background-size属性设置背景图片拉伸,此属性规定背景图像的尺寸.使用background-repeat属性设置背景图片不重复,此属性设置是否及如何重复背景图像. css设置 ...

  2. html img和背景图处理图片不拉伸_解决background图片拉伸问题

    ImageView中XML属性src和background的区别: background会根据ImageView组件给定的长宽进行拉伸,而src就存放的是原图的大小,不会进行拉伸.src是图片内容(前 ...

  3. uni-app插入本地背景图片不能超过40kb解决方法

    uni-app插入本地背景图片不能超过40kb解决方法 参考文章: (1)uni-app插入本地背景图片不能超过40kb解决方法 (2)https://www.cnblogs.com/gygg/p/1 ...

  4. 移动端页面键盘弹出后导致body高度变低背景图片被挤上去解决方法

    移动端页面键盘弹出后导致body高度变低背景图片被挤上去解决方法 本身在设置背景图片的时候是将html,body的高度设为100%,然后 .main{height: 100%;background: ...

  5. Matlab图窗曲线太多,标签颜色分辨度不高的解决方法

    Matlab图窗曲线太多,标签颜色分辨度不高的解决方法 ​ 例如上图中,曲线多,标签颜色分辨度不高,单纯靠眼里难以分辨对应特征的曲线.这种情况下可以使用legend自带的属性,做交互性处理,点击标签可 ...

  6. 微信小程序—swiper轮播图图片不显示的解决方法

    swiper轮播图图片不显示的解决方法 遇到图片无法显示的问题,是样式问题 在wxss里面新型修改 设置宽度 .container{width: 750rpx; } .container swiper ...

  7. 测绘——CAD2008+CASS9.1批零插入图块不成功及打开低版本dwg报内部错误的解决方法

    CAD2008+CASS9.1批零插入图块不成功及打开低版本dwg报内部错误的解决方法 博主最近在做地籍调查项目,很多时候需要对地形图数据进行整合拼接以及投影转换,需要对分幅数据进行整合,此时**&q ...

  8. css禁止背景图拉伸_html-css控制背景图全屏拉伸不重复显示

    在HTML中,当我们设置背景图,只能采用是否重叠.居中.重叠方向这几个选项 CSS3中设置 body { background:#3d71b8 url(../back_main.png); backg ...

  9. 简述改变计算机桌面背景的方法,win7开关机背景图怎么更换_win7电脑换开关机壁纸图片的方法...

    最近有朋友问小编win7开关机背景图怎么更换的问题,对于这个问题,相信很多朋友都不是太清楚,有时我们会觉得电脑默认的开关机壁纸不好看,那么我们应该如何更换win7开关机背景图呢?别着急,今天小编就针对 ...

最新文章

  1. MySQL面试题 | 附答案解析(一)
  2. 每个Java开发人员应拥有的持久断点
  3. RecyclerView跳转到指定位置,RecyclerView上下滑动监听,RecyclerView滑动速度
  4. python安装pyserial模块_Python使用模块Pyserial模块报
  5. hhkb mac设置_我最爱的HHKB
  6. BoxFilter包滤波器
  7. 神奇的Gamma函数(scipy)
  8. android 加载过程,Android View (2) View的加载过程
  9. Asp.net页面生命周期详解任我行(3)-服务器处理请求详细过程
  10. 系统封装 如何修改别人的PE为己所用
  11. 一文彻底理解卡诺图化简算法
  12. linux 浮点测试,浮点运算性能测试
  13. 深度学习-吴恩达 作业 Tensorflow环境部署
  14. 关于oneway void
  15. ( 算法树之几何 )【 皮克定理 】
  16. mysql egt_ThinkPHP常用的运算符介绍eq|neq|gt|egt|lt|elt|heq|nheq
  17. 小姜的功能安全学习日记
  18. 【 IntelliJ IDEA 】设置主题和字体
  19. 企业产品品牌如何打造?招商加盟数字化怎么做?
  20. echarts使用e_macarons方法

热门文章

  1. python发送邮件群发_Python发邮件脚本,Python调用163邮箱SMTP服务实现邮件群发
  2. 面试准备(常见问题)
  3. 人工智能机器人的可操作性应用法则
  4. HTML_实体、meta标签
  5. 奥塔在线:如何查看连接数?
  6. 大小是否对自然语言文本生成很重要
  7. 计算机课作业要求做一张简报,小学五年级信息技术教学计划(干货4篇)
  8. 常用传感器讲解十五--触摸传感器(KY-036)
  9. android中 textview.setVisibility(View.VISIBLE)失效问题
  10. android+连接相机,关于Android连接单反相机