当前位置:首页 > JavaScript

js实现点击图片放大

2026-01-30 15:43:54JavaScript

实现点击图片放大的方法

使用CSS和JavaScript实现模态框

通过CSS创建一个模态框,JavaScript监听图片点击事件,显示放大的图片。

<style>
  .modal {
    display: none;
    position: fixed;
    z-index: 1;
    padding-top: 100px;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0,0,0,0.9);
  }
  .modal-content {
    margin: auto;
    display: block;
    max-width: 80%;
    max-height: 80%;
  }
  .close {
    position: absolute;
    top: 15px;
    right: 35px;
    color: #f1f1f1;
    font-size: 40px;
    font-weight: bold;
    cursor: pointer;
  }
</style>

<img id="myImg" src="image.jpg" style="width:100%;max-width:300px">
<div id="myModal" class="modal">
  <span class="close">&times;</span>
  <img class="modal-content" id="img01">
</div>

<script>
  var modal = document.getElementById("myModal");
  var img = document.getElementById("myImg");
  var modalImg = document.getElementById("img01");

  img.onclick = function() {
    modal.style.display = "block";
    modalImg.src = this.src;
  }

  var span = document.getElementsByClassName("close")[0];
  span.onclick = function() {
    modal.style.display = "none";
  }
</script>

使用第三方库实现

使用lightbox2等现成的库可以快速实现图片放大效果。

<link href="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.11.3/css/lightbox.min.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.11.3/js/lightbox.min.js"></script>

<a href="image.jpg" data-lightbox="image-1" data-title="My caption">
  <img src="thumbnail.jpg" alt="Thumbnail">
</a>

纯CSS实现方案

利用CSS的:target伪类可以实现简单的图片放大效果。

<style>
  #img-container img {
    transition: transform 0.25s ease;
    cursor: zoom-in;
  }
  #img-container img:active {
    transform: scale(2);
    cursor: zoom-out;
  }
</style>

<div id="img-container">
  <img src="image.jpg" alt="Click to zoom">
</div>

响应式图片放大

结合CSS transform和JavaScript实现响应式的图片放大效果。

js实现点击图片放大

document.querySelectorAll('.zoomable-img').forEach(img => {
  img.addEventListener('click', function() {
    this.classList.toggle('zoomed');
    if (this.classList.contains('zoomed')) {
      this.style.transform = 'scale(2)';
      this.style.cursor = 'zoom-out';
    } else {
      this.style.transform = 'scale(1)';
      this.style.cursor = 'zoom-in';
    }
  });
});

每种方法适用于不同场景,从简单到复杂,可以根据项目需求选择最合适的实现方式。

标签: 图片js
分享给朋友:

相关文章

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

vue 实现图片

vue 实现图片

Vue 实现图片加载与展示的方法 在 Vue 中实现图片加载和展示可以通过多种方式完成,包括静态资源引用、动态绑定、懒加载等。以下是几种常见的方法: 静态资源引用 将图片放在项目的 public 或…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…