微信小程序实现tabbar凹凸圆选中动画效果实例

实现微信小程序的tabbar凹凸圆选中动画效果,可以分为以下几个步骤:

步骤1:准备好tabbar图标资源

在实现tabbar凹凸圆选中动画效果之前,需要准备好凹凸圆图标资源。可以使用Sketch等设计工具,画出带有选中和未选中状态的凹凸圆图标,并按照微信小程序要求的尺寸进行导出。

步骤2:创建tabbar页面

在小程序根目录下,创建一个tabbar页面。使用wxml语言,实现底部tabbar布局,例如:

<view class="tabbar">
  <view class="tab-item" bindtap="switchTab" data-path="{{paths[0]}}">
    <image src="{{activeIndex == 0 ? activeIcon : normalIcon}}" />
    <text class="{{activeIndex == 0 ? 'active' : ''}}">首页</text>
  </view>
  <view class="tab-item" bindtap="switchTab" data-path="{{paths[1]}}">
    <image src="{{activeIndex == 1 ? activeIcon : normalIcon}}" />
    <text class="{{activeIndex == 1 ? 'active' : ''}}">消息</text>
  </view>
  <view class="tab-item" bindtap="switchTab" data-path="{{paths[2]}}">
    <image src="{{activeIndex == 2 ? activeIcon : normalIcon}}" />
    <text class="{{activeIndex == 2 ? 'active' : ''}}">我的</text>
  </view>
</view>

步骤3:为tabbar绑定切换事件

在tabbar页面中实现switchTab方法,用于切换选中的tab。例如:

Page({
  data: {
    activeIndex: 0,
    paths: ['pages/index/index', 'pages/message/message', 'pages/mine/mine'],
    normalIcon: 'images/tabbar/index_normal.png',
    activeIcon: 'images/tabbar/index_active.png',
  },
  switchTab(e) {
    const path = e.currentTarget.dataset.path
    wx.switchTab({
      url: `/${path}`,
    })
  },
})

步骤4:实现tabbar凹凸圆选中动画效果

在小程序根目录下的app.wxss文件中,实现tabbar凹凸圆选中动画效果。核心代码如下:

.tabbar {
  display: flex;
  align-items: center;
  justify-content: space-around;
  position: fixed;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 100rpx;
  background-color: #ffffff;
  border-top: 1px solid #eeeeee;
  z-index: 999;
}

.tab-item {
  position: relative;
  width: 32rpx;
  height: 32rpx;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

.tab-item:before {
  content: "";
  position: absolute;
  left: -12rpx;
  top: -12rpx;
  width: 56rpx;
  height: 56rpx;
  border-radius: 28rpx;
  background-color: #ffffff;
  transform: scale(0.8) translate(0, 0);
  transition: all 0.3s ease-in-out;
}

.tab-item.active:before {
  transform: scale(1.2) translate(-6rpx, -6rpx);
  background-color: #173177;
}

通过设置.tab-item:before伪元素,实现选中凹凸圆的效果。通过.tab-item.active:before实现动画效果,当选中状态时,凹凸圆会变大并且颜色会变化。

示例1:完整代码

以下是一个基于微信小程序的tabbar凹凸圆选中动画效果实现的示例代码,供参考和学习:

<!-- app.json -->
{
  "tabBar": {
    "backgroundColor": "#fff",
    "borderStyle": "white",
    "selectedColor": "#173177",
    "color": "#999",
    "list": [
      {
        "pagePath": "pages/index/index",
        "text": "首页",
        "iconPath": "images/tabbar/index_normal.png",
        "selectedIconPath": "images/tabbar/index_active.png"
      },
      {
        "pagePath": "pages/message/message",
        "text": "消息",
        "iconPath": "images/tabbar/message_normal.png",
        "selectedIconPath": "images/tabbar/message_active.png"
      },
      {
        "pagePath": "pages/mine/mine",
        "text": "我的",
        "iconPath": "images/tabbar/mine_normal.png",
        "selectedIconPath": "images/tabbar/mine_active.png"
      }
    ]
  }
}
<!-- tabbar.wxml -->
<view class="tabbar">
  <view class="tab-item" bindtap="switchTab" data-path="{{paths[0]}}">
    <image src="{{activeIndex == 0 ? activeIcon : normalIcon}}" />
    <text class="{{activeIndex == 0 ? 'active' : ''}}">首页</text>
  </view>
  <view class="tab-item" bindtap="switchTab" data-path="{{paths[1]}}">
    <image src="{{activeIndex == 1 ? activeIcon : normalIcon}}" />
    <text class="{{activeIndex == 1 ? 'active' : ''}}">消息</text>
  </view>
  <view class="tab-item" bindtap="switchTab" data-path="{{paths[2]}}">
    <image src="{{activeIndex == 2 ? activeIcon : normalIcon}}" />
    <text class="{{activeIndex == 2 ? 'active' : ''}}">我的</text>
  </view>
</view>
// tabbar.js
Page({
  data: {
    activeIndex: 0,
    paths: ['pages/index/index', 'pages/message/message', 'pages/mine/mine'],
    normalIcon: 'images/tabbar/index_normal.png',
    activeIcon: 'images/tabbar/index_active.png',
  },
  switchTab(e) {
    const path = e.currentTarget.dataset.path
    wx.switchTab({
      url: `/${path}`,
    })
  },
})
/* app.wxss */
.tabbar {
  display: flex;
  align-items: center;
  justify-content: space-around;
  position: fixed;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 100rpx;
  background-color: #ffffff;
  border-top: 1px solid #eeeeee;
  z-index: 999;
}

.tab-item {
  position: relative;
  width: 32rpx;
  height: 32rpx;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

.tab-item:before {
  content: "";
  position: absolute;
  left: -12rpx;
  top: -12rpx;
  width: 56rpx;
  height: 56rpx;
  border-radius: 28rpx;
  background-color: #ffffff;
  transform: scale(0.8) translate(0, 0);
  transition: all 0.3s ease-in-out;
}

.tab-item.active:before {
  transform: scale(1.2) translate(-6rpx, -6rpx);
  background-color: #173177;
}

示例2:根据需求自定义tabbar图标

以下是一个自定义tabbar图标的示例代码,仅供参考:

<!-- app.json -->
{
  "tabBar": {
    "backgroundColor": "#fff",
    "borderStyle": "white",
    "selectedColor": "#173177",
    "color": "#999",
    "list": [
      {
        "pagePath": "pages/index/index",
        "iconPath": "images/tabbar/index_normal.png",
        "selectedIconPath": "images/tabbar/index_active.png"
      },
      {
        "pagePath": "pages/message/message",
        "iconPath": "images/tabbar/message_normal.png",
        "selectedIconPath": "images/tabbar/message_active.png"
      },
      {
        "pagePath": "pages/mine/mine",
        "iconPath": "images/tabbar/mine_normal.png",
        "selectedIconPath": "images/tabbar/mine_active.png"
      },
      {
        "pagePath": "pages/feedback/feedback",
        "iconPath": "images/tabbar/feed_normal.png",
        "selectedIconPath": "images/tabbar/feed_active.png"
      },
      {
        "pagePath": "pages/more/more",
        "iconPath": "images/tabbar/more_normal.png",
        "selectedIconPath": "images/tabbar/more_active.png"
      }
    ]
  }
}

以上是我对于微信小程序实现tabbar凹凸圆选中动画效果的步骤和示例说明,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:微信小程序实现tabbar凹凸圆选中动画效果实例 - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • JavaScript实现登录拼图验证的示例代码

    下面是详细讲解 “JavaScript实现登录拼图验证的示例代码” 的完整攻略。 什么是登录拼图验证 登录拼图验证(也称为滑动验证码)是一种用于验证用户身份的方式。它要求用户在完成拼图拖动的同时,还要求用户注意拼图的正确位置。这种方式可以有效地防止机器人攻击,提高网站的安全性。 实现登录拼图验证的主要原理 实现登录拼图验证的主要原理是生成带有滑块的图片,并使…

    css 2023年6月10日
    00
  • html5的新增的标签和废除的标签简要概述

    HTML5(Hyper Text Markup Language 5)是HTML(Hyper Text Markup Language)的第五个版本,它对之前版本的语言规范做了很多改进和增强。在HTML5中,新增了很多标签来帮助Web开发者更好地构建现代化、丰富多彩的网站。同时,也废除了一些不太常用、有性能问题或者安全隐患的标签。 新增标签 \<can…

    css 2023年6月10日
    00
  • 教你用javascript实现随机标签云效果_附代码

    教你用javascript实现随机标签云效果 什么是标签云 标签云是一种展示标签/关键词的方式,通常使用多个字体大小和颜色来区分不同标签的重要程度或分类。标签云设计旨在方便用户快速找到自己想要的内容。 实现标签云的基本原理 使用JavaScript实现标签云的基本原理是:分析页面中的标签内容,给它们设置不同的字体大小和颜色,然后使用CSS样式控制它们的显示效…

    css 2023年6月10日
    00
  • box-shadow单边阴影的实现

    Box-shadow 可以在多种情况下为元素添加阴影效果,包括单边阴影。单边阴影可以为元素添加美观的高亮或深度感。 下面是实现单边阴影的完整攻略: 使用 box-shadow 和 inset 属性 在元素上添加 box-shadow 属性,并使用 inset 属性,可以创建单边阴影。inset 属性指定阴影显示在元素内部,而不是在元素周围。 .shadow …

    css 2023年6月10日
    00
  • Easyui 去除jquery-easui tab页div自带滚动条的方法

    首先,我们需要了解,在 Easyui 中,Tab 组件的内容是通过一个名为 tabs-panels 的 div 容器来承载的,而该容器拥有自己的 CSS 样式,其中包括了默认的滚动条样式。 为了去除这样的默认样式,在 Easyui 中,我们可以通过以下两种方法实现: 方法一:覆盖样式 我们可以在 CSS 中设置 overflow: hidden,同时将 pa…

    css 2023年6月10日
    00
  • React性能优化的实现方法详解

    React性能优化的实现方法详解 React 是一款高效和强大的 JavaScript 库,但随着应用规模的增长和数据量的增加,React 应用的性能优化就变得尤为重要。本文将介绍 React 性能优化的实现方法,从组件设计到数据管理等多个方面详细讲解。 组件设计 组件是 React 应用的核心,它们是构建 UI 的基本单元。优化组件的设计可以提高应用的性能…

    css 2023年6月10日
    00
  • 利用CSS伪元素创建带三角形的提示框的实现方法

    当我们需要在网页中添加提示信息时,通常需要使用一些提示框来实现。而利用CSS伪元素创建带三角形的提示框是一种常见的实现方法。 下面是这种方法的完整攻略: 1.创建基本结构和样式 首先,我们需要创建一个包含提示文字的div元素,并给它添加对应的CSS样式,例如: <div class="tooltip">这是一个提示框</…

    css 2023年6月10日
    00
  • Dreamweaver CS3网页制作之CSS布局规则

    Dreamweaver CS3网页制作之CSS布局规则攻略 CSS布局是网页开发的重要组成部分。在使用Dreamweaver CS3进行网页制作时,掌握CSS布局规则可以帮助我们更高效地构建网页。 1. CSS布局的基本原理 在CSS布局中,通过设置样式来控制HTML元素的位置、大小、对齐和显示效果。CSS布局的基本原理有以下几点: 盒模型:每个HTML元素…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部