微信小程序实现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日

相关文章

  • HTML5 manifest离线缓存的示例代码

    HTML5的manifest文件可以使得网站变得离线可用,并且可以提高网站的速度和性能。下面将会为大家介绍到如何使用HTML5 manifest离线缓存,并且给出两个示例代码。 HTML5 Manifest离线缓存的完整攻略 1. 创建manifest文件 在网站的根目录下创建一个文件名为manifest.appcache的文件,示例代码如下: CACHE …

    css 2023年6月9日
    00
  • Illustrator制作SVG的操作流程

    下面我将为您详细讲解Illustrator制作SVG的操作流程的完整攻略。 操作流程 第一步:打开AI文件 首先,打开AI文件,并准备好您想使用的图形或图标。 第二步:创建SVG图形 选择您想要导出为SVG的对象或图标,并将其复制。 在“文件”菜单中,选择“新建”。 在“新建文档”面板中,选择“Web”作为文档类型,并将“细节”设置为“SVG”。 点击“新建…

    css 2023年6月10日
    00
  • vue项目设置活性字体过程(自适应字体大小)

    下面是详细的说明: 1. 设置默认字体大小 我们需要在 App.vue 组件中设置一个默认的字体大小,此处我们设置为 16px,代码如下: <template> <div :style="styles"> <router-view /> </div> </template> &l…

    css 2023年6月9日
    00
  • 使用CSS代码的空格实现中文对齐的方法

    下面是使用CSS代码的空格实现中文对齐的方法的完整攻略。 什么是中文对齐? 中文对齐指的是在中文排版中,让每行文字的最后一个字符都处于同一竖直线上,达到美观统一的效果。中文对齐一般在中文排版中较为常见,但在英文排版中也会用到。在纸质出版中一般使用全角空格实现,而在网页设计中,使用CSS代码的空格实现中文对齐是一种常见的方法。 怎么使用CSS代码的空格实现中文…

    css 2023年6月9日
    00
  • 详细介绍CSS中的伪选择器

    接下来我将详细介绍CSS中的伪选择器。 什么是CSS中的伪选择器 CSS中的伪选择器(pseudo-selector)是一种语法结构,可以用于选择不同状态下的元素。伪选择器以冒号(:)开头,通常用于选择元素的某个状态或某些特定的子元素,可以把它们看作是CSS选择器的扩展。 CSS中的伪选择器分类 伪选择器可以分为两大类:伪类(Pseudo-classes)和…

    css 2023年6月9日
    00
  • 加速Webpack构建技巧总结

    当我们在进行前端开发时,Webpack构建时间较长是一个令人头痛的问题。因此,我们需要一些加速Webpack构建的技巧,以提高工作效率。接下来,我将就如何加速Webpack构建进行详细讲解,并提供两个实际示例说明。 1. 使用缓存 当我们重新启动Webpack打包时,Webpack会花费一些时间来对每个模块进行重新解析和编译。而使用缓存可以避免重新编译相同的…

    css 2023年6月9日
    00
  • css特效 一道闪光在图片上划过代码

    下面是该特效的完整攻略,并附带两条示例说明。 CSS特效:一道闪光在图片上划过 效果展示 HTML结构和CSS样式 首先,需要在HTML中创建一个具有背景图片的div元素,然后使用CSS样式来实现该特效。 HTML: <div class="container"></div> CSS: .container { b…

    css 2023年6月11日
    00
  • jQuery前端框架easyui使用Dialog时bug处理

    下面详细讲解一下“jQuery前端框架easyui使用Dialog时bug处理”的完整攻略。 问题描述 在使用 easyui 的 Dialog 组件时,出现了无法关闭对话框、对话框无法拖动等 bug。 解决方案 1. 修改 easyui 源码 我们可以通过修改 easyui 源码中的 dialog.js 文件来解决这个问题。具体的做法是: 打开 easyui…

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