第一种自己写的,下面的第二种是网上的用一个span使用做出来的

HTML

<div class="box"><!--chang用来判断是否变换-->
            <span class="s1"></span>
            <span class="s2"></span>
            <span class="s3"></span>
        </div>

CSS

*{
    margin: 0px;
    padding: 0px;
}
.box{
    width: 50px;
    height: 50px;
    margin: 100px auto 0px;
    border: 1px solid saddlebrown;
    background-color: rgba(0,0,0,.8);
    position: relative;
    
    
}

.box span{
    position: absolute;
    display:block;
    width: 50px; height: 1px;
    border: 1px solid #FFFFFF;
    background-color: #FFFFFF;
    left: 0; right: 0; top: 0; bottom: 0;
    margin: auto;/*用来达到水平垂直,居中*/
    transition: transform .3s ease;
    
}

/*这里有个问题就是在格式高宽同时设置了margin:auto时候top等属性的移动的时候是2被的数值*/
.box .s1{
    top:-47px;/*(重要)这里为什么是-50px,而不是-25px,因为设置了margin:auto,解析每当我的top上升了2px,也就是说下面多了2px,因为margin的存在就会分1px去上面所以感觉就是向上移了1px*/
}
.box .s2{

}
.box .s3{
     top:47px;
}
.box .s1rotate{
    -moz-transform-origin: 30 0; /*以中兴为旋转点,这里可以不用写英文默认就是以中心点旋转*/
    -webkit-transform-origin:30 0;
    -moz-transform-origin: 30 0;
    transform:rotate(45deg);
}
.box .s2translate{   /*下面2个展现方法一个是隐藏中的线 ,一个是位移出去的*/
    /*transform: scale(0); *//*这个是隐藏*/
    transform: translateX(-55px) ;/*这个是位移*/
}
.box .s3rotate{
    
    -moz-transform-origin: 30 0;
    -webkit-transform-origin:30 0;
    -moz-transform-origin: 30 0;
    transform:rotate(-45deg);
}

js

var box =  document.querySelector(".box");
        var s1 = document.querySelector(".s1");
        var s2 = document.querySelector(".s2");
        var s3 = document.querySelector(".s3");//在这里必须放在全局为由去除.S1一但去除那么这里的代码就没有用了
        box.onclick = function(){
            //用与判断不同是否已经变化的情况    
            if(this.className.indexOf("chang") > -1){ //判段当该改变了,执行true
                s1.classList.add("s1");
                s3.classList.add("s3");
                s1.classList.remove("s1rotate");
                s2.classList.remove("s2translate");
                s3.classList.remove("s3rotate");
                this.classList.remove("chang");//去除
            }else{
                s1.classList.add("s1rotate");
                s2.classList.add("s2translate");
                s3.classList.add("s3rotate");
                s1.classList.remove("s1");
                s3.classList.remove("s3");
                this.classList.add("chang");//增加
            }
            
        }

/*第二种的使用*/

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
    span {
      margin: 15% auto;
      
      width: 45px;
      height: 45px;
      position: relative;
      display: block;
      width: 1.5em;
      height: 0.25em;
      background: #E04681;
      border-radius: 3px;
      cursor: pointer;
      transition: transform .2s ease;
    }
    span:before, span:after {
      border-radius: 3px;
      transition: transform .3s ease;
    }
    span:before {
      content: '';
      display: block;
      position: absolute;
      width: 1.5em;
      height: 0.25em;
      top: -0.5em;
      background: #E04681;
    }
    span:after {
      content: '';
      display: block;
      position: absolute;
      width: 1.5em;
      height: 0.25em;
      top: 0.5em;
      background: #E04681;
    }
    span.close {
      width: 45px;
      height: 45px;
      margin: 15% auto;
      /*left: 10px;*/
      position: relative;
      display: block;
      width: 0;
      height: 0;
      background: transparent;
      transform: rotate(-180deg);
    }
    span.close:before, span.close:after {
      transition: transform .3s ease;
    }
    span.close:before {
      content: '';
      display: block;
      position: absolute;
      width: 1.5em;
      height: 0.25em;
      top: 0;
      background: #E04681;
      transform: rotate(-45deg);
    }
    span.close:after {
      content: '';
      display: block;
      position: absolute;
      width: 1.5em;
      height: 0.25em;
      top: 0;
      background: #E04681;
      transform: rotate(45deg);
    }
    </style>
    </head>
    <body>
        <span class="sdasd sdasdaa"></span>
        <script>
            var btn = document.querySelector("span");
            btn.onclick = function(){
                
                if(this.className.indexOf('close')>-1?true:false){
                    this.classList.remove("close");
                }else{
                    this.classList.add("close");
                }
                console.log(this.className);
                
            }
        </script>
    </body>
</html>

汉堡按钮的制作以及其中的问题相关推荐

  1. 汉堡按钮html写法,ProtoPie 详解 — 汉堡按钮制作

    原标题:ProtoPie 详解 - 汉堡按钮制作 每周一期的 ProtoPie 详解教程又来啦,上期马克笔设计留学的MUzi老师主要介绍了 ProtoPie 的交互动作原理<ProtoPie详解 ...

  2. 利用Bootstrap制作汉堡按钮(header部分)

    页面展示:本次网页header部分的页面效果. 技术要求:Bootstrap布局容器.Bootstrap导航栏 制作汉堡按钮的固定写法: 同时需要安装Bootstrap下载安装,下载地址:https: ...

  3. 使用Boostrap制作导航栏和汉堡按钮

    导航栏制作 使用Boostrap制作基础导航栏主要分为以下步骤: 1.事先引入jquery.js.boostrap.min.js和boostrap.min.css文件. 2.添加一个<div&g ...

  4. UI设计素材|汉堡按钮/菜单

    汉堡按钮是隐藏菜单的按钮.单击或点击它时,菜单会展开. 汉堡菜单 这种菜单(以及按钮)的名称由于它的形状由三条水平线组成,看起来像典型的汉堡包.今天,它是一种广泛使用的移动端页面布局的互动元素 ; 关 ...

  5. 纯干货 | UI界面中按钮设计汉堡按钮\菜单

    汉堡按钮 汉堡菜单按钮(动画) 汉堡按钮 它是隐藏菜单的按钮.单击或点击它时,菜单会展开. 美丽的汉堡菜单 美丽的汉堡动画菜单 汉堡动画菜单 这种菜单(以及按钮)的名称由于它的形状由三条水平线组成,看 ...

  6. ps制作html图标素材,PS按钮图标制作

    PS按钮图标制作教程:设计简洁风格的半透明科技感按钮图标素材. 3.拉两条参照线.按Ctrl + R 调出标尺,然后用移动工具分别拉一条水平和垂直的参照线,如下图. 4.在工具箱选择"椭圆选 ...

  7. 防封链接,无投诉按钮链接,地推链接制作,活动链接制作,防封无投诉按钮链接制作方法。

    防封链接,无投诉按钮链接,地推链接制作,活动链接制作,防封无投诉按钮链接制作方法. -->查看制作方法 无投诉链接,微信防封链接

  8. html把保留图片改为提交按钮,如何制作图片按钮,并为图片按钮添加提交表单和重置表单功能...

    网页中有表单,表单的默认按钮样式不是很好看,很多人为了美观使用图片做按钮. 今天中国在 一.图片按钮的制作方法 1. 定义图像形式的提交按钮. 2.用CSS把图片设为按钮的背景 3.作用,设置其bac ...

  9. QT程序按钮效果制作

    QT程序按钮效果制作 QT Creator下,建空GUI项目,添加一个Widget,然后设计界面: 最下面的是Widget,上一层放一个frame,用lineEdit,pushButton排列成这效果 ...

最新文章

  1. mysql参数文件选项组_my.cnf文件关于组选项的总结
  2. 【Android NDK 开发】JNI 方法解析 ( C/C++ 设置 Java 对象字段 | 查找字段 | 设置字段 )
  3. Qt5.5.0环境下的mingw编译dcmtk 3.6.1_20150924
  4. GraphQL入门之进一步了解GraphQL
  5. php从内存中获取源码_PHP源码分析之变量的存储过程分解
  6. 用SQL Server 监控 OS Server 的Task Management信息
  7. VScode 知识点查阅
  8. 编译fastdfs报错Makefile:59: recipe for target 'fdfs_monitor' failed
  9. java有几大对象_一个 Java 对象到底有多大?
  10. Django 国际化和本地化
  11. shell脚本编程基础(三)
  12. 深入浅出GAMP算法(中): GAMP
  13. Typora 下载并安装
  14. power designer mysql_powerdesigner下载
  15. Liunx 安装 phpStudy
  16. 手撕永磁同步电机:foc(clark、park、ipark)变换、电机数学模型解耦过程推导
  17. 一图看清《基督山伯爵》人物关系
  18. 为什么用功率谱密度来描述随机信号?
  19. win10彻底卸载JDK
  20. 看PDF时点击书签页面变小的解决方法

热门文章

  1. 【CodeForces300D】Painting Square
  2. R语言使用t.test函数进行t检验、使用配对的t检验(paired)检验组间不独立数据的差异是否有统计学意义
  3. 计算机卡住了怎样恢复,电脑死机按什么键恢复
  4. Webpack4+Babel7+ES6兼容IE8
  5. 部署CITA和区块链浏览器以及智能合约
  6. 如何在Mac上卸载软件?用这三种方法简单、干净、快速
  7. D. Pythagorean Triples (math、暴力)
  8. 电脑的dns服务器未响应怎么解决,电脑DNS服务器未响应怎么解决
  9. 【英语流利说】让你发音更标准的十个窍门
  10. 微信小程序实例:开发showToast消息提示接口