图片等比例缩放方案

ops/2024/9/23 15:29:41/

图片等比例缩放方案

Web开发时无可避免的需要将图片进行缩放,缩放时需要保证图片不变形,也就是需要等比例缩放。

设定宽度或高度

引入图片时,仅设置图片的width或者是height就可以使另一边自适应,从而实现等比例缩放。

html"><section><img id="t1" src="http://www.sdust.edu.cn/__local/9/7A/B1/F29B84DEF72DD329997E8172ABA_664BA3EF_32466.jpg"><img id="t2" src="http://www.sdust.edu.cn/__local/B/F3/E4/693AB931C9FFB84646970D53BFE_C506394A_4282CA.jpg">
</section>
<style type="text/css">#t1{width: 500px;}#t2{height: 300px;}
</style>

设定最大宽度或最大高度

引入图片时,仅设置图片的max-width或者是max-height就可以使另一边自适应,从而实现等比例缩放。

html"><section><img id="t3" src="http://www.sdust.edu.cn/__local/F/7A/AA/E1459849AA8AB0C89854A41BD41_BF3BD857_BC0D8.jpg"><img id="t4" src="http://www.sdust.edu.cn/__local/1/95/CB/EDC1450B8FD1B8A25FAAC726AA4_A36D4253_16C91.jpg">
</section>
<style type="text/css">#t3{max-width: 500px;}#t4{max-height: 300px;}
</style>

根据父容器适应

将图片设定为max-width: 100%;max-height: 100%;,就可以自适应父容器宽高进行等比缩放。

html"><section><div id="t5"><img src="http://www.sdust.edu.cn/__local/9/7A/B1/F29B84DEF72DD329997E8172ABA_664BA3EF_32466.jpg"></div>
</section>
<style type="text/css">#t5{height: 300px;width: 600px;border: 1px solid #eee;display: flex;justify-content: center;}#t5 > img{max-width: 100%;max-height: 100%;}
</style>

使用Js设定宽高

使用JavaScript预先取得图片并根据指定的高度或者是宽度计算缩放比,从而计算出另一边的长度,设定好宽高后加入文档。

html"><section><div id="t6"></div>
</section>
<script type="text/javascript">var img = new Image();var height = 300;img.src = "http://www.sdust.edu.cn/__local/B/F3/E4/693AB931C9FFB84646970D53BFE_C506394A_4282CA.jpg";img.onload = function(){var scale = height / this.height;this.height = height;this.width = this.width * scale;document.getElementById("t6").appendChild(this);}
</script>

使用CSS背景属性

使用CSSbackground属性进行等比缩放。

html"><section><div id="t7"></div>
</section>
<style type="text/css">#t7{height: 300px;width: 600px;border: 1px solid #eee;background: url("http://www.sdust.edu.cn/__local/F/7A/AA/E1459849AA8AB0C89854A41BD41_BF3BD857_BC0D8.jpg") center center no-repeat;background-size: contain;}
</style>

使用CSS转换属性

使用CSStransform属性直接进行缩放。

html"><section><div id="t8"><img src="http://www.sdust.edu.cn/__local/1/95/CB/EDC1450B8FD1B8A25FAAC726AA4_A36D4253_16C91.jpg"></div>
</section>
<style type="text/css">#t8{height: 300px;width: 500px;overflow: hidden;}#t8 > img{transform: scale(0.6);transform-origin: 0 0;}
</style>

使用CSS适应属性

使用CSSobject-fit属性直接进行图片适应缩放。

html"><section><div id="t9"><img src="http://www.sdust.edu.cn/__local/F/7A/AA/E1459849AA8AB0C89854A41BD41_BF3BD857_BC0D8.jpg"></div>
</section>
<style type="text/css">#t9{height: 300px;width: 600px;border: 1px solid #eee;display: flex;justify-content: center;}#t9 > img{object-fit: contain;}
</style>

代码示例

html"><!DOCTYPE html>
<html>
<head><title>图片等比例缩放</title><style type="text/css">#t1{width: 500px;}#t2{height: 300px;}#t3{max-width: 500px;}#t4{max-height: 300px;}#t5{height: 300px;width: 600px;border: 1px solid #eee;display: flex;justify-content: center;}#t5 > img{max-width: 100%;max-height: 100%;}#t7{height: 300px;width: 600px;border: 1px solid #eee;background: url("http://www.sdust.edu.cn/__local/F/7A/AA/E1459849AA8AB0C89854A41BD41_BF3BD857_BC0D8.jpg") center center no-repeat;background-size: contain;}#t8{height: 300px;width: 500px;overflow: hidden;}#t8 > img{transform: scale(0.6);transform-origin: 0 0;}#t9{height: 300px;width: 600px;border: 1px solid #eee;display: flex;justify-content: center;}#t9 > img{object-fit: contain;}</style>
</head>
<body><section><img id="t1" src="http://www.sdust.edu.cn/__local/9/7A/B1/F29B84DEF72DD329997E8172ABA_664BA3EF_32466.jpg"><img id="t2" src="http://www.sdust.edu.cn/__local/B/F3/E4/693AB931C9FFB84646970D53BFE_C506394A_4282CA.jpg"></section><section><img id="t3" src="http://www.sdust.edu.cn/__local/F/7A/AA/E1459849AA8AB0C89854A41BD41_BF3BD857_BC0D8.jpg"><img id="t4" src="http://www.sdust.edu.cn/__local/1/95/CB/EDC1450B8FD1B8A25FAAC726AA4_A36D4253_16C91.jpg"></section><section><div id="t5"><img src="http://www.sdust.edu.cn/__local/9/7A/B1/F29B84DEF72DD329997E8172ABA_664BA3EF_32466.jpg"></div></section><section><div id="t6"></div></section><section><div id="t7"></div></section><section><div id="t8"><img src="http://www.sdust.edu.cn/__local/1/95/CB/EDC1450B8FD1B8A25FAAC726AA4_A36D4253_16C91.jpg"></div></section><section><div id="t9"><img src="http://www.sdust.edu.cn/__local/F/7A/AA/E1459849AA8AB0C89854A41BD41_BF3BD857_BC0D8.jpg"></div></section>
</body>
<script type="text/javascript">var img = new Image();var height = 300;img.src = "http://www.sdust.edu.cn/__local/B/F3/E4/693AB931C9FFB84646970D53BFE_C506394A_4282CA.jpg";img.onload = function(){var scale = height / this.height;this.height = height;this.width = this.width * scale;document.getElementById("t6").appendChild(this);}
</script>
</html>

每日一题

https://github.com/WindrunnerMax/EveryDay

http://www.ppmy.cn/ops/86609.html

相关文章

iframe 渲染请求到的 html (邮件预览), 避免样式污染 + 打印 iframe 邮件详情 + iframe 预览邮件时固定水平滚动条在视口底部

文章目录 iframe 渲染请求到的 html (邮件预览), 避免样式污染接上一条, 打印 iframe 邮件详情接上一条, iframe 预览邮件时, 要求固定水平滚动条在视口底部 iframe 渲染请求到的 html (邮件预览), 避免样式污染 背景: 之前弄了邮件系统, 但显示邮件内容时是直接 v-html , 导致…

vue3.0学习笔记(三)——计算属性、监听器、ref属性、组件通信

1. computed 函数 定义计算属性&#xff1a; computed 函数&#xff0c;是用来定义计算属性的&#xff0c;计算属性不能修改。 计算属性应该是只读的&#xff0c;特殊情况可以配置 get set 核心步骤&#xff1a; 导入 computed 函数 执行函数 在回调参数中 return 基于响应…

图片url处理(带http和不带http)方法

后端返回的接口数据&#xff0c;图片路径&#xff0c;有的是相对路径&#xff0c;有的是带http的路径 得处理一下&#xff0c;如果是相对路径就拼上服务器的地址(xxx)&#xff0c;如果是带http的路径就正常显示 方法&#xff1a; imageUrl(url){let str RegExp(http);let ne…

在WSL2和宝塔上安装Magento 2.4.7

在WSL2和宝塔上安装Magento 2.4.7的步骤如下&#xff1a; 步骤1&#xff1a;安装WSL2 确保已安装WSL2和Linux发行版&#xff08;如Ubuntu&#xff09;。确保WSL2已设置为默认版本&#xff1a;wsl --set-default-version 2步骤2&#xff1a;安装宝塔面板 连接到你的WSL2实例&…

C语言 ——— 函数指针的定义 函数指针的使用

目录 何为函数指针 打印 函数名的地址 及 &函数名的地址 函数指针的代码&#xff08;如何正确存储函数地址&#xff09; 函数指针的使用 何为函数指针 类比&#xff1a; 整型指针 - 指向整型数据的指针&#xff0c;整型指针存放的是整型数据的地址 字符指针 - 指向字…

配置linux客户端免密登录服务端linux主机的root用户

1、客户端与服务端的ip 客户端IP地址服务端IP地址 2、定位客户端&#xff0c;由客户端制作公私钥对 [rootclient ~]# ssh-keygen -t rsa &#xff08;RSA是非对称加密算法&#xff09; # 一路回车 3、定位客户端&#xff0c;将公钥上传到服务器端root账户 [rootc…

力扣1089复写0

1089. 复写零 - 力扣&#xff08;LeetCode&#xff09; 我们的思路是利用类似双指针的方式去解答&#xff0c;来看下代码 class Solution { public:void duplicateZeros(vector<int>& arr){int cur 0, dest -1, n arr.size();while (cur < n){if (arr[cur])d…

在appium中,如何通过匹配图片来进行断言?

在Appium中进行图片匹配断言&#xff0c;可以使用OpenCV来实现。以下是使用Appium和OpenCV进行图片匹配断言的示例代码。 首先&#xff0c;需要确保安装了必要的库&#xff1a; pip install opencv-python-headless pip install opencv-python pip install numpy然后&#xf…