美文网首页
css旋转动画

css旋转动画

作者: 小明童鞋的大哥的弟弟 | 来源:发表于2022-10-09 17:52 被阅读0次

title: 'css旋转动画'
date: 2022-10-09 16:38:09
tags:


image_0.2865459501379348.gif image_0.015742154289754007.gif
import React, { useState } from 'react';
import './rotatingMenu.scss';

const RotatingMenu = (props) => {
  const [isClick, setIsClick] = useState(false);
  return (
    <div className="rotatingMenu">
      <div
        className="rMenu"
        onClick={() => {
          setIsClick(!isClick);
        }}
      >
        <div className={`${isClick ? 'click' : ''}  rMenu_I`} />
      </div>
    </div>
  );
};

export default RotatingMenu;


css文件

.rotatingMenu {
  height: 100vh;
  background: rgb(255 255 0 / 12%);

  .rMenu {
    height: 100px;
    background: #c69797;
    position: relative;
  
    .rMenu_I {
      width: 40px;
      height: 5px;
      display: block;
      z-index: 1;
      border-radius: 2.5px;
      background: rgba(255, 255, 255, 0.7);
      transition: transform 0.5s, top 0.5s;
      position: absolute;
      top: 0;
      bottom: 0;
      right: 0;
      left: 0;
      margin: auto;
    }
    .rMenu_I::after {
      width: 40px;
      height: 5px;
      display: block;
      z-index: 1;
      border-radius: 2.5px;
      background: rgba(255, 255, 255, 0.7);
      transition: transform 0.5s, top 0.5s;
      content: "";
      position: absolute;
      left: 0;
      top: -10px;
    }
    .rMenu_I::before {
      width: 40px;
      height: 5px;
      display: block;
      z-index: 1;
      border-radius: 2.5px;
      background: rgba(255, 255, 255, 0.7);
      transition: transform 0.5s, top 0.5s;
      content: "";
      position: absolute;
      left: 0;
     top: 10px;
    }
    .click {
        background: transparent;
    }
    .click::after {
      transform: rotate(-45deg);
      top: 0;
      width: 40px;
    }
    .click::before {
      transform: rotate(45deg);
      top: 0;
      width: 40px;
    }
  }
}


实现思路
1.首先实现三条线,其实只是div出中间的线,上线两条线是通过伪类 ::after和::before创建的,两条线一条top 10px,一条-10px,这样三条线就创建好了
2.肯定是要用到动画,这里用的是transition和transform ,transition可以帮我们实现动画,transform是用来实现元素的旋转
3.具体的动画实现:
a.点击元素后,中间的线通过背景为transparent,让他变为透明的
b.上面那条线也就是after创建的那个,通过transform: rotate(-45deg)让他逆时针旋转45度
c.同理下面那条线,让他瞬时间旋转45度,这样就会最终就有一个交叉的效果
d.这时候你就会发发现这个交叉,并没有完全变成'X',这时候就需要我们把它俩的top设置为0,也就是让他俩位于中间线那个位置。


至于元素的恢复
则是通过 transition: transform 0.5s, top 0.5s;
通过transform和top进行恢复动画

相关文章

  • 第一篇

    使用css实现旋转,缩放,阴影,动画的效果。

  • CSS变形、过渡和动画

    CSS实战手册 CSS变形,过渡和动画 1 变形 transform 1.1 旋转:rotate transfor...

  • CSS3实现旋转陀螺及灯光文字阴影动画

    旋转陀螺 html部分: css部分: 灯光文字阴影动画 html部分: css部分: js部分:

  • CSS-简单动画样式-2018.07.05

    CSS 简单动画 图片旋转和移动 插入播放器 图片旋转 animation 命令(animation:命名 时间 ...

  • CSS 动画指南

    CSS3动画(简单动画的实现,如旋转等)** 依靠CSS3中提出的三个属性:transition、transfor...

  • css旋转动画

    title: 'css旋转动画'date: 2022-10-09 16:38:09tags: css文件 实现思路...

  • CSS动画效果

    css动画样式链接:https://www.jianshu.com/p/9cae70cec921;css卡片旋转链...

  • 前端(八)

    条件Hack css过渡动画 transition运动曲线 图片文字遮罩 变形 元素旋转

  • css优化

    css动画优化 1 .动画的实现,改变位置,大小,旋转,透明度2 .css图层的概念。渲染dom的时候,浏览器分为...

  • CSS下镜像翻转(水平/垂直翻转)

    css下镜像翻转两种写法: 利用css动画属性rotate旋转来实现: 此处,rotateY(180deg) 这里...

网友评论

      本文标题:css旋转动画

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