HTML标签伪元素绑定事件的三种方式

本篇文章给大家带来的内容是关于html标签伪元素绑定事件的三种方式,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

最近项目中遇到点击一个图标执行某些操作的功能,本来很简单就能实现,但图标却是 ::after 伪元素实现的,在印象中好像不能直接对伪元素进行 dom 操作,可项目中有所有页面都是通过伪元素来展示图标的,将所有页面中图标改成 DOM 元素也不太可行。
在网上查了下,大部分都是介绍通过 event 对象获取鼠标指针坐标的方式判断点击的区域是否为伪元素所在的区域,但这很烦麻烦。

3425417128-5c9e2b01f313c_articlex.png

下面整理出几种简便方式实现 click 伪元素时进行事件处理,附上例子代码。

HTML结构

首先 HTML 结构是这样的

立即学习“前端免费学习笔记(深入)”;

按钮文字

实现方法

第一种

通过 CSS3 的 pointer-events 特性来实现。

CSS 代码

    *{margin: 0; padding:0;}    section{        border: 1px solid #abc;        border-radius: 5px;        background-color: #def;        font-family: Microsoft YaHei;        height: 40px;        box-sizing: border-box;        cursor: pointer;        font-size: 16px;        position: absolute;        top: 50%;        left: 50%;        transform: translate(-50%, -50%);        pointer-events: none;    /* 关键点在这里,元素禁止响应鼠标事件 */    }    section::after{        content: '';        border-left: 1px solid #abc;        display: inline-block;        width: 24px;        height: 100%;        background-size: contain;        background-position: center;        background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABEklEQVRoQ+2X3Q3CMAyE3Y3YBDZAbOBRzAaMwkiMgCqlUoX4SX13qiKcl77Uzn13ddpONviaBtdvBbB3gpVAJQA6UI8QaCBcXgnAFoINKgHQQLhcmoC738zsHhHzVbJkAE38uam+qCAkAC/iF+clEHSAD+JlEFSAH+IlEDSATvF0CArARvFUCBggKZ4GAQG4+8HMTuABHxHxyPaAALKbMusKgOlmptd/J9CG+JhxblVz3XWIhz5GFxeTEJSPO9oMbISgiJ8NpAHMzTohaOLpAB0QVPESgC8QdPEygDcQEvFSgBXEmD/14Mutu5x6CnXvSryxAIhmplpVAinbiEWVANHMVKtKIGUbsagSIJqZajV8Ak/MSlox+m54VQAAAABJRU5ErkJggg==);        pointer-events: auto;    /* 关键点在这里,伪元素覆盖父元素的 pointer-events: none ,响应鼠标事件 */    }    section span{        display: inline-block;        height: 100%;        vertical-align: top;        line-height: 40px;        padding-left: 10px;    }

JavaScript 代码

    document.querySelector('section').addEventListener('click', ()=>{        console.log('只有点击伪元素才能触发click');    });

第二种

通过阻止事件冒泡的方式实现

CSS基础代码同上,将 pointer-events: none; 和 pointer-events: auto; 。

    document.querySelector('section').addEventListener('click', ()=>{        // 因为其他子元素事件冒泡被阻止了,所以点击section的时候,只剩下伪元素覆盖区域进入到事件监听中        console.log('只有伪元素才能触发click');    });    document.querySelector('span').addEventListener('click', ev=>{        // 阻止文字元素的事件冒泡        ev.stopPropagation();    });

第三种

通过 event 对象的指针坐标来判断点击的是否在伪元素范围内,这种方式网上很多,大家去度娘一下就有了。

最后就是,实在不行就不要使用 ::after 了,换成实际 dom 节点吧,啊O(∩_∩)O哈哈~

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的HTML视频教程栏目!

以上就是HTML标签伪元素绑定事件的三种方式的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1547731.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月21日 19:26:02
下一篇 2025年12月21日 19:26:10

相关推荐

  • javascript闭包怎么管理浏览器缓存

    javascript闭包怎么管理浏览器缓存javascript闭包怎么管理浏览器缓存javascript闭包怎么管理浏览器缓存javascript闭包怎么管理浏览器缓存

    闭包不能直接操作浏览器缓存,但可通过封装缓存逻辑间接影响缓存行为:1. 利用闭包维持对缓存变量的引用,实现数据的存储与检索;2. 在闭包中实现缓存过期、更新和清理策略;3. 结合http头部信息(如cache-control)决定缓存读取与更新;4. 与service worker协同实现动态缓存管…

    2026年10月2日 • 用户投稿
    000
  • Archiveofownour书签同步功能使用_Archiveofownour中文版跨设备进入

    Archiveofownour书签同步功能使用_Archiveofownour中文版跨设备进入Archiveofownour书签同步功能使用_Archiveofownour中文版跨设备进入Archiveofownour书签同步功能使用_Archiveofownour中文版跨设备进入Archiveofownour书签同步功能使用_Archiveofownour中文版跨设备进入

    Archiveofownour书签同步功能位于设置界面,支持多端实时同步。用户登录同一账号后,可在手机、电脑等设备间自动同步书签数据,通过加密传输保障隐私安全,并可点击“立即同步”手动刷新。配合浏览器插件与二维码扫码登录,实现跨设备无缝接入。 Archiveofownour书签同步功能使用指南 Ar…

    2026年10月2日 • 用户投稿
    100
  • JavaScript数据属性值安全转换为数字的专业指南:避免NaN的策略

    本教程详细阐述了在JavaScript中如何安全地将HTML数据属性(data attributes)的值转换为数字,并确保在值无效时返回0,从而有效避免在计算中出现NaN。文章重点介绍了使用parseFloat()而非Number()进行转换,并强调了将|| 0操作符正确放置在转换函数外部的关键性…

    2026年10月2日
    000
  • 夸克浏览器如何禁用JavaScript_夸克浏览器禁用网页JS脚本设置步骤

    夸克浏览器如何禁用JavaScript_夸克浏览器禁用网页JS脚本设置步骤夸克浏览器如何禁用JavaScript_夸克浏览器禁用网页JS脚本设置步骤夸克浏览器如何禁用JavaScript_夸克浏览器禁用网页JS脚本设置步骤夸克浏览器如何禁用JavaScript_夸克浏览器禁用网页JS脚本设置步骤

    1、可在夸克浏览器中通过高级设置关闭JavaScript以提升隐私保护并防止恶意脚本;2、启用无痕模式可临时限制脚本运行;3、通过自定义过滤规则可屏蔽特定JS文件加载。 如果您在浏览网页时遇到页面加载异常或希望提升隐私保护,可能需要禁用JavaScript来阻止某些脚本运行。夸克浏览器提供了对JS脚…

    2026年10月2日 • 用户投稿
    000
  • TP中JS如何获取模板变量(示例详解)

    下面thinkphp框架教程栏目将给大家介绍php框架中js优雅获取模板变量的方式,希望对需要的朋友有所帮助! PHP框架中JS优雅获取模板变量的方式 在使用PHP框架(本文以ThinkPHP为例)进行页面开发的时候,经常遇到需要将控制器方法中的模板变量代入到页面JS内操作的情况,常见的方式如: l…

    2026年10月2日
    100
  • 项目文件夹配置与多文件管理技巧

    项目文件夹配置与多文件管理技巧项目文件夹配置与多文件管理技巧项目文件夹配置与多文件管理技巧项目文件夹配置与多文件管理技巧

    高效的项目文件夹结构应具备清晰、一致、可扩展的特点。1. 顶层目录通常包括src(源代码)、data(数据)、docs(文档)、assets(资源)、lib(依赖库)、build(构建输出)、tests(测试)等;2. 每个目录下按模块或功能进一步细分,如src下分components、pages、…

    2026年10月2日 • 用户投稿
    100
  • 苹果手机火狐浏览器怎么改成电脑ua标识

    什么是ua标识 ua标识,全称为用户代理(User-Agent)标识,是浏览器向网站发送请求时附带的一段字符串,用于告知服务器当前所使用的设备类型、操作系统以及浏览器版本等信息。通过修改ua标识,可以让网页误认为你正在使用电脑浏览器访问,从而加载桌面版网页内容。 更改ua标识的优势 部分网站为电脑端…

    2026年10月2日
    000
  • sublime执行html代码 sublime怎么在浏览器运行html

    sublime执行html代码 sublime怎么在浏览器运行htmlsublime执行html代码 sublime怎么在浏览器运行htmlsublime执行html代码 sublime怎么在浏览器运行htmlsublime执行html代码 sublime怎么在浏览器运行html

    sublime text不能直接运行html文件,因为它是一个文本编辑器而非浏览器或ide。1. 编写html代码并保存为.html文件;2. 通过双击或右键选择浏览器打开文件;3. 使用默认或指定浏览器查看效果。sublime text提供emmet插件、自动补全、代码高亮、多光标编辑和自定义代码…

    2026年10月2日 • 用户投稿
    200
  • Archiveofownour收藏夹导入教程_Archiveofownour中文版历史记录同步进入

    Archiveofownour收藏夹导入教程_Archiveofownour中文版历史记录同步进入Archiveofownour收藏夹导入教程_Archiveofownour中文版历史记录同步进入Archiveofownour收藏夹导入教程_Archiveofownour中文版历史记录同步进入Archiveofownour收藏夹导入教程_Archiveofownour中文版历史记录同步进入

    Archiveofownour收藏夹导入教程在个人中心的“数据管理”中,打开平台后点击“导入收藏夹”,上传HTML格式书签文件即可完成导入;多设备同步需登录同一账户并开启“同步设置”,支持端到端加密传输;平台还具备跨设备合并、智能标签、时间轴视图、自定义过滤及离线查看等核心功能。 Archiveof…

    2026年10月2日 • 用户投稿
    200
  • Sublime Text 中文显示乱码的编码设置方案

    Sublime Text 中文显示乱码的编码设置方案Sublime Text 中文显示乱码的编码设置方案Sublime Text 中文显示乱码的编码设置方案Sublime Text 中文显示乱码的编码设置方案

    sublime text 中文显示乱码主要是由于文件编码与软件默认解码方式不匹配所致,解决方法包括:1. 使用 notepad++ 等工具检测文件实际编码(如 utf-8、gbk);2. 打开文件时通过 reopen with encoding 选择正确编码;3. 修改 sublime text 用…

    2026年10月2日 • 用户投稿
    900
  • JS中的循环怎么使用

    JS中的循环怎么使用JS中的循环怎么使用JS中的循环怎么使用JS中的循环怎么使用

    JS中的循环主要用于重复执行一段代码,直到满足特定条件为止。 掌握它们对于处理数组、对象以及执行重复性任务至关重要。 解决方案 JavaScript 提供了几种循环结构,各有用途: for 循环: 这是最常用的循环之一,尤其适用于已知循环次数的情况。 for (let i = 0; i < 1…

    2026年10月2日 • 用户投稿
    100
  • PHP文件上传系统:如何通过外键将文件精确关联到特定用户

    本教程详细阐述如何在PHP文件上传系统中,通过引入数据库外键(user_id)将上传的QR码图片与特定用户关联。内容涵盖数据库表结构设计、前端表单改造、后端文件处理逻辑及用户专属内容展示,确保文件上传的精确归属和管理。 1. 理解核心问题与解决方案 在多用户或多角色(如员工为用户上传)的应用场景中,…

    2026年10月2日
    100
  • 火狐浏览器怎么查看网页源代码_火狐浏览器打开页面源代码与元素检查器方法

    火狐浏览器怎么查看网页源代码_火狐浏览器打开页面源代码与元素检查器方法火狐浏览器怎么查看网页源代码_火狐浏览器打开页面源代码与元素检查器方法火狐浏览器怎么查看网页源代码_火狐浏览器打开页面源代码与元素检查器方法火狐浏览器怎么查看网页源代码_火狐浏览器打开页面源代码与元素检查器方法

    1、通过右键“查看页面源代码”或按Ctrl+U可查看网页HTML;2、右键“检查”或按F12打开开发者工具,可定位并修改具体元素;3、使用F12快捷键启动工具后,点击选择图标可快速检视页面组件。 如果您在浏览网页时需要查看页面的底层结构或调试内容,可以通过火狐浏览器快速访问网页源代码或检查具体元素。…

    2026年10月2日 • 用户投稿
    100
  • js如何实现拖拽功能

    js如何实现拖拽功能js如何实现拖拽功能js如何实现拖拽功能js如何实现拖拽功能

    实现javascript拖拽功能的核心是监听mousedown、mousemove和mouseup事件,通过计算鼠标偏移量实时更新元素位置,推荐使用transform: translate()提升性能。1. 对于多个可拖拽元素,可采用事件委托,将事件绑定在父容器上,通过判断e.target实现统一管…

    2026年10月2日 • 用户投稿
    100
  • Sublime怎么注释多行?多行注释与取消注释的终极方案

    Sublime怎么注释多行?多行注释与取消注释的终极方案Sublime怎么注释多行?多行注释与取消注释的终极方案Sublime怎么注释多行?多行注释与取消注释的终极方案Sublime怎么注释多行?多行注释与取消注释的终极方案

    sublime text 多行注释可通过多种方法实现。1. 使用快捷键 ctrl + /(windows/linux)或 cmd + /(mac)可对选中的多行代码进行单行注释,再次按下取消注释;2. 通过块选择功能(alt+拖动或option+拖动),可在多行指定位置手动输入注释符;3. 安装插件…

    2026年10月2日 • 用户投稿
    100
  • HTML/CSS 代码片段的自动生成技巧

    HTML/CSS 代码片段的自动生成技巧HTML/CSS 代码片段的自动生成技巧HTML/CSS 代码片段的自动生成技巧HTML/CSS 代码片段的自动生成技巧

    使用 emmet 语法快速生成 html 结构的方法是通过简短的缩写提升效率,例如输入 ! 然后按 tab 键生成 html5 骨架,或使用 div#container>ul.list>li.item*5>a{link} 快速构建嵌套结构;css 预处理器如 sass 或 less…

    2026年10月2日 • 用户投稿
    200
  • sublime网页开发运行 sublime怎么调试html文件

    sublime网页开发运行 sublime怎么调试html文件sublime网页开发运行 sublime怎么调试html文件sublime网页开发运行 sublime怎么调试html文件sublime网页开发运行 sublime怎么调试html文件

    如何使用sublime text配合浏览器进行前端开发?1.安装package control:通过控制台粘贴代码安装,重启sublime text。2.安装插件:如view in browser(右键html文件预览)、emmet(快速编写html/css)、sublimelinter(代码检查)…

    2026年10月1日 • 用户投稿
    1700
  • Sublime怎么格式化代码?一键美化代码的3种实用方法

    Sublime怎么格式化代码?一键美化代码的3种实用方法Sublime怎么格式化代码?一键美化代码的3种实用方法Sublime怎么格式化代码?一键美化代码的3种实用方法Sublime怎么格式化代码?一键美化代码的3种实用方法

    sublime可通过三种方法实现代码格式化:1.安装codeformatter插件,支持多语言格式化,通过package control安装后可右键或设置快捷键alt + f一键格式化,部分语言需本地安装对应工具;2.使用html-css-js prettify插件,适合前端开发,安装后可右键选择p…

    2026年10月1日 • 用户投稿
    100
  • 如何通过云服务器运行PHP后缀文件_远程部署PHP后缀文件的实用技巧

    首先安装LAMP或LNMP环境,以Ubuntu为例使用apt安装Apache和PHP;接着将PHP文件上传至/var/www/html目录,可通过SFTP、scp或直接编辑方式部署;然后启动Apache服务并设置开机自启,访问服务器IP确认Web服务正常;若.php文件仅显示源码,需检查PHP是否安…

    2026年10月1日
    200
  • Sublime怎么快速跳转?文件函数快速定位的5个技巧

    Sublime怎么快速跳转?文件函数快速定位的5个技巧Sublime怎么快速跳转?文件函数快速定位的5个技巧Sublime怎么快速跳转?文件函数快速定位的5个技巧Sublime怎么快速跳转?文件函数快速定位的5个技巧

    掌握sublime text的快速跳转技巧可大幅提升工作效率。1. 使用 ctrl/cmd + g 输入行号跳转至指定行,适合调试定位错误;2. 通过 ctrl/cmd + p 模糊搜索文件名快速打开文件,尤其适用于复杂项目;3. 利用 ctrl/cmd + r 跳转到当前文件内的函数、变量等符号,…

    2026年10月1日 • 用户投稿
    300

发表回复

登录后才能评论
关注微信