您的位置:首页 > Web前端 > > 正文

视图平滑动画(菜单栏 “三” 变形为“X”css3过渡动画)

更多 时间:2022-01-22 01:53:32 类别:Web前端 浏览量:1833

视图平滑动画

菜单栏 “三” 变形为“X”css3过渡动画

最近要模仿一个页面,其中有一个效果就是 三 菜单栏 变形为 X 的效果,

效果如下:

视图平滑动画(菜单栏 “三” 变形为“X”css3过渡动画)

图(1)初始效果

视图平滑动画(菜单栏 “三” 变形为“X”css3过渡动画)

图(2)鼠标悬浮效果

思路:

三横的实现:传统可以用3个span标签来实现,但有一个更加巧妙的方法,1个标签就能实现三横效果,根据张鑫旭大神分享的利用padding用一个标签实现 三 的效果,大概原理是上中下横线分别用 border-top,背景,border-bottom。用background-clip:content-box剪裁,最后用padding上下撑开,实现三横的视觉效果,

X的实现:而变形的X也不需要额外的标签,利用其自身after before伪类 transform旋转,偏移实现。需要耐心的调整角度。

要注意的是,用padding撑开实现三横效果,触发不太灵敏,最好用一个标签包裹着icon标签,在包裹层做:hover触发

下面是代码

  • <!doctype html>
    <html lang="en">
    <head>
     <meta charset="UTF-8" />
     <title>Document</title>
     <style type="text/css">
      .icon{
       width: 50px;
       height: 10px;
       padding: 10px 0;
       border-top: 10px solid #000;
       border-bottom: 10px solid #000;
       background: #000;
       background-clip: content-box;
      }
      .fa{   
       cursor: pointer;
       width: 50px;
       height: 50px;
       transition: .3s ease;
      }
      .fa:hover>.icon{
       border: 0;
       background: none;
      }
      .icon:before,.icon:after{
       position: absolute;
       content: "";
       width: 60px;
       height: 60px;
       transition: .3s ease;
       -webkit-transition: .3s ease;
       opacity: 0;
      }
      .icon:before{
       top: -5px;
       border-bottom: 10px solid #000;
      }
      .icon:after{
       top: 15px;
       border-top: 10px solid #000;
      }
      .fa:hover>.icon:before{
       opacity: 1;
       transform: rotate(135deg) translateX(5px) translateY(-25px);
       -webkit-transform: rotate(135deg) translateX(5px) translateY(-25px);
      }
      .fa:hover>.icon:after{
       opacity: 1;
       transform: rotate(-135deg) translateX(20px) translateY(39px);
       -webkit-transform: rotate(-135deg) translateX(20px) translateY(39px);
      }
     </style>
    </head>
    <body>
     <li class="fa">
      <li class="icon"></li>
     </li>
     <script type="text/javascript">
     </script>
    </body>
    </html>
    
  • 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持开心学习网!

    标签:过渡动画 CSS3