I have an button animation on hover that looks like this:
It is two div
s stacked on top of each other, then on hover a clip-path
is applied to hide the top div, showing the one on the bottom. The CSS is this
.wipe_point {
clip-path: polygon(-1% 0%, 101% 0%, 101% 100%, 50% 200%, -1% 100%);
transition: 0.5s ease;
}
.wipe_point:hover {
clip-path: polygon(-1% -170%, 101% -170%, 101% -70%, 50% 30%, -1% -70% );
}
My problem is that the :hover
is not detected on the clipped area. Meaning that if the mouse is not always within the "un-clipped" area the animation looks like this:
Question: How do I get the hover to still be detected in the clipped area? Thanks!!
I would do it differently using one element like below:
.box { font-size:20px; font-weight:bold; font-family:sans-serif; padding:15px 30px; display:inline-block; color:transparent; background: conic-gradient(from -60deg,black 120deg,#fff 0) top/100% 400%, conic-gradient(from -60deg,#0000 120deg,blue 0) top/100% 400%; -webkit-background-clip:text,padding-box; background-clip:text,padding-box; transition:1s; }.box:hover { background-position:bottom; }
<div class="box">Some Text</div>
The above will not work on Firefox so you can do like below
.box { font-size:20px; font-weight:bold; font-family:sans-serif; padding:15px 30px; display:inline-block; color:transparent; background:conic-gradient(from -60deg,black 120deg,#fff 0) top/100% 400%; -webkit-background-clip:text; background-clip:text; transition:1s; position:relative; }.box::before { content:""; position:absolute; z-index:-1; inset:0; background:conic-gradient(from -60deg,#0000 120deg,blue 0) top/100% 400%; transition:1s; }.box:hover, .box:hover::before{ background-position:bottom; }
<div class="box">Some Text</div>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.