我想做一个按钮,将在一个U形水平和这样做,我把一个白色的伪元素的顶部现有的按钮,但问题是,伪元素仍然是可点击的部分,它是在按钮的顶部。
在开始时,悬停时光标也发生了变化,但我通过将光标设置为auto来解决这个问题,因此光标变化不会发生在伪元素上,但单击事件仍然会被触发。
这是css代码和代码笔链接:https://codepen.io/SawanSunar24/pen/KKxQvWm?editors=1111
.btn {
border: none;
height: 60px;
background-color: #3b82f6;
border-radius: 0 30px 30px 0;
color: white;
padding-top: 5px;
padding-bottom: 5px;
padding-left: 40px;
padding-right: 20px;
position: relative;
overflow: hidden;
cursor: pointer;
}
.btn::before {
background-color: white;
border-radius: 0 100% 100% 0;
bottom: 0px;
left: -20px;
content: "";
display: block;
height: 60px;
cursor: auto;
position: absolute;
width: 40px;
}
我把各种其他元素放在按钮的顶部,但它们是不可点击的,这个问题/情况只发生在伪元素上。
如果有人能告诉我一个解决这个问题的方法,我将不胜感激,或者也许我只是很愚蠢,这是一个坏的做法,所以批评一个更好的方法也将是有益的。
谢谢你。
2条答案
按热度按时间guicsvcw1#
This answer is for the opposite problem,但是,可以应用相同的解决方案,并让您的事件处理程序检查
event.target
;如果是子元素,则不执行任何操作。CodePen
sigwle7e2#
在我最初的回答中,我说你只需要在你的before元素中添加
pointer-events: none;
。正如在另一个回答中指出的,这不会有你想要的效果。下面是一个片段,展示了你如何使用clip-path来代替。工作片段: