JS实现图片点击后出现模态框效果

发布时间 - 2026-01-11 00:56:36    点击率:

很多时候我们在浏览图片时,会发现点击图片后,会弹出一个被点击图片的放大图片浮在页面上,占满整个窗口。这就是图片模态框效果。

这个效果可以使用某些js库实现,如bpopupJs。但是在这里我们使用纯js实现,能够更好理解效果原理和实现方法。

一.实现思路

我们点击小图片之后,图片模态框出现,同时图片模态框上有一个关闭按钮和图片的标题。

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

图片模态框有大图片,关闭按钮,图片标题三部分。

将图片模态框隐藏,在点击小图片之后,模态框出现。

点击关闭按钮后,模态框隐藏。

二.HTML代码

首先,我们的原始页面上有一个图片如下:

HTML代码如下:

<h2>图片点击弹出模态框效果</h2>
<p>图片模态框很不错,是个值得学习的效果</p>
<img src="star.jpeg" id="real" alt="model test picture">

模态框的HTML代码如下:

<div class="motai" id="mo">
 <span class="close" id="close">×</span>
 <img class="motaiimg" id="moimg">
 <div id="caption"></div>
</div>

三.css代码

我们需要通过css设置模态框中各元素的表现效果同时将其隐藏起来,具体有如下几步:

1.模态框

#mo{
  display: none;/*隐藏模态框*/
  width: 100%;
  height: 100%;
  position: fixed;/*定位方式为固定定位*/
  overflow: auto;/*不滚动*/
  background-color: rgba(0,0,0,0.7);
  top: 0px;
  left: 0px;
  z-index: 1;/*置于页面图层之上*/
 }

 2.关闭按钮

 .close{
  font-size: 40px;
  font-weight: bold;
  position: absolute;
  top: 20px;
  right: 14%;
  color:#f1f1f1;
 }
 .close:hover,
 .close:focus{
  color:#bbb;
  cursor:pointer;
 }

3.模态框中图片

#moimg{
  display: block;/*图片表现为块*/
  margin:25px auto;/*图片居中对齐*/
  width: 60%;
  max-width: 750px;/*自适应布局*/
 }

4.图片标题

#caption{
  text-align: center;/*文本居中*/
  margin: 15px auto;
  width: 60%;
  max-height: 750px;
  font-size: 20px;
  color:#ccc;
 }

以上就是基本的模态框各元素的css代码,如果想实现点击后扩大的动画效果,可以增加以下代码:

 #moimg,#caption{
  -webkit-animation: first 1s;
  -o-animation: first 1s;
  animation: first 1s;
 }
 @keyframes first{
  from{transform: scale(0.1);}
  to{transform: scale(1);}
 }

通过以上步骤,我们已经制作好了模态框页面。在使用js来完成交互效果就可以了。

四.js代码

js代码主要是图片和关闭按钮的点击交互,需要注意的是js代码须位于模态框HTML代码之后,js具体代码如下,:

var motai=document.getElementById('mo')
 var moimg=document.getElementById("moimg")
 var realimg=document.getElementById("real")
 var caption=document.getElementById("caption")
 realimg.onclick=function(){
  motai.style.display="block"
  moimg.src=this.src
  caption.innerHTML=this.alt
 }
 var span=document.getElementById("close");
 span.onclick=function(){
  motai.style.display="none";
 }

通过以上步骤,图片的模态框效果就实现了,

最后总的代码如下:

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>close</title>
 <style>
 #real{
  /*点击弹出模态框的图片*/
  margin: 30px;
  width: 250px;
  border-radius:6px;
 }
 #real:hover{
  opacity: 0.6;
 }
 #mo{
  display: none;/*隐藏*/
  width: 100%;
  height: 100%;
  position: fixed;
  overflow: auto;
  background-color: rgba(0,0,0,0.7);
  top: 0px;
  left: 0px;
  z-index: 1;
 }
 #moimg{
  display: block;
  margin:25px auto;
  width: 60%;
  max-width: 750px;
 }
 #caption{
  text-align: center;
  margin: 15px auto;
  width: 60%;
  max-height: 750px;
  font-size: 20px;
  color:#ccc;
 }
 #moimg,#caption{
  -webkit-animation: first 1s;
  -o-animation: first 1s;
  animation: first 1s;
 }
 @keyframes first{
  from{transform: scale(0.1);}
  to{transform: scale(1);}
 }
 .close{
  font-size: 40px;
  font-weight: bold;
  position: absolute;
  top: 20px;
  right: 14%;
  color:#f1f1f1;
 }
 .close:hover,
 .close:focus{
  color:#bbb;
  cursor:pointer;
 }
 @media only screen and(max-width:750px ) {
  #moimg{
   width: 100%;
  }
 }
 </style>
</head>
<body>
<h2>图片点击弹出模态框效果</h2>
<p>图片模态框很不错,是个值得学习的效果</p>
<img src="star.jpeg" id="real" alt="model test picture">
<!--图片模态框 -->
<div class="motai" id="mo">
 <span class="close" id="close">×</span>
 <img class="motaiimg" id="moimg">
 <div id="caption"></div>
</div>
<script>
 var motai=document.getElementById('mo')
 var moimg=document.getElementById("moimg")
 var realimg=document.getElementById("real")
 var caption=document.getElementById("caption")
 realimg.onclick=function(){
  motai.style.display="block"
  moimg.src=this.src
  caption.innerHTML=this.alt
 }
 var span=document.getElementById("close");
 span.onclick=function(){
  motai.style.display="none";
 }
</script>
</body>
</html>

以上所述是小编给大家介绍的JS实现图片点击后出现模态框效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# js  # 图片点击模态框  # 模态框  # AngularJs 弹出模态框(model)  # js实现简单模态框实例  # Vue.js弹出模态框组件开发的示例代码  # js利用事件的阻止冒泡实现点击空白模态框的隐藏  # angularJS模态框$modal实例代码  # AngularJS中使用ngModal模态框实例  # bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能  # AngularJS模态框模板ngDialog的使用详解  # 原生js实现简单的模态框示例  # JavaScript+CSS实现模态框效果  # 模态  # 弹出  # 是个  # 上有  # 很不错  # 小编  # 框中  # 的是  # 在这里  # 好了  # 在此  # 这就是  # 将其  # 给大家  # 可以使用  # 几步  # 表现为  # 图层  # 来完成  # 所述 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  如何在云虚拟主机上快速搭建个人网站?  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  常州企业网站制作公司,全国继续教育网怎么登录?  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  如何做网站制作流程,*游戏网站怎么搭建?  如何快速搭建支持数据库操作的智能建站平台?  大型企业网站制作流程,做网站需要注册公司吗?  EditPlus中的正则表达式 实战(2)  php打包exe后无法访问网络共享_共享权限设置方法【教程】  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  如何快速搭建高效香港服务器网站?  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  python中快速进行多个字符替换的方法小结  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  Android使用GridView实现日历的简单功能  Laravel如何使用模型观察者?(Observer代码示例)  开心动漫网站制作软件下载,十分开心动画为何停播?  如何在IIS7上新建站点并设置安全权限?  如何用AI帮你把自己的生活经历写成一个有趣的故事?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  js实现获取鼠标当前的位置  Laravel如何使用withoutEvents方法临时禁用模型事件  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  焦点电影公司作品,电影焦点结局是什么?  太平洋网站制作公司,网络用语太平洋是什么意思?  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  如何在IIS中新建站点并配置端口与物理路径?  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  如何在阿里云部署织梦网站?  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  如何挑选高效建站主机与优质域名?  Python函数文档自动校验_规范解析【教程】  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  新三国志曹操传主线渭水交兵攻略  网站制作价目表怎么做,珍爱网婚介费用多少?  奇安信“盘古石”团队突破 iOS 26.1 提权  如何用狗爹虚拟主机快速搭建网站?  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  个人网站制作流程图片大全,个人网站如何注销?  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  Laravel如何实现API版本控制_Laravel版本化API设计方案