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

下面是纯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实现带有介绍的Select列表菜单实例

    实现带有介绍的Select列表菜单需要用到HTML、CSS和JavaScript技术。 HTML结构 首先,在HTML文件中创建一个Select元素以及对应的option选项,如下所示: <label for="menu">请选择菜单:</label> <select id="menu"&…

    JavaScript 2023年6月11日
    00
  • jsonp跨域请求实现示例

    下面给出“jsonp跨域请求实现示例”的完整攻略,逐步讲解其实现过程。 什么是跨域请求? 跨域请求是指在前端页面中,通过JavaScript代码向不同域名、不同端口、不同协议的服务器发送HTTP请求。由于浏览器的同源策略,如果不加特殊处理,则这种跨域请求是不被浏览器允许的。 JSONP实现跨域请求的原理 JSONP(JSON with Padding)实际上…

    JavaScript 2023年5月27日
    00
  • JavaScript实现页面滚动图片加载(仿lazyload效果)

    JavaScript实现页面滚动图片加载(仿lazyload效果) 概述 在网站中,经常会有长页式的页面,滚动页面时会不断加载图片,但是如果在页面的初次加载时一次性加载所有的图片,会给用户带来不必要的流量浪费,同时也会影响页面加载速度。因此,我们可以通过JavaScript实现页面滚动图片加载,去实现对用户体验的优化。 本攻略将介绍一种基于lazyload思…

    JavaScript 2023年6月11日
    00
  • 如何使JavaScript休眠或等待

    当JavaScript需要在一定时间内暂停执行或等待某些操作完成后再执行下一步操作时,可以使用JavaScript的休眠或等待实现方式。以下是具体的实现过程: 1.使用setTimeout函数实现休眠 使用setTimeout函数可以在指定的时间后执行指定的JavaScript代码,于是,在需要休眠一段时间后再执行代码的时候,可以将要执行的代码以回调函数的形…

    JavaScript 2023年5月27日
    00
  • javascript AOP 实现ajax回调函数使用比较方便

    下面是详细讲解“javascript AOP 实现ajax回调函数使用比较方便”的完整攻略: 什么是AOP AOP(Aspect Oriented Programming),面向切面编程,是一种编程风格,可以将一些特定的行为切入到原本的业务逻辑执行流程中,使业务逻辑代码专注于业务本身,而将其他非业务代码分离出去。 在JavaScript中,AOP的实现方式主…

    JavaScript 2023年6月11日
    00
  • Web数据存储浅析 Cookie、UserData、SessionStorage、WebSqlDatabase

    Web数据存储浅析 Web数据存储是前端开发中非常重要的一环,主要目的是将数据保存在浏览器端,以便在不同的页面或刷新后依然可以访问到同样的数据。常见的Web数据存储方式有Cookie、UserData、SessionStorage以及WebSqlDatabase。下面将对它们进行一一分析。 Cookie Cookie是浏览器最常用的一种数据存储方式。它可以在…

    JavaScript 2023年6月11日
    00
  • JS实现读取xml内容并输出到div中的方法示例

    题目要求讲解的是”JS实现读取xml内容并输出到div中的方法示例”,我们需要通过以下过程来示范实现: 1.创建一个XMLHttpRequest对象,并使用open方法来设置请求方法、请求的文件地址和请求是否同步。 2.使用send方法向服务器发送请求。在发送请求的同时,需要指定一个回调函数,用于处理响应并更新div的内容。 3.在回调函数中,通过respo…

    JavaScript 2023年5月28日
    00
  • 详解vue中$router和$route的区别

    下面就是详解vue中$router和$route的区别的完整攻略: 什么是$router和$route 在Vue.js中,$router和$route都是Vue.js中管理路由的对象,用来实现路由跳转和管理当前路由状态的。 $router: 全局路由对象,包含整个路由的信息,例如:路由路径、路由参数、路由方法等。 $route: 当前路由对象,包含当前路由的…

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