美文网首页
transiton 正反动画

transiton 正反动画

作者: IamaStupid | 来源:发表于2020-06-01 17:28 被阅读0次
image.png

1. 目标:点击icon,中间的横线收缩,然后,上面2个线条和下面2个线条旋转,组成一个一个叉; 再点击图标,上面2个线条和下面2个线条旋转恢复成平行线状态,中间收缩的线条重新延展开,恢复初始宽度。

// dom
<div class="tag-list-box" id="tagListIconBox">
        标签
        <div class="list-icon-box">
          <div class="bit-1"></div>
          <div class="bit-2"></div>
          <div class="bit-3"></div>
        </div>
      </div>

// script
<script>
      var $boxDom = document.getElementById('tagListIconBox')
      $boxDom.addEventListener("click", function(){
        var classList = $boxDom.classList
        if ( classList && [...classList].includes('open')) {
          classList.remove('open')
        } else {
          classList.add('open')
        }
      }, false)
    </script>
// style
.tag-list-box {
        position: relative; right: 0; top: 0; background: #f5f5f5; color: #ea6f5a;;
        border: 1px solid #ea6f5a;; border-radius: 3px; padding:0 10px; cursor: pointer;
        box-sizing: border-box; height: 42px; line-height: 42px; width: 80px;
      }

      #tagListIconBox {
        font-size: 13px; font-weight: bold;
      }
      .list-icon-box {
        position: absolute; width: 22px;height: 22px; right: 10px; top: 50%; margin-top: -11px;
      }
      .bit-1, .bit-2, .bit-3 {
        height: 4px; width: 100%; position: absolute; left: 0;
      }
      .bit-1 {
        top: 0;
      }
      .bit-3 {
        bottom: 0;
      }
      .bit-2 {
        top: 50%; margin-top: -2px; left: 50%; transform: translateX(-50%);
        /* 这段动画 和 open 状态的动画 执行先后是相反的 */
        transition:transform 0.5s, width 0.8s 0.8s;
      }
      .bit-1::before, .bit-1::after, .bit-3::before, .bit-3::after, .bit-2 {
        background: #ea6f5a;
      }
      .bit-1::before, .bit-1::after, .bit-3::before, .bit-3::after {
        content: ''; display: block;width: 50%; height: 100%; position: absolute;top:0;
        /* 这段动画 和 open 状态的动画 执行先后是相反的 */
        transition: transform 0.5s;
      }
      .bit-1::before, .bit-3::before{
        left: 0; transform-origin: 0 50%;
      }
      .bit-1::after, .bit-3::after {
        left: 50%; transform-origin: 100% 0;
      }
      .open .bit-2 {
        width: 4px; transform: translateX(-50%) rotate(45deg);
      }
      .open .bit-1::before {
        transform: rotate(45deg);
        top: 0px;
        left: 2px;
      }
      .open .bit-1::after {
        transform: rotate(-45deg) translate3d(-3px, -2px, 0);;
      }
      .open .bit-3::before {
        transform: rotate(-45deg);
        left: 2px;
      }
      .open .bit-3::after {
        transform: rotate(45deg) translate3d(-1px, 1px, 0);
      }
      .open .bit-2 {
        /* 这段动画 和 非open 状态的动画 执行先后是相反的 */
        transition:transform 0.5s 0.8s, width 0.8s;
      }
      .open .bit-1::before,.open .bit-1::after,.open .bit-3::before,.open .bit-3::after {
        /* 这段动画 和 非open 状态的动画 执行先后是相反的 */
        transition: transform 0.5s 1s;
      }

相关文章

  • transiton 正反动画

    1. 目标:点击icon,中间的横线收缩,然后,上面2个线条和下面2个线条旋转,组成一个一个叉; 再点击图标,上面...

  • CSS3动画效果

    基础 transiton使用

  • nuclear transiton

  • 约翰费雪个人转型曲线

    此文为翻译 《 The Process of Transiton Curve -John Fisher》 焦虑 意...

  • CSS3新特性

    transiton(过渡)transition: css属性, 花费时间,效果曲线(默认ease),延迟时间(默认...

  • Android 正反面视图动画切换

    今天做到一个模块,需要做一个控件,能够正反面都有视图,点击就能翻转切换的那种(对对对,就是你想的那种!)。 好好思...

  • 动态添加的元素transiton失效

    乍一看没啥问题,创建元素后append到box元素,再设opacity为1,class li,其中有设trans...

  • 正反

    人间独来新奇意,真假难辨正与反。 彷徨呐喊无人问,得道难带忠和奸。

  • 正反

    月儿想挂在屋檐, 寺园想驻在月弯。 铜镜叠加重叠反射铸金屋, 金碧暗淡氧化收敛似铜片, ...

  • 正反

    真假对错虚实

网友评论

      本文标题:transiton 正反动画

      本文链接:https://www.haomeiwen.com/subject/qfpszhtx.html