前端 伪类元素如何添加点击事件

首先展示基础代码

<style>
    // 伪类元素父盒子
    .button-text {
       width: 300px;
       height: 200px;
       background-color: antiquewhite;
     }

    // 给元素添加 伪类元素
    .button-text::after {
       content: '';
       width: 30px;
       height: 30px;
       background-color: red;
       display: block;
       transform: translateX(100px) translateY(100px);
    }
    </style>
</head>

<body>
    // 元素
    <div class="button-text"></div>
</body>

产生的效果如下:

        思考:如何让 红色方块点击后会有事件?

        利用事件冒泡原则

        当我给盒子添加 点击事件的时候 他会事件冒泡到父元素上,

        所以 给父元素点击事件,那么红色的方块也会触发事件

因此我们首先给父元素 添加点击事件

    const button = document.querySelector('.button-text')
    button.addEventListener('click', () => {
        console.log('被点击了');
    })

第二步 使用 pointer-events 这个属性 来控制这个元素是否可以触发事件

.button-text {
    // ....
    pointer-events: none;  // 禁止触发事件
}

.button-text::after {
    content: '';
    // ....

    pointer-events:all;  // 可以触发事件
}

        这样就可以达到 让伪元素添加事件的效果了。

        也可以避免组件冗余,添加类名即可

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 以下是一个简单的甘特图的HTML代码示例: ``` <!DOCTYPE html> <html> <head> <title>Gantt Chart</title> <style> table { border-collapse: collapse; width: 100%; } th, td { text-align: left; padding: 8px; border-bottom: 1px solid #ddd; } th { background-color: #f2f2f2; } .task { background-color: #4CAF50; color: white; position: relative; height: 40px; margin-bottom: 5px; } .task::before { content: ""; position: absolute; top: 0; left: 0; width: 0; height: 0; border-top: 20px solid transparent; border-bottom: 20px solid transparent; border-right: 20px solid #4CAF50; } .task span { position: absolute; left: 25px; top: 10px; } </style> </head> <body> <table> <tr> <th>Task</th> <th>Start Date</th> <th>End Date</th> </tr> <tr> <td> <div class="task"> <span>Task 1</span> </div> </td> <td>2023-02-18</td> <td>2023-02-21</td> </tr> <tr> <td> <div class="task"> <span>Task 2</span> </div> </td> <td>2023-02-22</td> <td>2023-02-26</td> </tr> <tr> <td> <div class="task"> <span>Task 3</span> </div> </td> <td>2023-02-27</td> <td>2023-03-01</td> </tr> </table> </body> </html> ``` 该示例使用了一个HTML表格来创建甘特图,其中每个任务都表示为一个具有样式的`div`元素。`::before`伪元素用于绘制表示任务时间范围的三角形,任务的名称通过一个`<span>`元素放置在任务条上。 注意,这只是一个简单的示例,并且可以进一步自定义和优化。 ### 回答2: 甘特图是一种用于展示项目进程、任务时间安排等的图表形式。在前端实现甘特图的HTML代码中,可以利用HTML、CSS和JavaScript技术进行实现。 首先,可以使用HTML来创建甘特图所需的基本结构。通过创建一个HTML容器元素,如<div>或者<canvas>,来容纳整个甘特图的内容。 接下来,可以使用CSS来定义甘特图内各个元素的样式。可以为容器元素设置宽度、高度以及背景颜色等基本样式,并使用CSS选择器为甘特图中的任务条目、任务名称、时间轴等元素设置样式。 在实现甘特图的任务条目时,可以通过使用HTML的<div>元素来表示每一个任务,并通过CSS样式设置宽度、高度和颜色等属性,以及定位每一个任务的位置。 在定位任务的不同起止时间上,可以使用CSS属性如left和right来控制任务条目的位置。定位可以使用百分比值或者像素值进行。 另外,在甘特图中,可以为每个任务元素添加一些交互特性。可以使用JavaScript来为任务元素添加事件监听器,如鼠标悬浮、点击等事件,以增强交互体验。 此外,还可以使用JavaScript来动态生成甘特图的数据。可以从后端获取项目的任务信息,并生成相应的HTML元素来表示任务条目。 总结起来,前端实现甘特图HTML代码的关键是通过HTML、CSS和JavaScript实现甘特图的基本结构、样式和交互功能。通过灵活运用这些技术,可以创建出美观、功能强大的甘特图。 ### 回答3: 甘特图是项目管理中常用的一种图表,用来展示项目在时间轴上的进度安排。要实现甘特图的HTML代码,可以按照以下步骤进行: 1. 创建一个HTML文件,并使用DOCTYPE声明,以及html、head和body标签。 2. 在head标签中,添加一个style标签,用于定义甘特图的样式。可以设置甘特图容器的宽度、高度,以及背景色等样式。 3. 在body标签中,使用div标签创建一个容器,用于放置甘特图。 4. 在style标签中,定义甘特图容器的样式。可以设置宽度和高度,以及其他样式。例如: ``` .gantt-container { width: 800px; height: 500px; background-color: #f2f2f2; } ``` 5. 使用JavaScript或jQuery等前端框架,获取需要展示的项目数据。可以使用数组对象来表示每个任务的开始时间、结束时间、持续时间等信息。 6. 根据获取的任务数据,使用div标签创建每个任务的条形表示,放置在甘特图容器中。可以根据任务的开始时间和持续时间计算出任务的位置和宽度,并设置对应的样式。 7. 设置每个任务条的样式,可以使用不同的颜色来表示不同的任务,也可以使用不同的状态来表示任务的进度。 8. 如果需要添加任务的标签或说明文字,可以使用span标签,并设置对应的样式。 9. 在页面加载完成时,将甘特图容器添加到body标签中,并显示出来。 以上就是实现甘特图的HTML代码的基本步骤。通过设置样式和使用任务数据,可以灵活地展示不同的甘特图,并方便地进行项目管理和进度监控。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值