返回

灵动优美的SVG+CSS3组合,打造引人入胜的Tabbar动画效果**

前端

准备工作:

创建项目结构

首先,我们需要创建一个新的项目文件夹,并初始化一个空的Git仓库。在项目文件夹中,创建三个子文件夹:htmlcssjshtml文件夹将用于存放HTML代码,css文件夹用于存放CSS代码,js文件夹用于存放JavaScript代码。

创建HTML文件

html文件夹中,创建一个名为index.html的文件,并输入以下代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  <link rel="stylesheet" href="css/style.css">
  <script src="js/script.js"></script>
</head>
<body>
  <div class="tabbar">
    <div class="tabbar-item">
      <svg>
        <use xlink:href="#icon-home"></use>
      </svg>
      <p>首页</p>
    </div>
    <div class="tabbar-item">
      <svg>
        <use xlink:href="#icon-message"></use>
      </svg>
      <p>消息</p>
    </div>
    <div class="tabbar-item">
      <svg>
        <use xlink:href="#icon-plus"></use>
      </svg>
      <p>发布</p>
    </div>
    <div class="tabbar-item">
      <svg>
        <use xlink:href="#icon-profile"></use>
      </svg>
      <p>我的</p>
    </div>
  </div>

  <script>
    // 你的JavaScript代码
  </script>
</body>
</html>

创建CSS文件

css文件夹中,创建一个名为style.css的文件,并输入以下代码:

/* 全局样式 */

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

/* Tabbar样式 */

.tabbar {
  display: flex;
  justify-content: space-around;
  align-items: center;
  width: 100%;
  height: 50px;
  background-color: #fff;
}

.tabbar-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 25%;
  height: 100%;
}

.tabbar-item svg {
  width: 24px;
  height: 24px;
  fill: #000;
}

.tabbar-item p {
  font-size: 12px;
  color: #000;
}

/* 动画样式 */

.tabbar-item.active {
  color: #409EFF;
}

.tabbar-item.active svg {
  fill: #409EFF;
}

.tabbar-item.active p {
  color: #409EFF;
}

动效实现:

创建SVG图标

我们需要使用SVG创建四个图标,分别对应首页、消息、发布和我的。可以使用任何你喜欢的矢量图形软件,如Adobe Illustrator或Sketch。将图标保存为SVG格式,并将其放在svg文件夹中。

在HTML中引用SVG图标

index.html文件中,使用<svg>元素和<use>元素引用SVG图标。<svg>元素用于定义SVG画布,<use>元素用于引用SVG图标。

<svg>
  <use xlink:href="#icon-home"></use>
</svg>

使用CSS创建动画

style.css文件中,使用CSS动画创建动画效果。

/* 首页图标动画 */

.tabbar-item.active svg#icon-home {
  animation: home-icon-active 1s infinite alternate;
}

@keyframes home-icon-active {
  0% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.2);
  }
  100% {
    transform: scale(1);
  }
}

/* 消息图标动画 */

.tabbar-item.active svg#icon-message {
  animation: message-icon-active 1s infinite alternate;
}

@keyframes message-icon-active {
  0% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.2);
  }
  100% {
    transform: scale(1);
  }
}

/* 发布图标动画 */

.tabbar-item.active svg#icon-plus {
  animation: plus-icon-active 1s infinite alternate;
}

@keyframes plus-icon-active {
  0% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.2);
  }
  100% {
    transform: scale(1);
  }
}

/* 我的图标动画 */

.tabbar-item.active svg#icon-profile {
  animation: profile-icon-active 1s infinite alternate;
}

@keyframes profile-icon-active {
  0% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.2);
  }
  100% {
    transform: scale(1);
  }
}

优化和兼容性:

优化动画性能

为了确保动画流畅运行,我们可以使用一些技巧来优化动画性能。例如,我们可以使用硬件加速来提升动画的流畅度。

/* 启用硬件加速 */

.tabbar {
  -webkit-transform: translate3d(0, 0, 0);
  transform: translate3d(0, 0, 0);
}

确保跨平台兼容性

为了确保动画在不同平台和浏览器上都能正常运行,我们需要确保代码兼容所有主流平台和浏览器。例如,我们可以使用前缀来确保动画在不同浏览器上的兼容性。

/* 前缀 */

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

结语:

在这篇文章中,我们探讨了如何使用SVG和CSS3来实现一个简单的Tabbar动画效果。我们从分析动画效果入手,逐步分解其构成要素,并在代码实现中一一呈现。同时,文章还涵盖了如何优化动画性能、确保跨平台兼容性等技巧,助力你将动效提升至新的高度。