当前位置:首页 > JavaScript

js实现点击图片放大

2026-01-30 15:43:54JavaScript

实现点击图片放大的方法

使用CSS和JavaScript实现模态框

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

js实现点击图片放大

<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等现成的库可以快速实现图片放大效果。

js实现点击图片放大

<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实现响应式的图片放大效果。

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
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

vue图片实现多选

vue图片实现多选

Vue图片多选实现方法 基础实现方案 使用v-model绑定数组配合input[type="checkbox"]实现多选功能。创建图片列表数据时,每个图片对象应包含唯一标识符: data() {…

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Jav…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Pa…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('imag…