CSS 实现图标左右晃动动画。模仿Steam端通知铃铛摆动动画

目标效果

模仿steam web端的通知铃铛动画,鼠标移入时图标左右摆动
在这里插入图片描述
效果如下
铃铛

实现代码

实现方式比较繁琐有更好实现方式欢迎留言评论

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>steam</title>
  <style>

    /*清除默认样式*/
    * {
      margin: 0;
      padding: 0;
    }

    .notice {
      width: 46px;
      height: 24px;
      line-height: 24px;
      text-align: center;
      background-color: #5c7e10;
      color: white;
      margin: 30px auto auto;
    }

    .notice .notice-icon {
      width: 14px;
    }

    .notice a {
      color: white;
    }

    .notice-ld:hover {
      /*原点位于元素的水平中心(center)和垂直顶部(top)位置*/
      transform-origin: center top;
      /* 0.3 秒内 匀速完成 2 次动画 */
      animation: left-Right-shaking 0.3s linear 2;

    }

    /*左右摇摆关键帧动画*/
    @keyframes left-Right-shaking {
      0% {
        transform: rotate(0deg);
      }
      1% {
        transform: rotate(1deg);
      }
      2% {
        transform: rotate(2deg);
      }
      3% {
        transform: rotate(3deg);
      }
      4% {
        transform: rotate(4deg);
      }
      5% {
        transform: rotate(5deg);
      }
      6% {
        transform: rotate(6deg);
      }
      7% {
        transform: rotate(7deg);
      }
      8% {
        transform: rotate(8deg);
      }
      9% {
        transform: rotate(9deg);
      }
      10% {
        transform: rotate(10deg);
      }
      11% {
        transform: rotate(11deg);
      }
      12% {
        transform: rotate(12deg);
      }
      13% {
        transform: rotate(13deg);
      }
      14% {
        transform: rotate(14deg);
      }
      15% {
        transform: rotate(15deg);
      }
      16% {
        transform: rotate(16deg);
      }
      17% {
        transform: rotate(17deg);
      }
      18% {
        transform: rotate(18deg);
      }
      19% {
        transform: rotate(19deg);
      }
      20% {
        transform: rotate(20deg);
      }
      21% {
        transform: rotate(21deg);
      }
      22% {
        transform: rotate(22deg);
      }
      23% {
        transform: rotate(23deg);
      }
      24% {
        transform: rotate(24deg);
      }
      25% {
        transform: rotate(25deg);
      }
      26% {
        transform: rotate(24deg);
      }
      27% {
        transform: rotate(23deg);
      }
      28% {
        transform: rotate(22deg);
      }
      29% {
        transform: rotate(21deg);
      }
      30% {
        transform: rotate(20deg);
      }
      31% {
        transform: rotate(19deg);
      }
      32% {
        transform: rotate(18deg);
      }
      33% {
        transform: rotate(17deg);
      }
      34% {
        transform: rotate(16deg);
      }
      35% {
        transform: rotate(15deg);
      }
      36% {
        transform: rotate(14deg);
      }
      37% {
        transform: rotate(13deg);
      }
      38% {
        transform: rotate(12deg);
      }
      39% {
        transform: rotate(11deg);
      }
      40% {
        transform: rotate(10deg);
      }
      41% {
        transform: rotate(9deg);
      }
      42% {
        transform: rotate(8deg);
      }
      43% {
        transform: rotate(7deg);
      }
      44% {
        transform: rotate(6deg);
      }
      45% {
        transform: rotate(5deg);
      }
      46% {
        transform: rotate(4deg);
      }
      47% {
        transform: rotate(3deg);
      }
      48% {
        transform: rotate(2deg);
      }
      49% {
        transform: rotate(1deg);
      }
      50% {
        transform: rotate(0deg);
      }
      51% {
        transform: rotate(-1deg);
      }
      52% {
        transform: rotate(-2deg);
      }
      53% {
        transform: rotate(-3deg);
      }
      54% {
        transform: rotate(-4deg);
      }
      55% {
        transform: rotate(-5deg);
      }
      56% {
        transform: rotate(-6deg);
      }
      57% {
        transform: rotate(-7deg);
      }
      58% {
        transform: rotate(-8deg);
      }
      59% {
        transform: rotate(-9deg);
      }
      60% {
        transform: rotate(-10deg);
      }
      61% {
        transform: rotate(-11deg);
      }
      62% {
        transform: rotate(-12deg);
      }
      63% {
        transform: rotate(-13deg);
      }
      64% {
        transform: rotate(-14deg);
      }
      65% {
        transform: rotate(-15deg);
      }
      66% {
        transform: rotate(-16deg);
      }
      67% {
        transform: rotate(-17deg);
      }
      68% {
        transform: rotate(-18deg);
      }
      69% {
        transform: rotate(-19deg);
      }
      70% {
        transform: rotate(-20deg);
      }
      71% {
        transform: rotate(-21deg);
      }
      72% {
        transform: rotate(-22deg);
      }
      73% {
        transform: rotate(-23deg);
      }
      74% {
        transform: rotate(-24deg);
      }
      75% {
        transform: rotate(-25deg);
      }
      76% {
        transform: rotate(-24deg);
      }
      77% {
        transform: rotate(-23deg);
      }
      78% {
        transform: rotate(-22deg);
      }
      79% {
        transform: rotate(-21deg);
      }
      80% {
        transform: rotate(-20deg);
      }
      81% {
        transform: rotate(-19deg);
      }
      82% {
        transform: rotate(-18deg);
      }
      83% {
        transform: rotate(-17deg);
      }
      84% {
        transform: rotate(-16deg);
      }
      85% {
        transform: rotate(-15deg);
      }
      86% {
        transform: rotate(-14deg);
      }
      87% {
        transform: rotate(-13deg);
      }
      88% {
        transform: rotate(-12deg);
      }
      89% {
        transform: rotate(-11deg);
      }
      90% {
        transform: rotate(-10deg);
      }
      91% {
        transform: rotate(-9deg);
      }
      92% {
        transform: rotate(-8deg);
      }
      93% {
        transform: rotate(-7deg);
      }
      94% {
        transform: rotate(-6deg);
      }
      95% {
        transform: rotate(-5deg);
      }
      96% {
        transform: rotate(-4deg);
      }
      97% {
        transform: rotate(-3deg);
      }
      98% {
        transform: rotate(-2deg);
      }
      99% {
        transform: rotate(-1deg);
      }
      100% {
        transform: rotate(0deg);
      }
    }
  </style>
</head>
<body>
<div class="page-content">
  <div class="global_header">
    <!--通知图标-->
    <div class="notice item">
      <a href="#">
	    <!--svg 铃铛-->      
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36" fill="none" class="notice-icon notice-ld">
          <g class="SVGIcon_Notification">
            <path fill-rule="evenodd" clip-rule="evenodd"
                  d="M32 24V26H4V24L8 19V12C8 9.34784 9.05357 6.8043 10.9289 4.92893C12.8043 3.05357 15.3478 2 18 2C20.6522 2 23.1957 3.05357 25.0711 4.92893C26.9464 6.8043 28 9.34784 28 12V19L32 24Z"
                  fill="currentColor"></path>
            <path class="SVGIcon_Notification_Uvula" fill-rule="evenodd" clip-rule="evenodd"
                  d="M18 34C19.2396 33.9986 20.4483 33.6133 21.46 32.897C22.4718 32.1807 23.2368 31.1687 23.65 30H12.35C12.7632 31.1687 13.5282 32.1807 14.54 32.897C15.5517 33.6133 16.7604 33.9986 18 34Z"
                  fill="currentColor"></path>
          </g>
        </svg>
      </a>
    </div>
  </div>
</div>


</body>
</html>

实现效果

效果还凑合

完!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZuuuuYao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值