在本篇文章里,我们一起学习下如何使用 CSS checkbox hack 技巧制作一个响应式的手风琴组件,这个组件完全基于CSS,没有JavaScript脚本,基于窗口大小进行水平和垂直之间进行切换。...为了让大家更好理解,我将和大家一起一步步的进行完成。 手风琴样式效果: 下图是我们要制作的手风琴效果 本示例需要你具备一些关于flexbox的知识。...然后我们创建相应的单选按钮,并为其分配内容关键词: 建立无序列表 接下来,我们设置一个包含4行的无序列表,每行列表包含了标题项标签和内容项标签: 首先我们在标题选型卡外层定义标签...: 接下来我们来定义手风琴整体外观布局,让其具有响应式,用到了弹性盒子布局,设置display:flex, 同时又应用到了CSS的自定义变量新属性,方便我们进行统一设置和修改,示例代码如下: 然后我们定义无需列表...(accessibility) 以下是完成后的CSS代码内容: 4、响应式处理 接下来我们来处理下,在小屏或可视窗口低于 650px 的情况,幸亏我们使用了弹性盒子布局,在这种情况下,我们让手风琴垂直显示
手风琴(有展开/折叠功能的模块) 手风琴是个垂直罗列的元素组合,例如标签或缩略图,这允许用户切换内容模块的展示。每个标签元素可以被用来展开折叠、暴露隐藏其相关内容。...手风琴一般被用来减少页面滚动,当在单个页面中呈现很多内容模块时。 通过以下术语来理解手风琴: 手风琴标题: 呈现内容模块的标签或缩略图,同时也用来展开内容,在某些实现中,也用来隐藏内容模块。...如果焦点在第一个手风琴标题,允许不响应操作或将焦点移动到手风琴的最后一个标题 键盘交互: 每个手风琴标题包含在一个角色为 button 的元素内。...也就是说,Tab 和 Shift + Tab 不会把焦点移出对话框。但是,与非模态对话框不同的是,模态对话框没有提供在不关闭当前对话框的情况下,将键盘焦点移出对话框窗口的方法。...选项卡列表 被包含在 tablist 元素中的选项卡元素组合。 选项卡 选项卡列表中的一个元素,作为其中一个内容面板的标签,可以激活以显示对应的内容面板。
关于选择哪一个 UI 框架,有人推iview,有人推mintui,有人推vant,还有人推bootstrap4。 框架这东西,各有优劣,难以选出一个目前最好的。当下最好的,也不一定一直优秀。...Vuetify 是 Vue.js 的一个UI组件库,自2016年以来一直在积极开发。提供使用谷歌 Material Design 设计指南构建现代网站所需的一切 UI 能力。...它通过一致的更新周期、对以前版本的长期支持(LTS)、响应式社区参与、巨大的资源生态系统和提供高质量组件来实现这一点。...Material Design 就是它的思想。统一的思想,利于开发出风格一致的项目外观,同时也利于不岗位之间的沟通。 2.1 Vuetify给出的 vue ui 框架对比图 第一条:组件数量。...以下是 vuetify 应用程序在桌面视图中的外观: 当调整浏览器大小时,应用程序应该会切换至移动视图: 2.3 基于 vuetify 后台 web 应用如何开发?
Materialize Google 的 Material Design 的粉丝肯定喜欢 Materialise。该框架基于流行的设计语言,包括大量基于 CSS 和 JavaScript 的元素。...Pure.css Pure.css在压缩后仅为3.8KB,以移动优的先理念为中心。它是模块化的,所以你只需导入要使用的元素包。你还可以下载和安装许多常用布局。...mini.css mini.css 是一个在轻量级和功能丰富之间取得平衡的包。它确实达到了目标,压缩后大约10KB,同时拥有相当多的UI元素和布局。通过它提供的文档你可以深入了解这一切是如何运作的。...Spectre.css Spectre.css 被称为“轻量级、响应式、现代化”,是一个基于Flexbox的框架。你会发现一些基本的布局、UI和排版风格。...此外还有许多功能组件(手风琴、弹出窗口、标签等)都是用纯CSS构建的。总的来说,它做到了很好的平衡性。
什么时候适合用下拉菜单: 陈列子页面 下拉菜单通常适用于陈列所有需要展示的子页面,相当于一个子导航菜单,如下图: ? 博客内容分类 许多博客都会选择用下拉菜单来进行分类和罗列标签。...选项较多且指向性明确 如果用户知道他们找的是什么,可以考虑采用可输入的解决方案。即允许用户输入,并在输入的同时过滤出可能的答案,这样可以节省翻阅长列表的时间。 ?...另外,如果用户将鼠标悬停在灰色选项上超过一秒钟,可以考虑用一个简短的提示信息来解释该选项为何被禁用。 保留菜单标签/说明 打开下拉菜单时,最好是标明菜单标签或说明。...如果菜单打开后标签消失了,用户就得打断操作、去回忆到底该选择什么选项。 支持键盘输入 应支持键盘输入和按键,以在下拉菜单内进行导航 。...从组件面板中拖出一个下拉选择组件和一个弹出面板,在弹出面板中编辑出下拉菜单的下拉内容,再将弹出面板同下拉选择组件进行拼凑、交互。
1、 方法重载与覆盖的区别?...15、 Activity的 onSaveInstanceState() 和 onRestoreInstanceState() 16、 Android的四大组件是什么?它们的作用是什么?...) 21、 Handler的运行机制(运行原理)(Handler,Looper,MessageQueue,Message之间的关系) 22、 listview优化策略?..." android:configChanges="orientation|locale"的含义 46、 如何将一个Activity设置成窗口的样式 47、 谈谈UI中, Padding和Margin有什么区别...,gravity与layout_gravity的区别 48、 哪个组件可以实现手风琴效果,用来实现设置界面的类,实现抽屉效果, 悬浮窗口?
在本篇文章里,我们将一起学习下如何使用 CSS checkbox hack 技术纯手工撸一个响应式的手风琴组件,这个组件完全基于CSS,没有JavaScript脚本,同时又基于窗口大小进行水平和垂直之间进行样式切换...为了让大家更好理解本案例,我将和大家一起一步步的完成。 手风琴样式效果: 下图是我们要制作的手风琴效果动态图: ? 本示例需要你具备一些关于 flexbox 弹性盒子布局的相关知识。...就是说,当用户选择该标签时,浏览器就会自动将焦点转到和标签相关的表单控件上。这就是这个案例的关键所在,让我们能在选项卡直接进行切换。...接下来我们来定义手风琴整体外观样式布局,让其具有响应式,用到了弹性盒子布局,设置 display:flex, 同时又应用到了CSS的自定义变量的新属性,方便我们进行统一设置和修改,示例代码如下: ?...通过本文,我们一起学习了如何使用 CSS checkbox hack 技术纯手工撸一个手风琴组件, CSS checkbox hack 不仅能做手风琴效果,还有完成更多有趣的效果,比如实现常见的导航切换
使用 JS 判断还是挺复杂的,你得设法监听父元素滚动,并且在定位切换时可能产生一些抖动,因为 JS 的执行与 CSS 之间是异步关系。...手风琴菜单 使用 标签可以实现类似一个简易的折叠手风琴效果: title 1 2 在 标签内的 标签内容总是会展示,且点击后会切换 内其他元素的显隐藏。...暗色主题 虽然直觉上暗色主题好像是一种定制业务逻辑,但其实因为暗色主题太过于普遍,以至于操作系统和浏览器都内置实现了,而 CSS 也实现了对应的方法判断当前系统的主题到底是亮色还是暗色:prefers-color-scheme...所以如果系统要实现暗色系主题,最好可以和操作系统设置保持一致,这样用户体验也会更好: @media (prefers-color-scheme: light) { /** ... */ } @media
添加可隐藏的字幕,或其他视觉元素来作为重要声音元素和声音警报的替代方案。 通过在 UI 元素上添加描述性的标签,使用户可以通过声音在应用中导航。...样式 布局 Material Design 的触摸目标指南使那些无法看到屏幕、或者运动不灵活的用户能够点击应用中的元素。 触摸目标 触摸目标是屏幕中响应用户输入的部分。...用户可以在 “通过触摸浏览” 和 “线性导航” 模式之间切换。当页面使用合适的语义化标签时,一些无障碍技术允许用户在页面的这些标记(例如标题)之间导航。...开始熟悉这些工具,然后你可以给他们最好的用户体验。 人们以不同的方式使用无障碍技术。 书写 清晰且有帮助的无障碍文本是使 UI 更易访问的主要方法之一。...状态可以变化的元素 对于可以在值和状态之间切换的图标,根据向用户呈现内容来确定使用什么类型的图标。
Vue Material 是一个轻量级的框架, 建立在谷歌的 Material Design 基础上。 设计强大的和美观的web应用并适用于不同的屏幕。...Vue Material 的目的是提供一组可重用的组件和一系列的UI元素,使用 Vue 2.0 建立支持 主流的浏览器 的应用。 ? 3....通过支持 Material Designs 主题,Vuecidity 作为 Vue版本,非常适合那些对Material Design感到满意的开发人员。 ?...Muse UI是一个受Material Design启发的库,不仅包含我们所期望的所有核心Web组件,而且还包括一些移动组件,例如对话框,滑块和响应式刷新按钮。 ?...像Buefy一样,Vue Blu是Vue和Bulma之间的集成。 它非常有用且轻巧,并且与NPM,Webpack和Babel堆栈具有很好的集成。
主题切换:打算使用Flutter的ThemeData来定义不同的主题,结合全局状态广利,可以确保主题切换可以即时反映在应用的UI上。...图片加载:使用老牌的cached_network_image包来加载和缓存网络图片。它还支持占位符和错误的处理。另外我们也可以考虑一下,如果需要,实现图片预加载和内存管理策略。...或者使用LayoutBuilder和FractionallySizedBox等布局小部件来创建响应式布局,也可以考虑使用flutter_screenutil等包来简化响应式设计的实现。...数据持久化:考虑持久化方案,如shared_preferences、hive、sqflite等,设计数据模型和存储API,以便于数据的读取和写入,最好是统一的 Storage 抽象,来屏蔽掉这些持久化的细节...主题切换模块我决定使用使用provider库来管理主题状态,并允许用户在亮色和暗色主题之间切换,以下是我们 App 入口的架子。
带标签的屏幕 在带标签的屏幕上,悬浮响应式按钮不应以与内容相同的方向退出屏幕。...利用其可见性为主要的UI元素创建令人愉快的变换。 常用变换包括触发,工具栏,Speed dial和变形。 这不是一个详尽的清单。 悬浮响应式按钮的设计灵活。...尝试最适合您的app和按钮所在屏幕的变换。 触发 悬浮响应式按钮可以简单地触发动作或在某处导航。 触摸波动的动画向外扩展导致UI变化。 工具栏 浮动动作按钮可以在按下时变换成工具栏。...如果您有两个选项 ,即您的浮动操作按钮只显示另一个选项,则选最重要的动作作为悬浮响应式按钮。 如果你有超过六个,用户可能难以触摸到最远的选择。 为用户提供最好,最明显,最少的选择,来减少决策疲劳。...该列表不应包含无关的操作。 ? 变形 浮动操作按钮可以转换为属于应用程序结构的一部分材料。 这种戏剧性的变化突出了按钮所能实现的动作。 悬浮响应式按钮变形时,以有逻辑的方式在开始和结束位置之间转换。
全局返回操作 (iOS) 在这种情况下,iOS和Android之间的区别在于,在iOS设备上页面的右滑是返回上一级,而在Android上则是切换标签。...左滑操作切换标签(Android) 应用内部的导航模式在IOS和Android上是不同的 在Material Design设计规范中有一些不同的导航模式。...左侧就是抽屉导航;右侧是标签栏 在Material Design中还有一个组件叫做底部导航。这个组件对于安卓原生应用来说也非常重要。底部的菜单项很容易点击和操作。...但是安卓规范其实不建议同时使用底部导航和标签,因为它可能会在导航时引起混乱。 底部导航(Material Design) 在Apple的人机交互规范中,没有类似抽屉菜单的标准导航控件。...iOS的两种常见导航形式,分段控制和底部标签栏 虽然在两个操作系统中都有类似的功能(切换标签和分段控制,底部导航和标签栏),但导航形式仍然是iOS和Android之间的主要区别之一。
Part1:什么是Material design 自2014年谷歌在I/O大会发布Material Design,至今已经两年多,其遵循纸片与墨水的视觉设计,并将物理运动带入到UI设计中,google...高度包含了静态高度与组件高度,一般UI高度是个固定值,只有状态不一致可能上下移动,但是在变化过后都会自动恢复到自身的静态高度。下面的图表对比了多种元素的静止高度和动态高度偏移。 ?...Behavior中有两个方法layoutDependsOn和onDependentViewChanged,前者是确定所提供的子视图是否有另一个特定的兄弟视图作为一个布局依赖。...以下的进行过滤,将不支持切换动画并且自动调用普通activity跳转方法。...这里ActivityTransitionCoordinator其实和之前介绍的CoordinatorLayout功能有点类似,作为一个协调者,负责两个activity或者两个view之间的事件通信。
前言 正文从这开始~~ 导读 在蚂蚁内部有着数量繁多且复杂的中后台业务系统,Ant Design 一直以来致力于从设计策略和资产的角度解决这些产品的体验一致性问题,随着蚂蚁产品生态的多端化进程,越来越多的跨设备和不同屏幕尺寸导致的问题也逐渐暴露...移动优先设计策略 提响应式设计不得不提「移动优先」设计策略,移动优先[5]的概念最早是 Google 在 2010 年世界移动大会上提出来的一种产品策略,基于 Google 对未来趋势中移动设备将会逐渐拥有核心地位的判断...后来「移动优先」更多被提及是作为一种在响应式设计中应用的设计策略,它认为在响应式设计中优先为屏幕限制更大的移动设备设计,再扩展到大屏幕的 PC 端是一种更有效的设计方法,例如 Alta、Lightning...Material Design 的响应式设计 「移动优先」本质上是基于一种「增强」的设计思想,一个产品如果要同时适应于不同的设备,一直以来有两种策略:优雅降级 vs....在响应式设计中,Flex 布局通常结合 Breakpoints 使用,在两个 Breakpoints 之间让界面做更平滑的过度。
Ionic遵循视图控制模式,通俗的理解和 Cocoa 触摸框架相似。在视图控制模式中,我们将界面的不同部分分为子视图或包含其他视图的子视图控制器。然后视图控制器“驱动”内部视图来提供交互和UI功能。...一个很好的例子就是标签栏(Tab Bar)视图控制器处理点击标签栏在一系列可视化面板间切换。 github。...UI是使用 bootstrap 3 和 AngularJS 的响应式移动开发HTML5框架。...AngularJS modules, 比如 angular-route, angular-touch 和 angular-animate 响应式媒体查询是将bootstrap作为单独的文件,你只需要包含你所需要的东西...它主要专注 iOS 和 Google Material design 以带来最好的用户体验并保持简单。
Vue数据响应式 对于data内的数组和对象初始时定义的元素和属性,都支持响应式,但是对于属性或元素的新增(除特定的被重写的数组对象方法之外的修改)需要使用set接口添加响应式。(深度监视)。...如果我们在v-if切换的组件之外,套上标签,那么本该销毁的组件则会被缓存起来。...当我们重新切换回来时依旧会重新渲染(确实找不到对应的dom元素),但是之前的vue实例没有被销毁,vue实例中的属性和变量都还在,这个标签非常适合做单页面应用。 所有组件都有完整的生命周期。...计算属性和自定义方法的区别 methods方法和computed计算属性,两种方式的最终结果确实是完全相同; 不同的是计算属性是基于它们的响应式依赖进行缓存的。...只在相关响应式依赖发生改变时它们才会重新求值,多次访问计算属性会立即返回之前的计算结果,而不必再次执行函数。 methods方法,每当触发重新渲染时,调用方法将总会再次执行函数。
该项目通过三种形式展示页面之间的切换,比如导航栏上的多个选项卡切换,页面左右两端箭头指示切换,以及使用分段控件。...LxTabBarController - 改变了原生tabbar切换标签时的生硬效果,并加入滑动切换手势(有和界面上的其它手势发生冲突的风险,可根据具体项目予关闭),swift版本。...MGSwipeTableCell - 另一个常见于很多应用中的UI组件,苹果应该考虑在标准的iOS SDK中加入一些类似的内容.Swipeable表格cell是这个pod的最佳描述,也是最好的。...答案选择切换页 - 将scrollview和tableview封装在一起,在初始的时候简单的将数据带上,就可以一页一页的左右来回滑动。...AsyncDisplayKit.swift - AsyncDisplayKit.swift是Facebook的提供异步的界面高流畅性切换及更灵敏的响应框架。
原文:Animating Single Div Art 翻译:nzbin 导读:学习工具的最好的方法就是尝试新技术,本文通过“单元素艺术”介绍了 CSS 变量的使用以及给单元素添加动画的几种方法。...这是所有无动画的 CSS 属性的默认操作,所以这些值之间不会产生过渡效果。 因为我已经提到的特殊状态,这在大多数的浏览器中都不可用。目前,只有 Chrome 和 Opera 支持。...如果跨浏览器支持的话,这是改变状态最快的方法。如果你正在使用 Chrome 和 Opera 浏览,可以使用此方法给手风琴的左侧按键及右侧按钮添加动画。...这个方法对于切换某个属性非常有用 (比如直接改变大小、位置或颜色)。手风琴右侧按钮部分用的就是这一方法 (如果关键帧方法不被支持的话可以用这个方法替换)....在手风琴的例子中, --button4-color 或者 --button4-dim 在 CSS 中没有明确定义。所以当加载时它们会使用 --color1 和 --button-dim 的默认值。
在本文中,我们将为大家讲解另外一个用例,即类似操作栏 (Action Bar)、底部标签栏或者抽屉型导航栏之类的 UI 组件如何在应用中实现导航功能。...和之前对 ActionBar 所做的操作一样,BottomNavigationView 通过匹配 MenuItem 的 id 和导航目的页面的 id 来自动响应导航操作。...现在布局文件已经就绪,我再创建一个 nav_drawer_menu.xml,并且将 donutList 和 coffeeList 作为主要的分组添加为目的页面。...为了使代码保持整洁、各个元素之间更加清晰,我们会在新的方法中实现相关操作,并且在 onCreate() 中调用该方法。...△ 在屏幕较宽的设备上运行 Donut Tracker 请注意,当我切换页面的时候返回按钮会自动显示在左上角。
领取专属 10元无门槛券
手把手带您无忧上云