首页 > 其他分享 >html页面上点击图片放大

html页面上点击图片放大

时间:2024-06-07 17:31:06浏览次数:13  
标签:el handleClick 弹框 点击 html click 页面

需求:

我这里是搭配wangeditor插件使用,然后用直接拿到wangeditor输入的内容用dangerouslySetInnerHTML直接渲染的html页面,页面的代码里面并没有<p><p/><img />这类标签

dangerouslySetInnerHTML渲染如下所示:

因为代码里面并不存在标签,也没办法给加事件,所以这里只能是用原生js去获取dom元素然后结合antd的弹框组件实现的,基本适用所有的html页面,因为不论什么只要可以在html页面展示 就一定可以通过dom来操作,虽然react不建议直接操作dom,但是现在我不想听他的建议我只想完成任务哈哈哈哈哈
接下来就是怎么做啦

document.addEventListener("click", handleClick);就是添加监听事件啦 一定别忘了document.removeEventListener("click", handleClick);要移除掉!!!
附上代码:

  useEffect(() => {
    function hasAncestorWithClass(el, className) {
      while ((el = el.parentElement) && el !== null) {
        if (el.classList && el.classList.contains(className)) {
          return true;
        }
      }
      return false;
    }

    function handleClick(event) {
      if (event.target.tagName.toUpperCase() === "IMG") {
        if (hasAncestorWithClass(event.target, "question-detail")) {
          setIsZoomed(true);
          setZoomedImageUrl(event.target.src);
        }
      }
    }

    document.addEventListener("click", handleClick);

    return () => {
      document.removeEventListener("click", handleClick);
    };
  }, []);

然后

先定义:

监听点击到类名下的img时,将弹窗状态变为true,将你点击的img元素的url赋值给定义好的zoomedImageUrl字段  此时,弹窗显示。

那么接下来就是弹框啦

弹框api可以直接看antd官网,想要什么样写什么样的弹框就好啦
最后就是激动人心的效果展示!

五月加班任务完成!终于能短暂的不用周六加班了 终于能休息啦

标签:el,handleClick,弹框,点击,html,click,页面
From: https://blog.csdn.net/weixin_49720804/article/details/139523106

相关文章

  • 原生html+js实现两两元素配对,用线条连接两个元素
    效果如下:画线部分借鉴了“https://blogweb.cn/article/1403842582411”此链接文章作者的代码,感谢!直接放出代码:点击查看代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>配对</title><scripttype=&qu......
  • 微信小程序 棋牌扑克升级找对-页面布局
    1、浅谈页面布局开发思路用的cocoscreator-javascript页面布局用随机摆放随机的逻辑是根据屏幕的大小生成随机数,然后铺在屏幕上作为坐标使用代码如下 参数finalCount是生成的数量Globals.CONFIG_DATA是全局变量供后续使用search_location(finalCount:number){......
  • HTML5+CSS3+JS小实例:网格图库
    实例:网格图库技术栈:HTML+CSS+JS效果:源码:【HTML】<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0">......
  • 获取自定义 HTML 开头标记和结尾标记之间的文本
    $data="<Data>hello</Data>";preg_match_all("/\<Data\>[.]+\<\/Data\>/",$data,$match);print_r($match);返回:Array([0]=>Array())Array([0]=>Array())所以我猜没有匹配到?你是对的,你的正则表达式没有匹配......
  • Vue的data中对象新增属性后,页面却不渲染(未渲染)
    前提背景:在data中定义了一个数组 usableList:[],给数组中的每个对象添加checked属性(用来查看数据的勾选状态) 问题:勾选后,数组的数据已经改变了,但是未渲染到页面中 问题原因:在于在Vue实例创建时,对象新增的属性并未声明,因此就没有被Vue转换为响应式的属性,自然就不会触发视......
  • html
    基本标签注释<!--注释标签--><!---->DOCTYPE<!--标签是一种标准通用标记语言的文档类型声明,它的目的是要告诉标准通用标记语言解析器,它应该使用什么样的文档类型定义(DTD)来解析文档。--><!DOCTYPEhtml>html<!--html的代码都写在这个标签中,写在标签外是不会显......
  • new/类/null/+/PrimitiveValue/valueOf/toString/环境/HTML 脚本元素属性
    newfunctionmyObjCreate(proto){functionF(){}F.prototype=protoreturnnewF();}functionmyNew(F,...args){letobj=myObjCreate(F.prototype)letres=F.call(obj,...args);returntypeofres==='object'&&res!==null?res:obj......
  • 流程内嵌iframe建模页面并实现数据交互
     效果图: 1、准备工作:下载并设置layui  2、 创建对应建模-要拿到建模新建页面URL-要给对应权限 3、 流程页面创建对应按钮触发事件(你可以用其它方式)$("#oTable0").find("tbody").find("tr:eq(1)").find("td:eq(6)").prepend("<buttonid='s......
  • 创建一个蒙板页面
    文章目录概念介绍使用方法示例代码我们在上一章回中介绍了空类型和空安全相关的内容,本章回中将介绍ModalBarrier组件.闲话休提,让我们一起TalkFlutter吧。概念介绍我们在本章回中介绍的ModalBarrier是一种组件,它主要用来当作蒙板覆盖在页面上方,该组件类似Dialog......
  • 微前端学习笔记(5):从import-html-entry发微DOM/JS/CSS隔离
    import-html-entry 是qiankun中一个举足轻重的依赖,用于获取子应用的HTML和JS,同时对HTML和JS进行了各自的处理,以便于子应用在父应用中加载。 import-html-entry主要是实现了以下几个能力拉取url对应的html并且对html进行了一系列的处理拉取上述html中所......