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

yizhihongxing

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

相关文章

  • 第一次接触神奇的Bootstrap菜单和导航

    下面是详细讲解“第一次接触神奇的Bootstrap菜单和导航”的完整攻略。 什么是Bootstrap菜单和导航 Bootstrap是一个流行的前端CSS框架,它提供了一系列的组件,方便开发者们快速搭建网站,其中菜单和导航是非常重要的组件之一。Bootstrap的菜单和导航可以帮助用户快速浏览和定位网站内容,同时也能增加网站的美观性。 如何使用Bootstra…

    css 2023年6月11日
    00
  • 新手学习css优先级

    下面是“新手学习 CSS 优先级”的完整攻略。 前言 在学习 CSS 的时候,我们需要了解优先级的概念。优先级可以简单地理解为 CSS 样式被应用的权重。当多个 CSS 规则应用到同一个元素上时,浏览器需要确定哪个规则的样式最终生效。了解优先级对于我们编写 CSS 样式、调试样式等都非常重要。接下来我们将详细讲解优先级的相关知识。 了解选择器优先级 选择器优…

    css 2023年6月10日
    00
  • 详解CSS 怪异盒模型和标准盒模型

    详解CSS 怪异盒模型和标准盒模型 盒模型基础知识 CSS的盒模型是用来解释HTML文档中元素的布局的基本概念。任何元素都被认为是一个盒子,盒子由四个部分组成:外边距(margin)、边框(border)、内边距(padding)和内容(content)。 盒子的宽度和高度是由这四个部分的大小及其组成顺序来定义的。 在CSS标准之前,盒模型存在两种不同的模型…

    css 2023年6月10日
    00
  • CSS3实用方法总结(推荐)

    CSS3实用方法总结(推荐) 1. 布局 1.1 弹性盒模型 弹性盒模型可以对一个元素的子元素进行自适应布局,更加灵活,可以实现传统布局实现不了的效果。常用的几个属性有: display: flex:将元素设为弹性容器 flex-direction:设置弹性容器的主轴方向 justify-content:在弹性容器中对齐元素 align-items:在弹性容…

    css 2023年6月9日
    00
  • CSS动画实现背景无缝无限循环的实现示例

    CSS动画可以很好地为网站增加交互性和美观性。而实现背景无缝无限循环动画,可以让网站更具视觉吸引力。下面,我将为大家介绍CSS动画实现背景无缝无限循环的示例攻略。 标题一:使用CSS动画实现背景无缝无限循环 步骤一:设置背景图像 在HTML中设置一个容器,并将背景图像设置为容器的背景图片: <div class="bg-image"…

    css 2023年6月9日
    00
  • JavaScript插件Tab选项卡效果

    标题:JavaScript插件Tab选项卡效果 1. 插件简介 Tab选项卡是Web开发中一种常用的交互效果。本文介绍一款基于JavaScript的插件,可以快速地为网页添加Tab选项卡效果。 2. 插件使用方法 2.1 引入插件 将以下代码添加到HTML文件中: <link rel="stylesheet" href="…

    css 2023年6月10日
    00
  • css 定位应用实例

    下面是关于“CSS定位应用实例”的完整攻略。 概述 CSS定位是指,使用CSS样式表中的定位属性来控制HTML元素相对于其父元素的位置。常见的定位属性有:position、top、bottom、left、right等。在Web开发中,定位应用十分普遍,特别是在响应式设计中,通过使用CSS定位可以实现具有特定尺寸、位置和排列的页面元素。下面,我们将讨论CSS定…

    css 2023年6月9日
    00
  • 纯CSS3实现移动端展开和收起效果的示例代码

    下面是“纯CSS3实现移动端展开和收起效果的示例代码”的完整攻略: 示例代码结构 示例代码共分为两个部分:HTML和CSS。在HTML中,使用了两个元素,一个是用于触发展开和收起操作的按钮,另一个是需要展开或收起的内容区域。在CSS中,定义了展开和收起的动画效果。 HTML代码 <div class="toggle-wrap"&gt…

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