自定义汉堡按钮

效果图如下

hanbao.gif

首先是HTML部分的代码,很简单。

<div class="hamburger">
        <span class="line"></span>
        <span class="line"></span>
        <span class="line"></span>
    </div>

接下来就是重点了,CSS代码部分走起。

<style>
        .hamburger { /*这个不重要,可有可无 主要是针对导航栏布局时,汉堡按钮的位置*/
            padding-top: 6px;
            -webkit-transition: all 0.3s ease-in-out;
            -o-transition: all 0.3s ease-in-out;
            transition: all 0.3s ease-in-out;
        }
        .hamburger .line { /*定义三条红线,加上过渡,准备动*/
            width: 30px;
            height: 2px;
            background-color: #fe1111;
            display: block;
            margin: 8px auto;
            -webkit-transition: all 0.3s ease-in-out;
            -o-transition: all 0.3s ease-in-out;
            transition: all 0.3s ease-in-out;
        }
        .is-active { /*通过js添加类名,给汉堡按钮加上缩放动画*/
            animation: smallbig 0.6s forwards;
        }
        .is-active .line:nth-child(1),
        .is-active .line:nth-child(2),
        .is-active .line:nth-child(3) { /*三条线加点延时,没什么卵用*/
            -webkit-transition-delay: 0.2s;
            -o-transition-delay: 0.2s;
            transition-delay: 0.2s;
        }
    
        .is-active .line:nth-child(2) { /*延时0.2s之后,进行过渡动画,第二句话是做兼容处理*/
            opacity: 0;
            filter: alpha(opacity=0);
        }
        .is-active .line:nth-child(1) {  /*第一条线位移到中心位置,顺时针旋转45°*/
            -webkit-transform: translateY(8px) rotate(45deg);
            -ms-transform: translateY(8px) rotate(45deg);
            -o-transform: translateY(8px) rotate(45deg);
            transform: translateY(8px) rotate(45deg);
        }
        .is-active .line:nth-child(3) { /*第三条线位移到中心位置,逆时针旋转45°*/
            -webkit-transform: translateY(-12px) rotate(-45deg);
            -ms-transform: translateY(-12px) rotate(-45deg);
            -o-transform: translateY(-12px) rotate(-45deg);
            transform: translateY(-12px) rotate(-45deg);
        }
        @keyframes smallbig { /*定义缩放的动画,50%的时候缩放为0*/
            0%,
            100% {
                -webkit-transform: scale(1);
                -ms-transform: scale(1);
                -o-transform: scale(1);
                transform: scale(1);
            }
            50% {
                -webkit-transform: scale(0);
                -ms-transform: scale(0);
                -o-transform: scale(0);
                transform: scale(0);
            }
        }
    </style>

最后,来一个简单的js,搞定。

<script>
        $(document).ready(function () {
            $(".hamburger").click(function () {
                $(this).toggleClass("is-active");
            });
        });
    </script>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,825评论 1 45
  • 以下文章转载自知乎,暗灭-京华九月秋近寒,浮沉半生影长单. 暗灭 京华九月秋近寒,浮沉半生影长单 10,850 人...
    ve追风_685b阅读 4,192评论 1 15
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,163评论 1 92
  • $HTML, HTTP,web综合问题 1、前端需要注意哪些SEO 2、 的title和alt有什么区别 3、HT...
    Hebborn_hb阅读 4,782评论 0 20
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,853评论 0 3

友情链接更多精彩内容