首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《精通reactvue组件设计》之配合React Portals实现一个功能强大的抽屉(Drawer)组件

前言 本文是笔者写组件设计的第六篇文章,内容依次易到难,今天会用到react的高级API React Portals,它也是很多复杂组件必用的方法之一....HTML 节点, 可以将抽屉挂载在任何元素上 点击蒙层可以控制是否允许关闭抽屉 能控制遮罩层的展示 能自定义抽屉弹出层样式 可以设置抽屉弹出层宽度 能控制弹出层层级 能控制抽屉弹出方向(上下左右) 点击关闭按钮时能提供回调供开发者进行相关操作...通过以上需求分析, 是不是觉得一个抽屉组件要实现这么多功能很复杂呢?...弹出层宽度 * @param {zIndex} number 弹出层层级 * @param {placement} string 抽屉方向 * @param {onClose} string 点击关闭时的回调..., 可以弹出,也可以弹出, 实现过程也比较简单,我们主要要更具属性动态修改定位属性即可,这里我们会用到es新版的新特性,对象的变量属性.

1.7K31
您找到你想要的搜索结果了吗?
是的
没有找到

Android Q 手势导航背后的故事

简而言之,采用这款新系统导航模式后,用户无需借助任何虚拟按键,只要滑动手势便能完成多种操作,包括: 返回上一级 (边缘侧滑),返回主屏 (底部向上滑动)和启动设备助手 (左下角或右下角斜向滑动)。...,用户很容易发生误触事件) 手势导航有助于提供沉浸度更高的应用体验: 大屏窄边已成为当下主流硬件趋势,手势导航能够最大限度减少系统在应用的内容之上绘制视觉元素 (例如: 主屏/返回键和底部导航栏),从而为用户创造更具沉浸感的体验...比如说,我们发现 3% 到 7% 的用户 (具体比例因应用而异) 通过侧滑手势打开应用导航抽屉,其余用户则选择点击汉堡形菜单按钮来弹出抽屉。...改变用户的导航习惯并不是我们的目标,因此,我们尝试了许多方法来帮助用户区分抽屉手势和返回手势,不过结果并不乐观,用户试着通过侧滑触发返回操作,但是仍旧拖曳出了抽屉界面,致使用户对返回操作的信任度下降。...除了应用抽屉以外,适应时间也是一大问题: 用户平均需要 1 到 3 天才能适应手势导航,特别是,用户有些难以应付像滑或者滑跑马灯控件时却触发返回这样的情况。

2.1K50

React Native 导航:示例教程

React Navigation 提供了一个基于堆栈的导航模型,允许屏幕被推入和弹出导航堆栈。通过堆栈导航,你可以使用一个堆栈导航器来定义你的应用程序的导航结构,该导航器维护着一个屏幕堆栈。...任何给定时间只有一个屏幕呈现给用户,每个屏幕在被推入堆栈时显示,即当用户导航到某个屏幕时,它就被推到堆栈的顶部。 想象一堆纸张。导航到一个新屏幕会将其放在堆栈的顶部,导航回去则会将其堆栈中移除。...我们将其配置为熟悉的 iOS 和 Android 外观和感觉:在 iOS 中,新屏幕右侧滑入,而在 Android 中,新屏幕底部淡入。...例如,我们可以更改我们导航抽屉标签的激活状态颜色。...这个 Hook 使函数组件能够访问导航对象,并允许它们以编程方式触发导航操作。当你无法直接将导航属性传递给组件时,它非常有用。

20210

Flutter开发-容器类组件

一个完整的路由页可能会包含导航栏、抽屉菜单(Drawer)以及底部Tab导航菜单等。...我们实现一个页面,它包含: 一个导航导航栏右边有一个分享按钮 有一个抽屉菜单 有一个底部导航 右下角有一个悬浮的动作按钮 代码如下: class ScaffoldRoute extends StatefulWidget...MyDrawer 抽屉菜单 BottomNavigationBar 底部导航栏 FloatingActionButton 漂浮按钮 AppBar AppBar是一个Material风格的导航栏,通过它可以设置导航栏标题...) Scaffold的drawer和endDrawer属性可以分别接受一个Widget来作为页面的抽屉菜单。...如果开发者提供了抽屉菜单,那么当用户手指屏幕(或)侧向里滑动时便可打开抽屉菜单。

3.5K20

reactvue 组件设计方法原则

网上看到了好多篇 react/vue 组件设计方法/原则 ,内容都是雷同(指不该相同相同)。   我深恶痛绝,并深刻检讨自己,意识到普及互联网知识已经迫在眉睫,绝不容许有人浑水摸鱼。...工作中频繁遇到的问题) 6>  指定 Drawer 挂载的 HTML 节点, 可以将抽屉挂载在任何元素上 7>  点击蒙层可以控制是否允许关闭抽屉 8>  能控制遮罩层的展示 9>  能自定义抽屉弹出层样式...10> 可以设置抽屉弹出层宽度 11> 能控制弹出层层级 12> 能控制抽屉弹出方向(上下左右) 13> 点击关闭按钮时能提供回调供开发者进行相关操作 需求收集好之后,作为一个有追求的程序员,...通过以上需求分析, 是不是觉得一个抽屉组件要实现这么多功能很复杂呢?...提供数据和行为给容器组件或者展示组件 对第三方没有任何依赖,比如store 或者 flux action 调用flux action 并且提供他们的回调给展示组件 不要指定数据如何加载和变化 作为数据源,通常采用较高阶的组件,不是自己写

1.9K30

值得一看的小程序 TabBar 创意动画

this.getTabBar()) { this.getTabBar().setData({ selected: 1 }) } } 以下为全局自定义 TabBar 的几篇文章: 小程序自定义底部导航栏组件...1 : -1} /> 动画调研 抽屉动画演示 在移动端 UI 中汉堡包菜单配合抽屉弹出动画是很常见的交互动效之一。...(具体效果情况请看上面的视频) 在 v2 版 Hi 头像里,添加头像素材的按钮是在 TabBar 组件中“加号”中弹出,其中关键点为“同心圆布局”和“动画延迟”。...tabBar: https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html [3] 小程序自定义底部导航栏组件...6844903633289478152 [8] 粘连效果实现: https://www.leevii.com/2018/09/adhesive-effect.html 扫描二维码关注我 ● 你不知道的 React

3.9K42

干货!iOS 与 Android 的APP 设计差异

滑操作切换标签(Android) 应用内部的导航模式在IOS和Android上是不同的 在Material Design设计规范中有一些不同的导航模式。...在Android应用中被大家熟知的导航模式是抽屉和标签形式的组合。 抽屉导航其实是一个菜单,通过点击汉堡图标,然后左侧或右侧滑出。...左侧就是抽屉导航;右侧是标签栏 在Material Design中还有一个组件叫做底部导航。这个组件对于安卓原生应用来说也非常重要。底部的菜单项很容易点击和操作。...但是安卓规范其实不建议同时使用底部导航和标签,因为它可能会在导航时引起混乱。 底部导航(Material Design) 在Apple的人机交互规范中,没有类似抽屉菜单的标准导航控件。...因此,最好是花些时间了解下两个平台不同的设计规范,不是混合iOS和Android的组件模型,然后还得花很多力气在开发上。

3.2K10

React Native 安卓开发】----侧边栏的实现DrawerLayoutAndroid以及第三方框架react-native-side-menu的使用【第六篇】

导航视图一开始在屏幕上并不可见,不过可以drawerPosition指定的窗口侧面拖拽出来,并且抽屉的宽度可以使用drawerWidth属性来指定。...drawerWidth number 指定抽屉的宽度,也就是屏幕边缘拖进的视图的宽度。...onDrawerClose function 每当导航视图(抽屉)被关闭之后调用此回调函数。 onDrawerOpen function 每当导航视图(抽屉)被打开之后调用此回调函数。...抽屉可以有3种状态: idle(空闲),表示现在导航条上没有任何正在进行的交互。 dragging(拖拽中),表示用户正在与导航条进行交互。...renderNavigationView function 此方法用于渲染一个可以屏幕一边拖入的导航视图。 样例 ?

6.6K40

Material Design — Navigation drawerStandard drawer Modal drawer Bottom drawer

为了点击 bottom app bar 的菜单图标后提高可达性,它们屏幕底部打开不是侧面打开。 ---- 分解 Navigation drawers 包含嵌入在 sheet 内的 list。...导航抽屉表可以屏幕左侧出现 (1),或者在与 bottom app bar (2)同时使用时屏幕底部打开。 范围小于62.5% ?...如果优先考虑进行帐户切换,则可以将帐户切换器放置在导航抽屉的 header 区域 ?...Modal drawers 可以通过以下方式被关闭: ·选择一个 drawer 项目 ·点击遮罩 ·朝 drawer 的锚定边缘滑动(例如,向左滑动左边出现的 navigation drawer)...---- Bottom drawer 用法 Bottom navigation drawers 是固定在屏幕底部不是左侧或右侧边缘的 modal drawers。

3.8K40

Android开发(37) 使用DrawerLayout实现抽屉导航菜单

概述 最近流行 左侧抽屉式的导航条菜单,知乎,360,QQ都使用了这样的导航菜单,我们也了解下: Android Design 的流行趋势:Navigation Drawer 导航抽屉 参考这篇文章:http...比如叫:MainActivity)内容布局,写一个 android.support.v4.widget.DrawerLayout,它需要包含两个内容视图元素,第一个视图元素是 主显示内容页,第二个是要抽屉弹出的视图...MainActivity需要 为DrawerLayout 注册一个回调事件接口ActionBarDrawerToggle ,这个事件的实现者监听器会获得 抽屉弹出(onDrawerOpened)和关闭(...R.string.drawer_close /* "close drawer" description for accessibility */ ) { // 当导航菜单抽屉...// If the nav drawer is open, hide action items related to the content // view // 当弹出导航菜单时

3.5K00

导航设计的10种模式

06 抽屉导航 描述: 抽屉式也是谷歌提出来的一种导航模式,由于虚拟按键的存在,所以在安卓上使用底部Tab会造成双底栏,视觉观感不佳; 一般用来放置对用户而言不太常用或者对于产品而言不太核心的功能,或者不那么需要频繁切换内容的应用...07 下拉式/菜单导航 描述: 与抽屉导航的目的相同,都是为了突出内容。...,不是跳转至完全不同的视图。...优点: 可在原有界面上进行操作,不必跳出界面, 在需要的时候才弹出,以节省屏幕空间; 缺点: 阻断式的操作有时候会打断用户的正常操作流程。...总结 1.底部tab式 2.顶部标签式 3.轮播式 4.宫格式 5.卡片式 6.抽屉式 7.下拉式 8.列表式 9.弹窗式 10.组合式 导航可能不单单只有这几种,可能大家的叫法也不尽相同。

3.4K40

【CSS】课程网站头部制作 ② ( 导航栏测量 | 导航栏编写 | 代码示例 )

文章目录 一、 导航栏测量 1、 左侧边界 2、 文本测量 3、 底部边框测量 二、 导航栏代码编写 1、 HTML 标签结构 2、 CSS 样式 3、最终显示效果 三、 完整代码 1、 HTML...60 像素即可 ; 该边距可以设置为 logo 盒子的 外边距为 60 像素 , 也可以设置为 导航栏盒子 的 做外边距为 60 像素 ; 这里设置为 logo 盒子的 外边距为 60 像素 :...3、 底部边框测量 底部边框 2 像素 , 使用吸管工具吸取颜色 , 可得到颜色值 #00a4ff ; 二、 导航栏代码编写 ---- 1、 HTML 标签结构 导航栏使用 无序列表 实现 ,...盒子放在一行中 ; /* 导航栏设置 浮动 */ .nav { float: left; } 导航栏中的无序列表 , 需要设置浮动 , 才能将 块级元素 左右到进行排列 ; /* 导航栏内部...的外边距 */ margin-right: 60px; } /* 导航栏设置 浮动 */ .nav { float: left; } /* 导航栏内部 的 无序列表 设置浮动 */ .nav

3.8K20

【Day21】LeetCode算法题

于是我就很自信地遍历字符串的每一个字符: 当遇到括号‘(’,就记录括号数量left++; 当遇到括号‘)’,就记录括号数量right++; 最后返回差值… 结果提交结果是: 我忽略了一类重要的情况...比如:") (",需要返回的就不是差值0,而是2....这么一来我们就需要另外想办法了,但是问题不大,思路很快就有啦,那就是利用栈结构来判断: 当遇到括号'(',我们就将括号入栈,等待对应的括号')'; 当遇到括号')',我们就要分为两种情况… ①...栈中没有元素,也就是栈长度为0时,我们记录括号')'的数量right++ ②当栈中存在元素括号(,我们将栈顶元素弹出,代表两个括号对应,抵消了。...++right; }else{ //栈中有对应的括号 dq.pop(); //栈顶弹出

46940

补一补产品基础知识:App各类导航设计适用场景及优劣势总结

最近在看一些产品文章时,总会看到一些词汇(例如:“tabbar”、“抽屉菜单”、“宫格菜单”),开始也不是很能理解,但是结合上下文还是能猜出一二的。...:多看阅读 :网易云阅读 适用场景: (1)上面的tab导航,一般适用于对当前页面的分类查看,或者改变当前视图。...app的核心功能,且切换页面方便,简单高效,用户不易“迷路” 2、所有入口都可以看见,容易寻找 劣势: 1、占据一定屏幕高度,如果是下方tab,浏览时会阻挡内容 2、可展示功能数量少,最多只有5个 2.抽屉导航...:知乎日报 :36Kr 适用场景: 将并不是太常用或者切换不频繁的功能隐藏在主界面之后 优势: (1)导航界面隐藏在主界面之后,有助于用户集中注意力,营造沉浸式体验 (2)可容纳多个条目,可扩展性强...:美颜相机 :美图秀秀 适用场景: 适合用于独立、无功能交叉、不频繁切换的部分,多用于二级菜单 优势: 分类清晰、入口独立、风格简约 劣势: 并不会展示实质内容,不适合需要频繁切换的功能 4.

77060

Cocoa编程中视图控制器与视图类详解

其它三个都是通过对应的控制器类来完成工作,不是直接构建和管理视图。 ...每一个导航控制器都拥有一个根视图控制器RootViewController,它是“导航弹出栈”的基础,是根。5....可使用popToRootViewControllerAnimated:BOOL直接弹出到根视图控制器。 6. 设置导航栏的按钮并不是去设置导航栏本身。...其描述了导航栏上显示的内容,正好UIViewController另有一导航项属性navigationItem包括栏按钮(leftBarButtonItem)、栏按钮(rightBarButtonItem...注意:对于导航栏定制,对定制实际标题的最简单方式时使用子视图控制器不是导航项的title属性: C代码   self.title = @"Hello";   self.title = [[[NSBundle

5K50

模态对话框-B 类产品设计细节:对话框 vs 抽屉

抽屉的模态 vs 非模态   项目管理工具 Jira 的帮助文档入口在页面右侧,点开后右侧划入非模态抽屉展示内容,这样便于用户进行对照查看和操作:   搜索功能入口在页面左侧中的导航中,点开后左侧划入模态抽屉进行交互...原来由左侧划入的模态抽屉,点击左侧导航左侧划入:   当前版本使用非模态对话框模态对话框,点击顶部导航后在 icon 下方出现:   4....模态抽屉 vs 气泡卡片   文档工具 中,产品功能和交互都很简洁轻量,没有出现对话框组件,在文档中插入图片或文件、编辑导航、导入文档等稍重的操作使用抽屉插入表情、标签等位置指向明确、操作很轻的使用气泡卡片...按下图应用场景、交互需求、信息长度三个维度来判断使用对话框还是抽屉。   ...例如:为一个表单选择组件,应用场景来看,对话框和抽屉皆可;交互维度,该表单的填写需要参考表单的父级页面中的内容,则确定选择非模态抽屉模态对话框,不需要再从长短考虑。

1.7K20

基础篇章:关于 React Native 之 Navigator 组件的讲解

在renderScene方法中有一个触摸事件,触摸决定导航器是推或者弹出哪个导航场景。...Navigation Bar 我们可以在Navigator上设置标题导航栏Navigation Bar,在标题导航栏中我们可以通过routeMapper属性去设置和标题导航栏。...在配置,和标题导航栏项目,您可以访问信息,如当前路由对象和导航状态。这使您可以为每个场景自定义标题以及按钮。例如,您可以选择隐藏场景中的左键。...我的样子很帅吧,是不是很想和我玩,那就赶紧行动起来吧,我已经迫不及待的想跟你们一起玩了。来看看怎么和我玩的实例代码吧。...代码 import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, Navigator

1.3K70
领券