开发过程中xx产品强烈需要轮播图的布局不固定, 单张 等比例缩放展示,多张图取最高高度自适应展示;通过修改图片img 父级盒子容器宽高固定图片高度;

单张:1、方图 (宽高比例 ± 15% ) 2 、非方图 等比例展示;

多图:得到图最大高的宽根据此宽 375 / w 缩放比例获取等比例最大高

1 html及css结构: css 需要用的object-fit: cover; 属性 等比例裁剪图片;

  <el-carousel width="375px":height="`${maxHeight}px`"class="s-content"arrow="never"><el-carousel-item v-for="(item, inx) in product_config_list":key="inx"><img fit="cover":src="item.image"v-if="item.image"class="s-img"radius="10" /><!-- 占位空白 --><div v-elseclass="s-img"></div></el-carousel-item></el-carousel>
//  css: 图片wh   100%.s-img {width: 100%;height: 100%;overflow: hidden;object-fit: cover;display: block;background-color: #ffffff;}

2 、图尺寸: 通过图片的路径url 获取每张图片的宽高如下:

// 获取图片高度 宽度/**** @params  url 图片路径* @return  height  返回图片宽高*/
export const getImageWH = (url: any): any => {return new Promise((res: any) => {// 通过构造函数来创建的 img 实例,在赋予 src 值后就会立刻下载图片const Image: HTMLImageElement = new Image();Image.src = url;Image.crossOrigin = "*"; // 图片跨域Image.onload = function () {const returnWH = {height: Image.height,width: Image.width};// 返回图片高 款res(returnWH);};});
};

3、通过已获取图片信息列表处理尺寸,通过过监听或者计算属性获取H:

  import { getImageWH } from "/图宽高路径";// 自定义变量maxHeight = 375; // 直接赋值高 或者 通过方法返回赋值product_config_list = [{image: ", name: "美丽china"}, ] // 存放图列表 eg image: "https://www.baidu.com/link?url=Wr8LV-k3sjXkVuk4F1wrYkIjqyKVg9meQj4gu9OuvTVAbsy5cOxQTrSckhgJzMQ1PDI60ynymKq8sDsapCvEAG7w5u5KSfzj6j7ONtvdi5U1JC1-uI6na_7qX4JYfQ-v_zJ5j2ZAaKIYa5iS34rpd0nM5SKhyUR9YE0r4uV5urQAowKRUz2mH5tMcWixuqUb8WV896QYvwNfiBX9z2jAGLlzdbxmBlJrKLjFzkWFsCgVD-vGRcSaQcbZ62HTR4_UVCRgRm9CqQCSE5kiMQf89dKd5S8LA7us6ucciIYyKPsczrE1lHWp-KzZ96Z9-oBwBIr7WoOr9htw-HtGyBa7VWa9FSaTW6bv4Rr9zm_yv5r7ZYbP0kP8oZTHgdWfHDzwnw9oSP1XvsOyrL-lXEk-wINpz_ZrIoYanCfQDbsbCXw4c_nPxm6zTH4K8ijgU2u7cW6pqkJlYLnTv9LCNiIRtUCg4x-DNh4vbF4gBPvSEJuPnIY8zTByYM7PzsFiZE_L4kYv_4DabDAGnzmPa3RYVX4XdE3qcAA8mLVyoQa2FT0-AMJ5KKfYH5TqISbcluyh1aItXr9GXQ2AVPbROzZMC8lTm_NTqrFa7f3sg8TBAgck5SmfFF7fhZHWq4FWaFgfjidsU7nOysAhYr0Rng_G5jAv3b7sHD7KKbMJc23XD3W&wd=&eqid=f379b56d001641df000000046412bb57"/*** 轮播图片尺寸处理获取图片最大高或者单个图片* @params  originlist 轮播列表 最新* @params  375默认宽* @params  image 图片键名  可自定义的key*/export const  getMaxHegiht = async (originlist: Array<any>) => {let imgHeight = 0; // 图片高let heightArr: any[] = []; // 多图高收集let whArrlist: any[] = []; // 多图宽高收集let whObj: any = {width: 0, height: 0} ; // 单个图片wh /** 图高收集 */for (let value of originlist.values()) {whObj = await getImageWH(value.image);heightArr.push(whObj.height);// 宽whArrlist.push(whObj);}// 一、单张图高处理if (whObj && originlist && originlist.length == 1) {/*** 1、正方形图处理* eg: 宽高笔记误差在  ± 15% 范围图视为正方形图   宽高为 375px尺寸*/const whscale = whObj.width / whObj.height;if (whscale && whscale >= 0.85 && whscale <= 1.15) {this.maxHeight = 375;return 375;}/** 2 不满足方图处理尺寸 */let imgScale = 0; // 缩放比例imgScale = 375 / whObj.width;imgHeight = whObj.height * imgScale;this.maxHeight = imgHeight;return imgHeight;}/** 二、多张图片图高 *//** 1 筛选实际最大高度 */imgHeight = heightArr && Math.max(...heightArr);/*** 2 根据图片宽等比例计算高*/const maxHeightObj = whArrlist && whArrlist.find((ite: any) => ite.height == imgHeight);if (maxHeightObj && maxHeightObj.width > 0) {imgHeight = (375 / maxHeightObj.width) * imgHeight;}this.maxHeight = imgHeight;console.log("HHHHH----->", imgHeight);// 清空最高收集heightArr = [];return imgHeight;}
// 通过过监听watch或者计算属性computed处理得到H,或者当获得获取图片列表数据时处理自适应高度
eg: 监听
1 watch: ----》product_config_list -----》H = this.getMaxHegiht(product_config_list)
2 computed ---》 product_config_list -----》H = this.getMaxHegiht(product_config_list)

此方法根据需求所处理,如果更好方法和处理不同状态,敬请点拨 Thanks♪(・ω・)ノ!!!!!!!!!!!!!

el轮播图片image单张图比例缩放及多张图宽度固定高度等比例自适应展示;相关推荐

  1. 关于element-ui中轮播图手动切换轮播图片

    文章目录 前言 一.关于element-ui中轮播图手动切换轮播图片 二.解决方案 1.查看element-ui中Carousel 走马灯组件的方法 2.解决方法 结尾 前言 在开发过程中发现项目中轮 ...

  2. vue-awesome-swiper实现轮播图片

    前言 最近在学习Node.js (Express.js) + Vue.js (Element UI) 全栈开发王者荣耀手机端官网和管理后台时,学习到第三章 3.7-首页顶部轮播图片(vue-swipp ...

  3. 点击轮播图片,链接跳转错误

    <#if (InfoList?size > 0)><#list InfoList as newsInfo><li class="slider-li1&qu ...

  4. 【用HTML+CSS实现简单的轮播图片效果】

    本文主要从两种方式上实现轮播图片效果 方法一 ***================================================================== 本方法为渐变轮 ...

  5. web大二实训作业:校园运动会网站设计——运动会图片轮播图片遮罩特效(4页)体育 HTML+CSS+JavaScript HTML5期末大作业...

    常见网页设计作业题材有 ​​个人. 美食. 公司. 学校. 旅游. 电商. 宠物. 电器. 茶叶. 家居. 酒店. 舞蹈. 动漫. 明星. 服装. 体育. 化妆品. 物流. 环保. 书籍. 婚纱. 军 ...

  6. 游戏轮播图片-制作煽动翅膀的效果(含素材视频教程)

    教程目录: 1. 小游戏展示 2. 下载游戏引擎 3. 创作一个移动的背景 4. 让阿菌煽动翅膀 5. 让阿菌模拟重力下坠 6. 让阿菌可以摸鱼 7. 编写游戏开始与结束 8. 编写 boss 剧情 ...

  7. 有赞Vant组件库的引入及轮播图片预览的实现

    有赞Vant组件库的引入及轮播图片预览的实现 1.图片预览组件ImagePreview 这个vant组件与其它组件的引入方式不同,不需要在main.js中引入,直接在页面中引入即可: ImagePre ...

  8. JQuery轮播图片效果

    [目标] 制作一个有5张图片的轮播图 [分析] 想要制作轮播图,需要如下3个步骤: 1.页面打开之后,第一个图片显示,其余的图片,隐藏 2.图片间隔5秒轮播一次 3.传到第5个图后回到第1张 [制作] ...

  9. 淘宝店铺装修轮播图片上添加多个自定义链接

    受朋友之托,抽了点时间研究了一下店铺装修模板,每个模板都不一样如果想实现一张轮播图片上有多个链接,在轮播的模块内必须支持自定义代码,也就是自己添加代码,我这里就不上图片了,只分析几块重要的代码. 首先 ...

最新文章

  1. IAB303 Data Analytics Assessment Task
  2. go 原子操作 atomic
  3. 如何在 ASP.Net Core 中使用 SignalR
  4. Bottlerocket:一套专用型容器操作系统
  5. 社区团购真的是实体店终结者吗?
  6. html和ajax通信,使用Ajax与服务器(JSON)通信实例
  7. 练习-CSS3 多栏(Multi-column)
  8. python编程是啥-python编程语言是什么?它能做什么?
  9. Elasticsearch的javaAPI之percolator
  10. KMS Server相关资料
  11. 【UIKit】键盘设计2
  12. 线性判别分析(Linear Discriminant Analysis ,简称LDA)
  13. Web版RSS阅读器(一)——dom4j读取xml(opml)文件
  14. java置换_java实现置换密码加密解密
  15. UnsatisfiedDependencyException报错的原因
  16. SpringBoot开发之JavaWeb回顾
  17. 7-3 学习打卡(12.26)
  18. java接口 运动员,JAVA面向对象进阶实例【教练和运动员日常安排】
  19. 英特尔芯片漏洞危机:波及谷歌微软 影响你的电脑和手机 | 热点
  20. 车牌识别系统分步详解

热门文章

  1. Nuxt SSR 服务端渲染 详解
  2. 基于c语言c8051f系列微控制器原理与应用,基于C语言C8051F系列微控制器原理与应用...
  3. Vivado使用技巧(12):设置DCI与内部参考电压
  4. 文章硬不硬核,你说了算,土哥怒肝大数据学习路线一条龙!
  5. Apple 好莱坞艳照门的安全分析
  6. 电商运营之业务数据报告
  7. vs2013+opencv3.4.3配置安装教程
  8. 怎样用Netfilter/IPtables控制P2P流量
  9. 微信小程序搭建怎么做?流程是怎么样?【小程序搭建】
  10. expdp报错ORA-39002: invalid operation,ORA-39070: Unable to open the log file