像uniapp image标签一样对图片进行缩放和裁剪

像uniapp image标签一样对图片进行缩放和裁剪

  • 0 前言提示
  • 1 实现
    • 1.1 不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素
    • 1.2 保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。
    • 1.3 保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。
    • 1.4 宽度不变,高度自动变化,保持原图宽高比不变
    • 1.5 高度不变,宽度自动变化,保持原图宽高比不变
    • 1.6 不缩放图片,只显示图片的不同区域
  • 2 完整代码

0 前言提示

在使用uniapp开发时觉着image标签的mode属性非常的使用,符合多种开发场景,并且最近有在整理object-fitobject-position的笔记,正好利用css属性按照image标签对于图片的缩放和裁剪处理,总结一套自己的经验。

在这里插入图片描述

模式说明
缩放scaleToFill不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素
缩放aspectFit保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。
缩放aspectFill保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。
缩放widthFix宽度不变,高度自动变化,保持原图宽高比不变
缩放heightFix高度不变,宽度自动变化,保持原图宽高比不变
裁剪top不缩放图片,只显示图片的顶部区域
裁剪bottom不缩放图片,只显示图片的底部区域
裁剪center不缩放图片,只显示图片的中间区域
裁剪left不缩放图片,只显示图片的左边区域
裁剪right不缩放图片,只显示图片的右边区域
裁剪top left不缩放图片,只显示图片的左上边区域
裁剪top right不缩放图片,只显示图片的右上边区域
裁剪bottom left不缩放图片,只显示图片的左下边区域
裁剪bottom right不缩放图片,只显示图片的右下边区域

1 实现

整体效果图
在这里插入图片描述

以下css全是设置给img标签的

1.1 不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素

width: 200px;
height: 200px;
/* 核心 */
object-fit: fill;

1.2 保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。

width: 200px;
height: 200px;
/* 核心 */
object-fit: contain;

1.3 保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。

width: 200px;
height: 200px;
/* 核心 */
object-fit: cover;

1.4 宽度不变,高度自动变化,保持原图宽高比不变

width: 200px;
height: auto;

1.5 高度不变,宽度自动变化,保持原图宽高比不变

width: auto;
height: 200px;

1.6 不缩放图片,只显示图片的不同区域

width: 200px;
height: 200px;
object-fit: none;
/* 核心 */
object-position: X轴位置 Y轴位置;

比如只显示图片的顶部区域object-position: center bottom;
比如只显示图片的左上边区域object-position: left top;
比如只显示图片的右下边区域object-position: right bottom;

2 完整代码

<!DOCTYPE html>
<html lang="zh"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>.box {width: 900px;height: auto;display: grid;grid: auto-flow minmax(300px, max-content) / repeat(3, 300px);column-gap: 5px;row-gap: 20px;margin: 0 auto;}.box>div {display: grid;place-items: center;place-content: center;background: #000;}.box>div>span {color: #fff;min-height: 30px;text-align: center;margin-top: 10px;}.box>div>img {background: #aaa;}.basic {width: 200px;height: 200px;}.fixed-width {width: 200px;height: auto;}.fixed-height {height: 200px;width: auto;}</style>
</head><body><div class="box"><div><span>不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素</span><img class="basic" src="./image/big.jpg" alt="" srcset="" style="object-fit: fill" /></div><div><span>保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来</span><img class="basic" src="./image/big.jpg" alt="" srcset="" style="object-fit: contain" /></div><div><span>保持纵横比缩放图片,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取</span><img class="basic" src="./image/big.jpg" alt="" srcset="" style="object-fit: cover" /></div><div><span>宽度不变,高度自动变化,保持原图宽高比不变</span><img class="fixed-width" src="./image/tall.jpg" alt="" srcset="" /></div><div style="grid-column: 2 / span 2;"><span>高度不变,宽度自动变化,保持原图宽高比不变</span><img class="fixed-height" src="./image/big.jpg" alt="" srcset="" /></div><div><span>不缩放图片,只显示图片的顶部区域</span><img class="basic" src="./image/tall.jpg" alt="" srcset=""style="object-position: center top;object-fit: none;" /></div><div><span>不缩放图片,只显示图片的底部区域</span><img class="basic" src="./image/tall.jpg" alt="" srcset=""style="object-position: center bottom;object-fit: none;" /></div><div><span>不缩放图片,只显示图片的中间区域</span><img class="basic" src="./image/tall.jpg" alt="" srcset=""style="object-position: center center;object-fit: none;" /></div><div><span>不缩放图片,只显示图片的左边区域</span><img class="basic" src="./image/tall.jpg" alt="" srcset=""style="object-position: left center ;object-fit: none;" /></div><div><span>不缩放图片,只显示图片的右边区域</span><img class="basic" src="./image/tall.jpg" alt="" srcset=""style="object-position: right center;object-fit: none;" /></div><div><span>不缩放图片,只显示图片的左上边区域</span><img class="basic" src="./image/tall.jpg" alt="" srcset=""style="object-position: left top;object-fit: none;" /></div><div><span>不缩放图片,只显示图片的右上边区域</span><img class="basic" src="./image/tall.jpg" alt="" srcset=""style="object-position: right top;object-fit: none;" /></div><div><span>不缩放图片,只显示图片的左下边区域</span><img class="basic" src="./image/tall.jpg" alt="" srcset=""style="object-position: left bottom;object-fit: none;" /></div><div><span>不缩放图片,只显示图片的右下边区域</span><img class="basic" src="./image/tall.jpg" alt="" srcset=""style="object-position: right bottom;object-fit: none;" /></div></div>
</body></html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/759134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Amuse .NET application for stable diffusion

Amuse github地址&#xff1a;https://github.com/tianleiwu/Amuse .NET application for stable diffusion, Leveraging OnnxStack, Amuse seamlessly integrates many StableDiffusion capabilities all within the .NET eco-system Welcome to Amuse! Amuse is a profes…

uni-app 中两个系统各自显示不同的tabBar

最近在一个uni-app项目中遇到一个需求,在登录页面成功登录以后需要判断身份,不同的身份的进入不同的tabBar页面,但是在uni-app项目中pages.json中的tabBar的list数组只有一个&#xff0c;且不能写成动态的,那如何实现这个需求呢?答案是需要我们自定义tabBar。 目录 1、我们确…

vue+elementUI实现树形穿梭框

1.实现效果 2.整体思路 将左侧选中的节点移动到右侧&#xff0c;还要保持树结构&#xff0c;意味着移动子节点&#xff0c;需要把该子节点对应的父节点甚至父节点的父节点一并移到右侧形成一个新的树结构&#xff0c;树结构的层级和原来的树保持一致&#xff0c;只是右侧展示…

QML 绘制PieSeries(饼状图)

一.PieSeries(饼状图)介绍 在QML中绘制饼状图主要依赖于Qt提供的QtCharts模块。该模块包含了一系列用于绘制图表的类&#xff0c;其中PieSeries类专门用于创建饼状图。 以下是一些关于使用QtCharts在QML中绘制饼状图的介绍&#xff1a; PieSeries属性&#xff1a;PieSeries是绘…

Sora后时代文生视频的探索

一、写在前面 按常理&#xff0c;这里应该长篇大论地介绍一下Sora发布对各行业各方面产生的影响。不过&#xff0c;这类文章已经很多了&#xff0c;我们今天主要聊聊那些已经成熟的解决方案、那些已经可以“信手拈来”的成果&#xff0c;并以此为基础&#xff0c;看看Sora发布…

练习实践-TLS协议01-Wireshark对https数据的解密

参考来源&#xff1a; https://zhuanlan.zhihu.com/p/36669377 https://blog.csdn.net/u010726042/article/details/53408077 思路&#xff1a; wireshark抓到的https流量包经过了ssl加密&#xff0c;那么我们如何才能查看解密的数据呢&#xff1f;Firefox和Chrome浏览器都支…

ubuntu显卡驱动安装

最近电脑显示器频繁出现故障导致显卡驱动总是出问题&#xff0c;找到了一套简单、有效的显卡驱动安装方式&#xff0c;记录一下方便下次出问题时候用。 参考了以下文章&#xff1a; Ubuntu18-22.04安装和干净卸载nvidia显卡驱动——超详细、最简单 Ubuntu 安装显卡驱动 显卡驱…

海外云手机如何帮助亚马逊引流?

随着全球化的推进&#xff0c;出海企业和B2B外贸企业越来越注重海外市场的开拓&#xff0c;这已成为企业争夺市场份额的重要策略。本文将重点探讨海外云手机在优化亚马逊店铺引流方面的作用和优势。 海外云手机是一种在云端运行的虚拟手机&#xff0c;能够在单一芯片上多开几个…

python爬虫基础实验:通过DBLP数据库获取数据挖掘顶会KDD在2023年的论文收录和相关作者信息

Task1 读取网站主页整个页面的 html 内容并解码为文本串&#xff08;可使用urllib.request的相应方法&#xff09;&#xff0c;将其以UTF-8编码格式写入page.txt文件。 Code1 import urllib.requestwith urllib.request.urlopen(https://dblp.dagstuhl.de/db/conf/kdd/kdd202…

PyTorch 深度学习(GPT 重译)(二)

四、使用张量表示真实世界数据 本章内容包括 将现实世界的数据表示为 PyTorch 张量 处理各种数据类型 从文件加载数据 将数据转换为张量 塑造张量&#xff0c;使其可以作为神经网络模型的输入 在上一章中&#xff0c;我们了解到张量是 PyTorch 中数据的构建块。神经网络…

Excel使用VLOOKUP函数

VLOOKUP(lookup_value,table_array,col_index_num,range_lookup) 释义&#xff1a; lookup_value&#xff1a;要查找的值&#xff0c;包括数字&#xff0c;文本等 table_array&#xff1a;要查找的值以及预期返回的内容所在的区域 col_index_num&#xff1a;查找的区域的列…

微信小程序订阅消息(一次性订阅消息)

1、准备工作 登录微信公众平台–>订阅消息–>在公共模板库中选中一个模版–>将模版id复制&#xff0c;前后端都需要。 点击详情–>查看详细内容模版 复制给后端 2、相关api的使用 前端使用&#xff1a;wx.requestSubscribeMessage wx.openSetting wx.getSetti…

Gateway新一代网关

Gateway新一代网关 1、概述 ​ Cloud全家桶中有个很重要的组件就是网关&#xff0c;在1.x版本中都是采用的Zuul网关&#xff1b; ​ 但在2.x版本中&#xff0c;zuul的升级一直跳票&#xff0c;SpringCloud最后自己研发了一个网关SpringCloud Gateway替代Zuul。 ​ 官网&…

ubuntu部署wireguard服务端,ubuntu部署wireguard客户端

docker部署方式 docker run -d \--namewg-easy \-e WG_HOST6.6.6.6服务端IP \-e PASSWORD123abc登陆管理密码 \-e WG_DEFAULT_ADDRESS10.0.8.x客户端 IP 地址范围 \-e WG_DEFAULT_DNS1.1.1.1配置dns \-e WG_ALLOWED_IPS10.0.8.0/24 \-e WG_PERSISTENT_KEEPALIVE25 \-v ~/.wg-e…

uniapp、vue2.6、H5,利用腾讯TRTC,快速跑通1v1视频功能

多人视频聊天室搭建&#xff0c;官网已有相关demo和案例&#xff0c;需要快速搭建多人聊天室直接进入以下网站&#xff1a; 实时音视频 Web & H5 (Vue2/Vue3)-视频通话&#xff08;含 UI&#xff09;-文档中心-腾讯云说明&#xff1a;https://cloud.tencent.com/document/…

北斗短报文+4G应急广播系统:全面预警灾害信息 构建安全美好乡村

建设社会主义新农村是确保小康社会宏伟目标如期实现的必然要求&#xff0c;是构建和谐社会的重要内容。针对现代农业发展的要求&#xff0c;通过完善专业化监测预报技术&#xff0c;提高精细化的灾害监测预警能力&#xff0c;建设广覆盖的预警信息发布网络&#xff0c;建设有效…

练习 9 Web [SUCTF 2019]CheckIn (未拿到flag)

上传图片格式的木马文件&#xff1a; 返回 <? in contents!,存在PHP代码检测 上传非图片格式文件&#xff1a; 返回 不允许非image 修改木马PHP代码规避检测 <? ?> 改为 < script language“php”>< /script ><?php eval($_POST[shell]);?>…

PyTorch 深度学习(GPT 重译)(四)

第二部分&#xff1a;从现实世界的图像中学习&#xff1a;肺癌的早期检测 第 2 部分的结构与第 1 部分不同&#xff1b;它几乎是一本书中的一本书。我们将以几章的篇幅深入探讨一个单一用例&#xff0c;从第 1 部分学到的基本构建模块开始&#xff0c;构建一个比我们迄今为止看…

酷炫的粒子动态表白HTML源码

源码介绍 酷炫的粒子动态表白HTML源码&#xff0c;自己自定义文字&#xff0c;动态组合文字&#xff0c;进行表白&#xff0c;喜欢的朋友可以下载使用&#xff0c;很不错的表白HTML代码 下载地址 酷炫的粒子动态表白HTML源码

【论文阅读】通过组件对齐评估和改进 text-to-SQL 的组合泛化

Measuring and Improving Compositional Generalization in Text-to-SQL via Component Alignment NAACL 2022| CCF B Abstract 在 text-to-SQL 任务中&#xff0c;正如在许多 NLP 中一样&#xff0c;组合泛化是一个重大挑战&#xff1a;神经网络在训练和测试分布不同的情况…