HTML和CSS动画:为鼠标经过效果注入灵魂!附源码!

简介: HTML和CSS动画:为鼠标经过效果注入灵魂!附源码!

效果



🌟 鼠标经过效果是一种提升用户体验和增加页面互动性的常用技术。通过HTML和CSS动画,我们可以创造出各种酷炫的鼠标经过动画效果,让元素在用户交互时产生动态响应。本文将向您展示如何利用HTML和CSS打造一系列创新的鼠标经过动画效果,并提供完整的源码供您直接复制和使用,让您的网页设计更加生动和有趣。



完整代码


HTML:

   

<div id="box">
        <button>
            <span class="text">Hello World</span>
            <span class="spin"></span>
        </button>
    </div>

 css

body,
html {
    display: flex;
    padding: 0;
    background-image: radial-gradient(circle at 50% 0%,
            rgb(67, 54, 74) 16.4%,
            rgb(47, 48, 67) 68.2%,
            rgb(27, 23, 36) 99.1%);
    height: 100vh;
    overflow: hidden;
}
div#box {
    height: 100vh;
    width: 100vw;
    display: flex;
    align-items: center;
    justify-content: center;
}
:root {
    --glow-hue: 222deg;
    --shadow-hue: 180deg;
    --spring-easing: linear(0, 0.002, 0.01 0.9%, 0.038 1.8%, 0.156, 0.312 5.8%, 0.789 11.1%, 1.015 14.2%,
            1.096, 1.157, 1.199, 1.224 20.3%, 1.231, 1.231, 1.226, 1.214 24.6%,
            1.176 26.9%, 1.057 32.6%, 1.007 35.5%, 0.984, 0.968, 0.956, 0.949 42%,
            0.946 44.1%, 0.95 46.5%, 0.998 57.2%, 1.007, 1.011 63.3%, 1.012 68.3%,
            0.998 84%, 1);
    --spring-duration: 1.33s;
}
@property --spin {
    syntax: "<angle>";
    inherits: false;
    initial-value: 33deg;
}
@keyframes spin {
    0% {
        --spin: 0deg;
    }
    100% {
        --spin: 360deg;
    }
}
@keyframes shine {
    0% {
        opacity: 1;
    }
    15% {
        opacity: 1;
    }
    55% {
        opacity: 1;
    }
    100% {
        opacity: 0;
    }
}
@keyframes text {
    0% {
        background-position: 100% center;
    }
    100% {
        background-position: -100% center;
    }
}
button {
    
    font-weight: 600;
    /* background-image: linear-gradient(90deg, #fcecfe, #fbf6e7, #e6fcf5); */
    background-image: linear-gradient(315deg,
            #1bbdcc -10%,
            #3142df 50%,
            #75b4e0 110%);
    padding: .8em 1.4em;
    position: relative; color:#333;
    isolation: isolate;
    box-shadow: 0 2px 3px 1px hsl(var(--glow-hue) 50% 20% / 50%), inset 0 -10px 20px -10px hsla(var(--shadow-hue), 10%, 90%, 95%);
    border-radius: 0.66em;
    scale: 1;
    transition: all var(--spring-duration) var(--spring-easing);
}
button:hover:not(:active),
button.active {
    transition-duration: calc(var(--spring-duration)*0.5);
    scale: 1.2;
    box-shadow: 0 4px 8px -2px hsl(var(--glow-hue) 50% 20% / 50%), inset 0 0 0 transparent;
}
button:active {
    scale: 1.1;
    transition-duration: calc(var(--spring-duration)*0.5);
}
.spin {
    position: absolute;
    inset: -40px;
    border-radius: inherit;
    mask-image: conic-gradient(from var(--spin, 0deg),
            transparent 0%,
            transparent 10%,
            black 36%,
            black 45%,
            transparent 50%,
            transparent 60%,
            black 85%,
            black 95%,
            transparent 100%);
    mask-size: cover;
    mix-blend-mode: plus-lighter;
    animation: spin 1s linear infinite both;
}
button:hover .spin::before,
button:hover .spin::after,
button.active .spin::before,
button.active .spin::after {
    opacity: 1;
    animation: shine 1.2s ease-in 1 forwards;
}
.spin::before,
.spin::after {
    transition: all 0.5s ease;
    opacity: 0;
    content: "";
    border-radius: inherit;
    position: absolute;
    mix-blend-mode: color;
    inset: 40px;
    pointer-events: none;
}
.spin::before {
    box-shadow: 0 0 3px 2px hsl(var(--glow-hue) 20% 95%),
        0 0 7px 4px hsl(var(--glow-hue) 20% 80%),
        0 0 13px 4px hsl(var(--glow-hue) 50% 70%),
        0 0 25px 5px hsl(var(--glow-hue) 100% 70%);
    z-index: -1;
}
.spin::after {
    box-shadow: inset 0 0 0 1px hsl(var(--glow-hue) 70% 95%),
        inset 0 0 2px 1px hsl(var(--glow-hue) 100% 80%),
        inset 0 0 5px 2px hsl(var(--glow-hue) 100% 70%);
    z-index: 2;
}
button .text {
    background-clip: text;
    background-color: var(--bg);
    background-image: linear-gradient(120deg, transparent, hsla(var(--glow-hue), 100%, 80%, 0.66) 40%, hsla(var(--glow-hue), 100%, 90%, .9) 50%, transparent 52%);
    background-repeat: no-repeat;
    background-size: 300% 300%;
    background-position: center 200%;
}
button:hover .text,
button.active .text {
    animation: text .66s ease-in 1 both;
}
目录
打赏
0
0
0
0
15
分享
相关文章
CSS 过渡和动画
CSS过渡和动画是用于为网页元素添加动态效果的两种重要技术
115 73
|
10天前
|
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
29 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
23天前
可爱狗狗的404动画HTML源码
可爱狗狗的404动画HTML源码
109 17
|
28天前
创意滑板动画404错误提示HTML源码
创意滑板动画404错误提示页面HTML源码
21 0
创意滑板动画404错误提示HTML源码
|
29天前
html5+svg太空人404动画模板源码
html5+svg太空人404动画模板源码
43 17
|
30天前
css3 svg制作404页面动画效果HTML源码
css3 svg制作404页面动画效果HTML源码
64 34
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
53 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
“弘五四,耀青春”程序创意获奖作品【html+css】
本作品以“青春筑梦,共创未来”为主题,采用动态龙元素展现青春活力与创新精神。页面设计简洁明快,色彩协调,突显年轻人积极向上的风貌。作品内容包括获奖截图、名字《时代扬新帆》及源代码分享。特别说明:禁止用于商业活动,可用于比赛和作业等开源场景。最后,作者表达了对五四精神的致敬与传承,强调了青春活力和创造力的重要性,并感谢评委和支持者。 **获奖感言摘录:** “获得这个奖项,对我们团队来说,既是认可也是激励。我们将继续努力,不断优化产品,为用户带来更好的体验,为社会贡献更多价值。”
33 2
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
126 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等