为了账号安全,请及时绑定邮箱和手机立即绑定

css 漢堡排動畫變成X,按X再變回漢堡排?

css 漢堡排動畫變成X,按X再變回漢堡排?

人到中年有点甜 2019-03-20 10:19:59
css動畫一直是我想學的部分有大神可以分享一下如何做到「漢堡排動畫變成X,按X再變回漢堡排」?https://www.snapchat.com/snapchat手機版有一樣的效果,但就是偷不走
查看完整描述

2 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

打开网站-> f12 -> 开启响应设计模式 -> 点击这个图标观察class变化和相应的css变化 -> 直接把相应代码拷出来

通过改变class .hamburger-expanded 和 css transition 实现


<div class="header-container">

    <div class="header-hamburger">

        <span></span>

        <span></span>

        <span></span>

    </div>

<div>

.header-hamburger {

    display: block;

    width: 20px;

    height: 15px;

    line-height: 15px;

    position: relative;

    top: 14px;

    right: 15px;

    float: right;

    margin: 0;

    transform: rotate(0deg);

    cursor: pointer;

}


.header-hamburger span {

    display: block;

    position: absolute;

    height: 2.5px;

    width: 100%;

    background: rgb(38, 38, 38);

    box-sizing: border-box;

    border-radius: 1px;

    opacity: 1;

    left: 0;

    transform: rotate(0deg);

    transition: .25s ease-in-out;

    transition-property: transform, opacity;

}


.header-hamburger span:nth-child(1) {

    top: 0px;

    transform-origin: left center;

}


.header-hamburger span:nth-child(2) {

    top: 6px;

    transform-origin: left center;

}


.header-hamburger span:nth-child(3) {

    top: 12px;

    transform-origin: left center;

}


.hamburger-expanded .header-hamburger span:nth-child(1) {

    transform: rotate(45deg) translateY(-1.5px);

}

.hamburger-expanded .header-hamburger span:nth-child(2) {

    transform: scaleX(0);

    opacity: 0;

}

.hamburger-expanded .header-hamburger span:nth-child(3) {

    transform: rotate(-45deg) translateY(1px);

}


查看完整回答
反对 回复 2019-04-01
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

原先看到过类似的效果,你看看这个是你想要的吗?
codepen demo

Update:

body,

html,

div {

  background: #292a38;

  margin: 0;

  padding: 0;

  width: 100%;

  height: 100%;

  text-align: center;

}

svg {

  width: 200px;

  height: 150px;

  cursor: pointer;

  -webkit-transform: translate3d(0, 0, 0);

  -moz-transform: translate3d(0, 0, 0);

  -o-transform: translate3d(0, 0, 0);

  -ms-transform: translate3d(0, 0, 0);

  transform: translate3d(0, 0, 0);

}

path {

  fill: none;

  -webkit-transition: stroke-dashoffset 0.5s cubic-bezier(0.25, -0.25, 0.75, 1.25), stroke-dasharray 0.5s cubic-bezier(0.25, -0.25, 0.75, 1.25);

  -moz-transition: stroke-dashoffset 0.5s cubic-bezier(0.25, -0.25, 0.75, 1.25), stroke-dasharray 0.5s cubic-bezier(0.25, -0.25, 0.75, 1.25);

  -o-transition: stroke-dashoffset 0.5s cubic-bezier(0.25, -0.25, 0.75, 1.25), stroke-dasharray 0.5s cubic-bezier(0.25, -0.25, 0.75, 1.25);

  -ms-transition: stroke-dashoffset 0.5s cubic-bezier(0.25, -0.25, 0.75, 1.25), stroke-dasharray 0.5s cubic-bezier(0.25, -0.25, 0.75, 1.25);

  transition: stroke-dashoffset 0.5s cubic-bezier(0.25, -0.25, 0.75, 1.25), stroke-dasharray 0.5s cubic-bezier(0.25, -0.25, 0.75, 1.25);

  stroke-width: 40px;

  stroke-linecap: round;

  stroke: #a06ba5;

  stroke-dashoffset: 0px;

}

path#top,

path#bottom {

  stroke-dasharray: 240px 950px;

}

path#middle {

  stroke-dasharray: 240px 240px;

}

.cross path#top,

.cross path#bottom {

  stroke-dashoffset: -650px;

  stroke-dashoffset: -650px;

}

.cross path#middle {

  stroke-dashoffset: -115px;

  stroke-dasharray: 1px 220px;

}

codePen可以查看编译后的CSS和JS:

https://img1.sycdn.imooc.com//5ca17d100001fb6f06830217.jpg

https://img1.sycdn.imooc.com//5ca17d110001f2f006350200.jpg



查看完整回答
反对 回复 2019-04-01
  • 2 回答
  • 0 关注
  • 503 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号