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

相关推荐

  • 可替换元素是什么?(附示例)

    本篇文章给大家带来的内容是关于可替换元素是什么?(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 最近在群聊里偶然看到有位仁兄发了张今日头条前端面试题的截图,其中关于 HTML 的只有一题,如下: 请问什么是可替换元素和非可替换元素,它们的差异是什么?并举例说明。 前端面试…

    好文分享 2025年12月21日
    000
  • 如何在文字下面添加下划线

    在字下面加下划线的方法:首先使用word软件打开一张带有文字的文档;然后选中需要添加下划线的文本;最后点击顶部菜单栏中【u】图标或者使用快捷键【ctrl+u】即可添加下划线。 HTML页面中在文字下面添加下划线的方法 给文字添加下划线的方法有:直接使用html标签中的标签可实现下划线效果,还可以使用…

    2025年12月21日 好文分享
    000
  • 前端开发者必须知道的http协议相关知识

    htmledit_views-f57960eb32.css”/>  http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式。本文讲述的是前端开发者必须知道的http协议相关知识,做想做前端和正在做前端的小伙伴一定要知道哦。 1.概念  …

    好文分享 2025年12月21日
    000
  • 用HTML实现简单动画

    htmledit_views-f57960eb32.css”/> 看网页里动画效果很是美观 ,仔细想想要怎么完成,好像还不是那么简单的一件工程,今天小编找来一份资源,可以实现简单动画,一起来试试吧。 首先是创建一个html然后给p来完成它的样式, 给它的图片也调到合适的位置,图片设…

    2025年12月21日 好文分享
    000
  • 什么是html5技术

    HTML5技术就是继承了HTML的部分特征,同时又添加了许多新的语法特征,比如语义特性、本地存储特性、设备兼容特性、连接特性、网页多媒体特性等;此外HTML5还定义了处理非法文档的具体细节,使得所有浏览器和客户端程序能够一致地处理语法错误。 html的全称是hyper text markup lan…

    2025年12月21日
    000
  • HTML5画布如何设置字体颜色?(代码示例)

    在html5画布中我们可以使用fillstyle属性来设置文本的字体颜色,它可以接受一个颜色的代码值,比如#cc0000,也可以接受一个颜色的英文单词,比如red。下面我们就来了解一下,希望对大家有所帮助。【视频教程推荐:html教程】 首先我们需要在HTML页面中使用canvas标签创建一个画布,…

    2025年12月21日
    000
  • HTML中如何将字体加粗

    在html中要将字体加粗我们有两种方法,一种是利用b标签;另一种是利用strong标签,本篇文章我们就来介绍一下html中b标签和strong标签的用法。 b标签和strong标签虽然都是可以让字体加粗,但是实际上它们的意义并不相同,用法也有所不同,下面我们就来详细看看b标签strong标签的用法示…

    2025年12月21日
    000
  • HTML中sup标签上标字符和sub标签下标字符的使用方法介绍

    我们在学习数学的时候经常会看看比如3的平方是3²,上面的那个2就是上标,在学习化学的时候会看到h₂,下面这个2就是下标,那么我们在html中如何来实现上标和下标字符呢?本篇文章就来给大家介绍关于html中上标和下标字符的实现方法。 在HTML中我们要实现上标和下标字符需要用到sup元素和sub元素 …

    2025年12月21日 好文分享
    000
  • 如何删除内联或内联块元素之间的间隙

    删除内联或内联块元素间间隙的方法有:去掉元素标签间的空格、使用负边距、在父元素上设置字体大小为零、省略结束标签。 在页面布局时,我们经常会使用到inline元素、inline-block元素,但无可避免都会遇到一个问题,那就是这些元素之间存在间隙(如下图),会导致一些布局上的问题,那么如何删除这些元…

    2025年12月21日
    000
  • 点击HTML页面问号出现提示框(附源码)

    本篇文章给大家带来的内容是关于点击HTML页面问号出现提示框(附源码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 本demo的功能:点击页面按钮在其边缘出现提示信息,点击页面任何一处则消失。 如下图: 1.所需插件: jquery插件; 立即学习“前端免费学习笔记(深入)”; …

    2025年12月21日
    000
  • HTML的标签如何使用

    HTML的标签是用来指定客户端脚本的,它可以帮助我们在HTML文档中放置脚本。可以在标签内嵌入脚本代码,也可以使用src属性链接外部脚本文件。本篇文章就来给大家介绍关于html中标签元素使用方法。 标签的属性 在介绍标签的使用方法前,我们要先了解一下标签的属性;标签的属性有: src属性:用来指定外…

    2025年12月21日
    000
  • html的计算机代码元素有哪些

    在html中,对用户输入,代码,程序等会使用不同的标签来显示,这些计算机代码元素分别为:元素、元素、元素、 元素、<var>元素;这些计算机代码元素支持固定的字母尺寸和间距。本篇文章就给大家介绍一下html的计算机代码元素,希望对你们有所帮助。</p><p style=…

    2025年12月21日 好文分享
    000
  • HTML和ASP之间的区别是什么

    HTML和ASP是Web编程世界中两个非常常见的语言,都可以生成Web页面的。那么它们之间存在什么差异?本篇文章就给大家介绍HTML和ASP之间的区别,让大家对HTML和ASP有一个简单的了解。 HTML HTML代表用于开发网页和特别是网页设计的超文本标记语言,是编写网页的最简单的语言。它主要是使…

    2025年12月21日
    000
  • html页面如何显示上标和下标

    在html中,可以使用标签和标签来显示文本的上标、下标。 本篇文章就来给大家介绍标签和标签,让大家对标签和标签有一个简单的了解,知道标签和标签的使用方法,希望对你们有所帮助。【视频教程推荐:HTML教程】 HTML 标签 标签是用来定义上标文本的。 立即学习“前端免费学习笔记(深入)”; 下面我们通…

    2025年12月21日 好文分享
    000
  • HTML文件路径有哪些类型

    html文件路径有两种类型,分别为:绝对文件路径和相对文件路径。 HTML文件路径是用于描述网站文件夹中文件的位置,它是在网页上用于链接外部文件的,比如:其他HTML文件(网页),图片(使用标签或background属性)、css样式表(使用标签)、JavaScript文件(使用标签)等。下面我们就…

    2025年12月21日 好文分享
    000
  • HTML 是什么

    HTML 是一个声明,它是用来指定web浏览器关于页面使用哪个HTML版本进行编写,也就是一个指示Web浏览器有关HTML页面的信息的指令。 在HTML文档中,我们经常可以看到html>标签之前都会有一个,那么是什么?有什么作用呢?下面本篇文章就给大家介绍一下HTML 是什么?希望对你们有所帮…

    2025年12月21日
    000
  • 如何在HTML中插入空格

    在前端开发中,有时候需要在页面中添加空格,那么如何添加?本篇文章就给大家介绍在html页面中插入空格的方法,希望对大家有所帮助。【相关视频教程推荐:html教程】 一、键入空格 在html页面中,我们可以通过键入“空格”键来插入空格。 例:在p.p1中键入一个空格,在p.p2中键入5个空格。注:此时…

    2025年12月21日 好文分享
    000
  • html中id属性和name属性的区别是什么

    在html中,id属性和name属性都是提供标识符,表示html元素标签的。那么它们之间有什么区别?本篇文章就给大家简单比较一下id属性和name属性,介绍id属性和name属性之间的区别是什么,希望对大家有所帮助。 html中的id属性 我们使用id属性可以标识唯一的HTML元素,可以在在URL中…

    2025年12月21日 好文分享
    000
  • html网页选择使用哪种浏览器内核渲染的方法

    html网页如何选择使用哪种浏览器内核渲染?本篇文章就给大家介绍html网页选择使用哪种浏览器内核渲染的方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。【推荐教程:html视频教程】 众所周知,国内的浏览器基本都是双内核的(ie(Trident)+webkit);而且基本默认时都…

    好文分享 2025年12月21日
    000
  • HTML中的空格符号是什么

    在HTML中的空格符号有: 表示不断行的空白; 表示半个空白; 表示一个空白等 在平时我们写文章时遇到空格时都会直接输入空格键来达到空格的效果,但是在HTML代码中如果我们输入空格键就会被忽略,达不到空格的效果,今天就像大家介绍HTML中空格代码如何写,希望对大家有所帮助。 【推荐课程:HTML课程…

    2025年12月21日 好文分享
    000

发表回复

登录后才能评论
关注微信