下面是纯js实现div内图片自适应大小的完整攻略:
下面是纯js实现div内图片自适应大小的完整攻略:
目录
- 实现思路
- 代码实现
- 示例一
- 示例二
实现思路
实现div内图片自适应大小,需要解决以下两个问题:
- 如何获取图片的宽度和高度?
- 如何在图片加载完成后将其按照正确的比例缩放到合适的大小?
因此,我们的实现思路是:
- 使用JS监听图片的
load
事件,在图片加载完成后获取其宽度和高度。 - 判断图片的宽高比例与容器的宽高比例,如果不同,则根据比例计算出适当的缩放大小,然后将缩放大小应用于图片。
代码实现
HTML结构示例:
<div class="container">
<img src="example.jpg" alt="example image">
</div>
CSS样式示例:
.container {
width: 500px;
height: 500px;
}
img {
max-width: 100%;
max-height: 100%;
}
JS代码:
// 获取所有包含图片的容器
const containers = document.querySelectorAll('.container');
// 遍历所有容器
containers.forEach(container => {
// 获取容器和图片对象
const containerWidth = container.clientWidth;
const containerHeight = container.clientHeight;
const img = container.querySelector('img');
// 监听图片的load事件
img.addEventListener('load', () => {
// 获取图片的宽度和高度
const imgWidth = img.width;
const imgHeight = img.height;
// 判断图片宽高比例和容器宽高比例是否相同
const containerRatio = containerWidth / containerHeight;
const imgRatio = imgWidth / imgHeight;
if (containerRatio !== imgRatio) {
// 计算缩放比例
let scaleRatio;
if (imgRatio > containerRatio) {
// 宽度缩放
scaleRatio = containerWidth / imgWidth;
} else {
// 高度缩放
scaleRatio = containerHeight / imgHeight;
}
// 应用缩放
img.style.width = Math.round(imgWidth * scaleRatio) + 'px';
img.style.height = Math.round(imgHeight * scaleRatio) + 'px';
}
});
});
示例一
在一个500x500的容器内展示宽度为800px,高度为300px的图片。
HTML代码:
<div class="container">
<img src="example-1.jpg" alt="example image">
</div>
示例在线演示:点击查看
示例二
在一个500x500的容器内展示宽度为300px,高度为800的图片。
HTML代码:
<div class="container">
<img src="example-2.jpg" alt="example image">
</div>
示例在线演示:点击查看
沃梦达教程
本文标题为:纯js实现div内图片自适应大小(已测试,兼容火狐)
基础教程推荐
猜你喜欢
- vue中set方法 2023-10-08
- 关于 html:如何在单选按钮旁边显示文本? 2022-09-21
- 纯vue3实现的svg可视化web组态编辑器。主要用于物联网mqtt实时系统图 2023-10-08
- JavaScript获取用户所在城市及地理位置 2024-01-05
- Bootstrap CSS组件之大屏幕展播 2023-12-20
- JQuery Ajax请求拦截操作 2022-09-08
- HTML 2023-10-28
- CSS整体布局声明的一些使用技巧 2023-12-22
- Ajax实现上传图像功能的示例详解 2023-02-24
- 基于ajax html实现文件上传技巧总结 2023-01-21