html - 触发 css:hover 仅在其行高区域
问题描述
我正在构建一个带有一些箭头的地图,当用户单击它们时,这些箭头会触发一些操作。
我正在使用类似于这个 ^ 的字符来绘制箭头,我想要的是当用户将鼠标移到它上面时改变它的颜色。我需要的是避免在鼠标悬停在字符下方时触发事件,我将 line-height 属性变小并在顶部添加了一些填充,因此调整背景区域以仅覆盖字符形状,它看起来像这个:
背景区域的高度降低了
问题是:悬停,它继续触发“原始字符区域”,它忽略了 line-height 属性,如果您将鼠标移动到彩色区域下方,它将触发悬停并更改文本颜色。
我需要 :hover 属性仅在文本行高或彩色背景上触发。
这可能吗?
div{
color: white;
font-size: 40px;
line-height: 5px;
background-color: red;
padding-top: 12px;
width: 20px;
}
div:hover{
color:black;
}
<div>^</div>
解决方案
这确实很奇怪。
作为一种解决方案,我们可以完全删除 div 本身上的鼠标事件,并使用伪元素模拟 div(因此:hover
将触发伪元素而不是实际 div 本身)。
div{
color: white;
font-size: 40px;
line-height:5px;
background-color: red;
padding-top: 12px;
width: 20px;
height:5px;
pointer-events:none;
position:relative;
}
div::after{
width:100%;
height:100%;
display:block;
position:absolute;
top:0;
left:0;
content:"";
pointer-events:all;
}
div:hover{
color:black;
}
<div>^</div>
推荐阅读
- go - 使用 Sarama 单独或批量提交消息 - 用于 Go 的 kafka 客户端
- python - ModuleNotFoundError:没有名为“captcha.image”的模块;“验证码”不是一个包
- typo3 - TYPO3 + Fluid:如何使用 f:translate 作为部分参数?
- c++ - 在 C++ 中实现管道命令
- jmeter - POST 请求为 400,但 GET 工作正常
- javascript - 为什么只有在 React 中刷新页面后才能从 localStorage 获取正确的数据
- php - 如何使用内爆数据获取默认检查值
- python - 没有进入 if 语句中的所有 for 循环
- perl - grep 与“从这个到那个”触发器语义?
- c# - 验证 linq 选择表达式中的方法调用次数