Javascript防止图片拉伸的自适应处理方法

作者:酒醉的探戈 时间:2024-04-29 13:43:40 

前言

相信大家在日常的web开发中,作为前端经常会遇到处理图片拉伸问题的情况。

例如banner、图文列表、头像等所有和用户或客户自主操作图片上传的地方,而一旦牵扯图片,就会涉及到图片拉伸的问题,当然,在图片上传时做手动裁切,让用户或客户清晰的感知到图片的有效内容才是最优的解决方案,但是在其他各种外在因素下,没有做裁切的话,就需要在前端显示上做处理了,满足在上传任意大小图片的情况下,最优显示效果的需求。

这时我们需要考虑到极端效果,如下图:

Javascript防止图片拉伸的自适应处理方法

而我们想要得到的效果是这样的------

Javascript防止图片拉伸的自适应处理方法

把图片放进框框,要几步?三步...我们开始

第一步:先画个框框 (这里顺便安利一种自适应框框的方法)


// 假定需要一个在750px屏幕下宽400px,高280px的盒子
// 宽度 = 400 / 750 = 0.5333
// 高度 = 280 / 400 * 0.5333 = 0.3733
<style>
.img-box{
 position: relative;
 width: 53.33%;
 height: 0;
 padding-bottom: 37.33%;
 overflow: hidden;
 background-color: #eee;
}
</style>

<body>
<div id="list">
 <div class="img-box">
  <img src="..."/>
 </div>
</div>
</body>

第二步:设置图片需要使用到的css


<style>
.width{
 position: absolute !important;
 width: 100% !important;
 min-height: 100% !important;
 top: 50% !important;
 transform: translateY(-50%) !important;
 -ms-transform: translateY(-50%) !important;
 -moz-transform: translateY(-50%) !important;
 -webkit-transform: translateY(-50%) !important;
 -o-transform: translateY(-50%) !important;
 display: block;
}
.height{
 position: absolute !important;
 height: 100% !important;
 min-width: 100% !important;
 left: 50% !important;
 transform: translateX(-50%) !important;
 -ms-transform: translateX(-50%) !important;
 -moz-transform: translateX(-50%) !important;
 -webkit-transform: translateX(-50%) !important;
 -o-transform: translateX(-50%) !important;
 display: block;
}
</style>

第三步:js获取图片高度比较并给img添加类名


//需要注意的是,不能在css中直接给img设置宽度和高度
//否则在img.onload后获取的宽高是css设置的宽高
//同时建议使用dom对象来获取img标签
<script>
var list = document.getElementById('list');
getImgWH ( list );
//执行宽高比对并设置img类名
function getImgWH ( Obj ) {
 var img = Obj.getElementsByTagName('img');
 for( var i=0 ; i<img.length ; i++ ){
  img[i].onload = function(){
   var width = this.width;
   var height = this.height;
   if ( width > height ) {
    this.classList.add('height');
   } else if ( width < height ) {
    this.classList.add('width');
   } else {
    this.style.width = '100%';
    this.style.height = '100%';
   }
  }
 }
}
</script>

图片防止拉伸处理比较简单,但是在实际项目中需要得到足够的重视,一个web页面成也图片,败也图片,拉伸了图片就等着设计师的磨叽吧,哈哈哈哈...

来源:https://segmentfault.com/a/1190000012573990

标签:js,图片拉伸,图片自适应
0
投稿

猜你喜欢

  • python爬取招聘要求等信息实例

    2021-01-27 21:22:36
  • mysql中如何查看表空间

    2024-01-27 00:25:25
  • 使用vuex缓存数据并优化自己的vuex-cache

    2024-04-30 10:46:33
  • 浅析Python 实现一个自动化翻译和替换的工具

    2021-12-03 20:48:25
  • django inspectdb 操作已有数据库数据的使用步骤

    2024-01-24 00:16:50
  • 基于Python编写一个有趣的进程勾选器(Process Selector)

    2023-06-19 06:28:19
  • 深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非

    2023-11-20 22:41:16
  • python实现Excel文件转换为TXT文件

    2021-01-15 05:24:54
  • 分享一些非常实用的Python小技巧

    2022-08-09 09:27:17
  • Django 数据库同步操作技巧详解

    2024-01-28 02:26:14
  • Oracle 数组的学习 小知识也要积累,养成好的学习态度

    2009-08-04 12:42:00
  • sqlserver 系统存储过程 中文说明

    2024-01-18 12:22:14
  • 如何获知服务器上Application对象及其对应的值?

    2009-11-24 18:09:00
  • Python实现计算图像RGB均值方式

    2024-01-01 20:50:31
  • Oracle Instr函数实例讲解

    2024-01-14 18:05:32
  • 通过定位控制信息列表下往上的增加

    2008-06-30 14:27:00
  • python urllib urlopen()对象方法/代理的补充说明

    2023-06-28 17:44:07
  • js调用flash代码

    2010-01-23 12:35:00
  • goroutine 泄漏和避免泄漏实战示例

    2024-02-18 03:31:15
  • 微信小程序嵌入腾讯视频源过程详解

    2024-04-18 10:10:25
  • asp之家 网络编程 m.aspxhome.com