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

相关文章

  • Css浏览器兼容的解决方法

    针对“CSS浏览器兼容的解决方法”,我这里提供一个完整攻略,包括以下几个步骤。 1.了解浏览器兼容性问题 在开始解决CSS浏览器兼容性的问题前,我们需要先理解浏览器之间的差异。不同的浏览器可能会对CSS代码的解析和渲染存在些许差异,尤其是在IE浏览器中,存在大量的 CSS 兼容性问题。通过了解这些差异,我们才能更好地解决 CSS 的兼容性问题。 2.使用CS…

    css 2023年6月11日
    00
  • css写菜单:简洁注释版

    下面是”css写菜单:简洁注释版”的完整攻略: 1. 选择菜单类型 首先,要选择菜单的类型,常见的菜单类型有水平菜单和垂直菜单两种。可以根据网站的布局和需求选择合适的菜单类型。 2. 准备 HTML 结构 在 HTML 文件中,我们通常使用<ul>和<li>标签来构建菜单,使用<a>标签作为链接。示例如下: <ul&…

    css 2023年6月9日
    00
  • Web标准中的特殊字符

    Web标准中的特殊字符指的是在HTML代码中使用的一些特殊字符,它们无法直接写入HTML文本中,需要使用HTML实体来代替。 HTML实体以”&”符号开头,以”;”符号结束,它可以让浏览器正确渲染出各种特殊字符。以下是几种常用的HTML实体: “<” 和 “>”:分别表示小于符号”<“和大于符号”>”,它们主要用于HTML代码…

    css 2023年6月10日
    00
  • CSS3制作日历实现代码

    下面我将为您详细讲解“CSS3制作日历实现代码”的完整攻略。 1. 概述 在制作日历时,我们可以使用HTML和CSS技术结合实现,其中CSS3的强大效果能够让我们的日历更加美观、炫酷。在这个过程中我们需要使用到CSS3属性及相关的样式设置,同时还需要使用HTML标签结构来实现日历。 2. HTML标签结构 日历的核心是一个个日期格子,因此我们可以使用HTML…

    css 2023年6月10日
    00
  • CSS 继承 inherit属性的方法

    CSS 继承是CSS样式机制的一种特性。它指的是子元素可以继承父元素的一些属性值,并且可以重写这些属性值。其中,inherit 是CSS样式机制中的一个关键字,表示要从父元素继承相应的属性值。 以下是使用 inherit 属性的方法。 1. 指定子元素的属性值为父元素的属性值 使用 inherit 属性可以将子元素的指定属性值设置为其父元素的属性值。例如,以…

    css 2023年6月10日
    00
  • 两个table实现固定表头拖动时仅限表体移动

    实现固定表头和表体拖动移动的过程,可以借助两个table元素来实现。其中一个table仅展示表头,另一个table则展示表体和滚动条。下面我们来详细讲解如何实现这个效果。 步骤1:创建HTML结构 首先,我们需要创建两个table元素,并将它们的CSS样式设置为垂直排列,如下所示: <div class="table-container&qu…

    css 2023年6月10日
    00
  • 浅析bootstrap原理及优缺点

    浅析Bootstrap原理及优缺点 什么是Bootstrap? Bootstrap是一种由Twitter开发的开源CSS框架,它旨在能够帮助开发人员和设计师快速地创建响应式和现代化的网站。Bootstrap是一个包含了HTML、CSS和JavaScript的组件集合,开发人员可以通过使用这些组件而不需要写太多的代码,从而快速地构建出美观、响应式的网站。 Bo…

    css 2023年6月10日
    00
  • CSS3 :default伪类选择器使用简介

    下面就为大家详细讲解一下CSS3的 :default 伪类选择器的使用简介。 什么是 :default 伪类选择器 首先,我们需要了解 :default 伪类选择器是在哪种情况下使用的。当浏览器加载一个表单页面时,其中的某个表单元素(input、textarea、select等)会被默认设置为被选中状态,这个默认被选中的状态就是 :default 伪类选择器…

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