🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[toc] # 创建 Drawer 组件并实现动画 ![](https://img.kancloud.cn/e5/cd/e5cd006d221a722fd79b3d664ff35bb0_1806x1740.png) 对应样式: ![](https://img.kancloud.cn/a6/af/a6afc8d60dbea1805d36512bfa5c8532_642x1248.png) 现在这个功能存在的问题: 1. 不能左右滑动:官方提供的 `PanResponder` 组件可以实现手势滑动功能。 2. APP 总体向左平移 3. 无法把底部导航给盖(因为是子页面,所以要解决这个问题,需要在最外层实现这个功能) # 导航栏上收缩的二级导航 ## 静态布局 ![](https://img.kancloud.cn/1c/e8/1ce85d73847eca3b5e717905f698b6fd_1726x1638.png) ## 制作折叠动画 ### 制作三角形 直接使用 CSS 来制作一个三角形。 ![](https://img.kancloud.cn/d3/4a/d34aaf1e6d77f1ab26dd2e1d14f713fe_2002x1468.png) ### 添加旋转动画 ![](https://img.kancloud.cn/9a/85/9a85b079e5b7ade14501cae33cea9822_2214x1720.png) 点击之后可以旋转,但是存在两个问题: 1. 只能点击一次,只能旋转一次 2. 旋转的轴心不是中心点 问题一、解决: ![](https://img.kancloud.cn/01/57/0157b486756a314e7ccff30c3cd60836_2138x1246.png) 问题二、解决 因为旋转时是旋转的父元素,父元素以中心点旋转,所以只要让三角形在父元素的正中心即可。 ![](https://img.kancloud.cn/1a/82/1a825b92b714ac95164304505efe90f1_1162x558.png) ### 订单按钮和三角色形按钮定位 ![](https://img.kancloud.cn/c8/8e/c88e4fd85c1344a32da29752a07ca94e_1664x1674.png) ### 制作二级按钮 ![](https://img.kancloud.cn/e8/9b/e89b30d5f7c6ce297c277561210f3ec5_2128x1300.png) 添加样式: ![](https://img.kancloud.cn/6d/56/6d56260f1530a49d27eec686d9239f44_398x260.png) ### 实现折叠动画 ![](https://img.kancloud.cn/8d/b3/8db3151f7d43288596dbaee09025ac23_2088x1586.png) # 扩展:跳转对象 如果在一级页面中要实现跳转,可以直接使用 `navigation` 对象。 如果不是一级页面,比如在一级页面中引入了 a组件,a组件又引入了 b 组件,然后在 b 组件中要实现跳转,这时可以: 方法一.、在一级页面中把 navigation 传给 a 组件,a组件再传给 b 组件,然后 b 组件中就可以跳转了。(层级深时比较麻烦) 方法二、有一个 `useNavigation` 的 Hook 函数,可以直接获取到导航对象 ~~~ // 1. 引入 import { useNavigation } from '@react-navigation/native'; //... // 2. 生成对象 const navigation = useNavigation(); // 3. 使用 navigation.navigate('页面') ~~~ 示例:在 Menu 组件中实现跳转 ![](https://img.kancloud.cn/ef/bc/efbc30304d849306fe6a1b2adccc6108_1466x1624.png)