• 技术文章 >web前端 >css教程

    如何使用纯CSS实现切换按钮时背景的悬停动画效果

    不言不言2018-08-20 10:08:07原创1344
    本篇文章给大家带来的内容是关于如何使用纯CSS实现切换按钮时背景的悬停动画效果,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    效果预览

    341040062-5b79e47e984b9_articlex.gif

    源代码下载

    https://github.com/comehope/front-end-daily-challenges

    代码解读

    定义 dom,导航中包含一个无序列表,列表中有一个列表项:

    <nav>
        <ul>
            <li>home</li>
        </ul>
    </nav>

    居中显示:

    body {
        margin: 0;
        height: 100vh;
        display: flex;
        align-items: center;
        justify-content: center;
        background-color: teal;
    }

    隐藏列表项前端的引导符号:

    nav ul {
        padding: 0;
        list-style-type: none;
    }

    定义按钮容器尺寸:

    :root {
        font-size: 10px;
    }
    
    nav li {
        width: 20rem;
        height: 7rem;
    }

    设置文字样式:

    nav li {
        font-size: 20px;
        text-align: center;
        line-height: 7rem;
        font-family: sans-serif;
        text-transform: uppercase;
        letter-spacing: 1px;
    }

    用伪元素制作 2 个背景色块:

    nav li {
        position: relative;
    }
    
    nav li::before,
    nav li::after {
        content: '';
        position: absolute;
        width: inherit;
        height: inherit;
        top: 0;
        left: 0;
    }
    
    nav li::before {
        background-color: white;
        z-index: -1;
    }
    
    nav li::after {
        background-color: goldenrod;
        z-index: -2;
    }

    让后面的背景块向右下偏移,并且让前面的背景块投放阴影,增加立体效果:

    nav li::before {
        box-shadow: 0.2rem 0.2rem 0.5rem rgba(0, 0, 0, 0.2);
    }
    
    nav li::after {
        transform: translate(1.5rem, 1.5rem);
    }

    接下来增加悬停效果。

    设置缓动时间,主元素和伪元素都将有缓动效果:

    nav li {
        transition: 0.3s;
    }
    
    nav li::before,
    nav li::after {
        transition: 0.3s;
    }

    当悬停时,2 个背景色块的颜色互换:

    nav li:hover::before {
        background-color: goldenrod;
    }
    
    nav li:hover::after {
        background-color: white;
    }

    同时,后面的背景色块的向左上方移动,按钮整体则向右下方移动:

    nav li:hover {
        transform: translate(1.5rem, 1.5rem);
    }
    
    nav li:hover::after {
        transform: translate(-1.5rem, -1.5rem);
    }

    同时,再让文本在悬停时变色:

    nav li:hover {
        color: white;
    }

    再增加几个按钮:

    <nav>
        <ul>
            <li>home</li>
            <li>products</li>
            <li>services</li>
            <li>contact</li>
        </ul>
    </nav>

    最后,增加按钮之间的间距:

    nav li {
        margin: 3rem;
    }

    大功告成!

    相关推荐:

    如何使用CSS实现一只鸭子头(附代码)

    如何使用纯CSS实现一只黑色的愤怒小鸟(附代码)

    以上就是如何使用纯CSS实现切换按钮时背景的悬停动画效果的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:如何使用CSS实现一只鸭子头(附代码) 下一篇:css中!important有什么用处?css中!important的作用
    Web大前端开发直播班

    相关文章推荐

    • 实例详解css3特效之3D翻牌效果• CSS可以做的几个令你叹为观止的实例分享_经验交流• 如何使用CSS3画出一个叮当猫_CSS/HTML• CSS绘制五角星_CSS/HTML• css实现气泡框效果(实例加图解)_CSS/HTML• CSS小例子(只显示下划线的文本框,像文字一样的按钮)_经验交流

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网