纯js实现div内图片自适应大小(已测试,兼容火狐)

yizhihongxing

下面是纯js实现div内图片自适应大小的完整攻略:

目录

实现思路

实现div内图片自适应大小,需要解决以下两个问题:

  1. 如何获取图片的宽度和高度?
  2. 如何在图片加载完成后将其按照正确的比例缩放到合适的大小?

因此,我们的实现思路是:

  1. 使用JS监听图片的load事件,在图片加载完成后获取其宽度和高度。
  2. 判断图片的宽高比例与容器的宽高比例,如果不同,则根据比例计算出适当的缩放大小,然后将缩放大小应用于图片。

代码实现

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内图片自适应大小(已测试,兼容火狐) - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • js通过八个点 拖动改变div大小的实现方法

    下面是“JS通过八个点拖动改变div大小的实现方法”的完整攻略。 1. 需求分析 我们需要实现一个可以通过拖动八个点来改变一个 div 元素的大小的功能。最好的做法是使用原生 JavaScript 实现,而不是使用第三方类库,这样我们可以更好地理解背后的实现原理。 2. HTML 结构 首先,我们需要准备一个 div 元素,用于展示效果。具体的实现方法是通过…

    JavaScript 2023年6月11日
    00
  • 使用Javascript开发sliding-nav带滑动条效果的导航插件

    一、前言 本文将介绍如何使用Javascript开发sliding-nav带滑动条效果的导航插件。这个插件是可以在不同的网页上使用的,它可以使你的导航更美观、更实用。 二、制作滑动导航 创建HTML结构 首先,我们需要创建一个HTML结构,用于存储导航。该结构应该包含一个父元素(一般是nav标签),该元素内部包含链接、图标或其它的内容。 例如: <na…

    JavaScript 2023年6月10日
    00
  • 基于jquery的cookie的用法

    那么我们来一步步地讲解“基于jquery的cookie的用法”的完整攻略。 什么是cookie 在开始讲解基于jquery的cookie的用法之前,我们需要先了解一下什么是cookie。简言之,cookie是浏览器存储在用户计算机上的小文本文件,用于跟踪用户以及实现持久化状态。在web开发中,cookie被广泛用于存储用户的登录状态等信息。 利用jquery…

    JavaScript 2023年6月11日
    00
  • 关于JavaScript中parseInt()的一个怪异行为解决

    关于JavaScript中parseInt()的一个怪异行为解决 在JavaScript中,parseInt()是一个常用的全局函数,用于将字符串转换为整数。但是在使用该函数时,有一些奇怪的行为需要注意。 parseInt()的奇怪行为 在解析数字字符串时,parseInt()函数除了将前导的零字符去掉之外,还会忽略其中的非数字字符。这意味着即使字符串中包含…

    JavaScript 2023年5月28日
    00
  • javascript中关于&& 和 || 表达式的小技巧分享

    接下来我将详细讲解“JavaScript中关于&&和||表达式的小技巧分享”的完整攻略。 什么是 && 和 || 表达式? 在 JavaScript 中,&& 和 || 都是逻辑运算符。 && 表示“与”,当两个操作数都为真(truthy)时,它的结果为真。如果第一个操作数为假(falsy),则…

    JavaScript 2023年6月11日
    00
  • 原生js+ajax分页组件

    下面我详细讲解一下如何实现“原生js+ajax分页组件”。 前置知识 在实现分页组件之前,需要对以下几个知识点有一定的了解。 原生JS的DOM操作 Ajax异步请求及响应 分页算法 分页算法 分页算法是分页组件实现的核心。下面介绍两种常见的分页算法。 基本分页算法 基本分页算法的实现非常简单,直接根据当前页码和每页显示数量计算出起始记录的位置和结束位置,再将…

    JavaScript 2023年6月11日
    00
  • Javascript中的call()方法介绍

    Javascript中的call()方法介绍 什么是call()方法? call() 方法在调用一个函数时,可以指定函数内部的 this 关键字所指向的值。通过 call() 方法,我们可以通过一个已有的对象去调用另一个对象的方法。 call()方法的基本语法 fun.call(thisArg, arg1, arg2, …) call()方法参数说明 t…

    JavaScript 2023年5月28日
    00
  • ToolTip 通过Js实现代替超链接中的title效果

    介绍一下如何用JS实现ToolTip代替超链接中的title效果: 1. 理解ToolTip ToolTip 是一种在鼠标移动到某个元素上时(通常为超链接)出现的提示信息。通常很多网站会在链接上添加title属性,这个属性值即为ToolTip中的文本。然而,title属性的提示框样式是完全受操作系统控制的,不能自定义样式,且无法加入图片、超链接等内容。因此,…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部