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

腾讯面试官:如何从0到1实现一个高性能Collapse折叠组件,直到现在我还实现不出来

、自定义箭头、禁用状态、隐藏是否渲染DOM结构 组件接口定义 Collapse 属性 说明 类型 默认值 accordion 是否开启手风琴模式 boolean false activeKey 当前展开面板的...[] - onChange 切换面板触发 手风琴模式:(activeKey: string | null) => void 非手风琴模式:(activeKey: string[]) => void -...在这种模式下,只有一个面板可以被展开。当一个新的面板被展开,之前展开的面板将被关闭。 activeKey:当前展开面板的key。如果我们处于手风琴模式,这将是一个字符串或null。...disabled:如果设置为true,我们将禁用面板,使其不能被打开或关闭。 forceRender:如果设置为true,我们将在面板关闭仍然渲染它的DOM结构。...如果这个属性被设置为true,我们会在组件隐藏仍然渲染DOM结构,如果面板渲染的数据量比较大,这个属性特别有用,不会造成打开的时候会卡顿一下 import React, { useState }

36220

使用 CSS Checkbox Hack 技术纯手工撸一个手风琴组件

本篇文章里,我们将一起学习下如何使用 CSS checkbox hack 技术纯手工撸一个响应式的手风琴组件,这个组件完全基于CSS,没有JavaScript脚本,同时又基于窗口大小进行水平和垂直之间进行样式切换...最后我们来定义选项卡内容文本的内容样式,我们应该默认第一个选项卡的内容处于展示状态,其它选项卡隐藏,这里我们先让所有的选项卡默认隐藏,后面我们会使用 Checkbox Hack 技巧让选中的选项卡内容处于显示状态...最后定义一个可选的外观样式(非必须样式,可选),当每个单选按钮获取焦点,我们为lable标签定义outline属性,这个细节帮助我们增强组件的可访问性。...5、处理内容有限的情况 我们的案例中,每个选项卡的内容都很多,看起来很漂亮。但是为了确保没有足够内容支撑手风琴效果不走样,我们需要进行一些样式上的特殊处理,效果如下图所示: ?...通过本文,我们一起学习了如何使用 CSS checkbox hack 技术纯手工撸一个手风琴组件, CSS checkbox hack 不仅能做手风琴效果,还有完成更多有趣的效果,比如实现常见的导航切换

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

【CSS动效实战(纯CSS与JS动效)】03 精美手风琴侧边栏完整示例教程 示例1

本节示例演示: 一、基本布局 一般来说,侧边栏的位置是左侧,咱们为了更好的展现侧边栏的效果,并且本节中不涉及过多的内容,我们只需要直接给一个 div 宽度为 15即可,接着再到这个 div...--手风琴侧边栏--> 在此我们只是给这个手风琴侧边栏定义了一个基础的边框和宽度,接下来创建 logo和 logo 下的 span 样式: ...--手风琴侧边栏--> <!...html 元素实现,那就是 radio ;在其选中一个类型内容后,将会展开对应的内部选项,这些选项需要一个 div 统一对其进行管理,那么选项的 div 之下应该还需要创建一个 div,并且 div...ul 的意思是为所有相同父元素中位于.accordion input:checked 之后的所有 content 下的 ul 元素设置CSS,其中 波浪线 之前表示 什么什么之后,content ul

2.8K20

一些好用的jquery技巧

所有你真正需要做的是800毫秒的时间内设置文档主体的动画,直到它滚动到文档的顶部。 注:小心scrollTop的一些错误行为。...5、悬停切换类 假设你希望当用户将鼠标悬停在可点击的元素上,它会改变颜色。...但是,如果你想要元素一次点击的时候出现,然后第二次点击的时候消失的话,那么可以试试下面的代码: // Fade $('.btn').click(function () { $('.element'...这是一个可快速生成手风琴的简单方法: // Close all panels $('#accordion').find('.content').hide(); // Accordion $('#accordion.../窗口打开外部链接 一个新的浏览器tab或窗口中打开外部链接,并确保同一个来源的链接能在同一个tab或者窗口中打开: $('a[href^="http"]').attr('target', '_blank

3.9K60

带你走近AngularJS - 体验指令实例

手风琴指令 我们展示的第一个例子是手风琴效果指令: 效果图如下: ?...在线实例地址:手风琴指令 不使用AngularJS的纯HTML源码如下: <div class="<em>accordion</em>-group...由于模板中只有<em>一个</em>元素,所以没有设置其他选项。 代码中最有趣的部分是link 方法。它在参数element具有id<em>时</em>启作用,如果没有,会依据指令的 Scope自动创建ID。...Google Maps 指令 下<em>一个</em>例子是创建Google地图的指令: ? Google Maps 指令 <em>在</em>我们创建指令之前,我们需要添加Google APIs 引用到页面中: <!...function () { if (map && scope.center) map.setCenter(getLocation(scope.center)); }); 监测方法正如我们<em>在</em>文章开始<em>时</em>描述的

2.4K50

SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(六)

当前后端分离,权限问题的处理也和我们传统的处理方式有一点差异。...本系列文章并不是手把手的教程,主要介绍了核心思路并讲解了核心代码,完整的代码小伙伴们可以GitHub上star并clone下来研究。...角色展示 角色的展示采用了ElementUI中的Collapse 折叠面板,并且采用了手风琴模式,即一次打开一个角色,如下图: ?...2.el-collapse-item的内容就是一个树形控件,很明显,树形控件的数量和el-collapse-item的数量是一样多的,但是考虑到el-collapse-item使用了手风琴模式,即一次只有一个折叠面板被打开...,因此树形控件的数据源只有一个,即多个树形控件共用一个数据源,为了避免数据紊乱,我采取了这样的数据加载方式:当用户每次点击折叠面板的时候,我都根据当前折叠面板所对应的角色去查询该角色所对应的资源,同时也查询所有的资源

86470

【译】W3C WAI-ARIA最佳实践 -- 控件

手风琴一般被用来减少页面滚动,当在单个页面中呈现很多内容模块。 通过以下术语来理解手风琴手风琴标题: 呈现内容模块的标签或缩略图,同时也用来展开内容,某些实现中,也用来隐藏内容模块。...示例: 手风琴示例:演示把一个表单分成三部分,并使用手风琴导航一次展开其中一部分 键盘交互: Enter 或 Space: 当焦点在折叠状态的手风琴标题上,使用 Enter 或 Space 键可以展开相关联面板...NOTE 当对话框被打开,根据内容的性质和大小放置焦点。 在任何情况下,焦点都应该移动到对话框中的一个元素上。 除非建议某个操作的情况,焦点应该被初始设置一个可聚焦的元素上。...例如,网格包含一个具有用于添加行的按钮的相关工具条。 Add Row按钮打开一个提示输入行数的对话框。对话框关闭以后,焦点应该放在新增行的第一个单元格中。...指定描述元素,当对话框打开,能够让屏幕阅读器朗读对话框标题和初始聚焦元素的同时,朗读该描述。

4.5K30

使用element-ui中table expand展开行控制显示隐藏(手风琴效果)

可以说有点糟糕了,但是我后来在后面的文档中发现The methods 里面有写到一个方法叫toggleRowExpansion,这个方法应该是官方本意上想让我们来自由控制展开状态的,从传递的两个参数来看...同样的,toggleRowExpansion方法也支持手风琴效果,点击展开自己的同时关闭原先除自己之外的已打开的展开项,实现手风琴,修改methods→toogleExpand方法: toogleExpand...我们把每行的expand关闭一次,再把对应的行打开,这样就实现了手风琴效果了。...新的问题,当我们点击打开手风琴,每次都至少有一个打开状态的,这样很明显是bug了,我们做一下让已打开行的expand合闭。...bug原因:当我们点击已打开的expand想关闭它,相当于走了一遍$table.toggleRowExpansion(row, false)后,又走了一遍$table.toggleRowExpansion

8.6K31

收集的35个 jQuery 小技巧代码片段,可以帮你快速开发.

新窗口中打开链接 XHTML 1.0 Strict doesn’t allow this attribute in the code, so use this to keep the code valid...error', function () { $(this).prop('src', 'img/broken.png'); }); 15.鼠标悬停(hover)切换 class 属性 假如当用户鼠标悬停在一个可点击的元素上...,你希望改变其效果,下面这段代码可以在其悬停在元素上添加 class 属性,当用户鼠标离开,则自动取消该 class 属性: $('.btn').hover(function () { $(this...'slow'); }); // Toggle $('.btn').click(function () { $('.element').slideToggle('slow'); }); 19.简单的手风琴效果...这是一个实现手风琴效果快速简单的方法: // Close all panels $('#accordion').find('.content').hide(); // Accordion $('#accordion

5.4K20

每个程序员都会的 35 个 jQuery 小技巧

input.blur( function(){ if( $.trim(input.val()) == '' ){ input.val(originalvalue); } }); } 新窗口中打开链接...自动修改破损图像 如果你碰巧在你的网站上发现了破碎的图像链接,你可以用一个不易被替换的图像来代替它们。...鼠标悬停(hover)切换 class 属性 假如当用户鼠标悬停在一个可点击的元素上,你希望改变其效果,下面这段代码可以在其悬停在元素上添加 class 属性,当用户鼠标离开,则自动取消该 class...('slow'); }); // Toggle $('.btn').click(function () { $('.element').slideToggle('slow'); }); 简单的手风琴效果...这是一个实现手风琴效果快速简单的方法: // Close all panels $('#accordion').find('.content').hide(); // Accordion $('#accordion

4.4K10

ASP.NET MVC使用Bootstrap系列(4)——使用JavaScript插件

Delete 同样,也可以使用编程方式API来打开一个模态框...元素并设置class为tab-content,父的div容器中为每一个Tab内容创建div元素,并设置class为tab-pane和标识的Id,通过添加active来激活哪一个Tab内容的显示...手风琴组件(collapse.js) 手风琴组件有若干panel groups组成,每一个panel group依次包含了若干header和content 元素,最常见的使用场景就是FAQ,如下所示:...你可以许多网站上看到这种组件,要使用它也是非常方便的: 将Carousel组件被包含在一个class为carousel以及data-ride为"carousel"的元素中。...在上述容器里添加一个有序列表,它将渲染成小圆点代表当前激活的幻灯片(显示右下角)。

5.1K60

程序员都会的 35 个 jQuery 小技巧

新窗口中打开链接 XHTML 1.0 Strict doesn’t allow this attribute in the code, so use this to keep the code valid...14.自动修改破损图像 如果你碰巧在你的网站上发现了破碎的图像链接,你可以用一个不易被替换的图像来代替它们。...15.鼠标悬停(hover)切换 class 属性 假如当用户鼠标悬停在一个可点击的元素上,你希望改变其效果,下面这段代码可以在其悬停在元素上添加 class 属性,当用户鼠标离开,则自动取消该...这是一个实现手风琴效果快速简单的方法: // Close all panels $('#accordion').find('.content').hide(); // Accordion $('...#accordion').find('.accordion-header').click(function () {   var next = $(this).next();   next.slideToggle

2.6K00

【实战经验】ElementUI 的 Tree 组件的基本使用。

页面上展示父级目录名称和当前所在路径,用 ‘/’ 分隔。 根目录固定为 图片空间 。 页面首次打开的时候,请求接口,只返回一级目录,默认展示所有一级目录。...我是点击的时候,递归查找点击节点的父元素,然后把所有祖代元素放在数组里,最后进行拼接。...//template <el-tree :data="treeData" //数据源 :props="defaultProps" //配置项 accordion //...每次打开一个节点 手风琴模式 ref="tree" //用来获取dom lazy //节点懒加载 :highlight-current='true' //高亮当前节点...五的树结构懒加载,点完一级请求一级的数据 if (node.level >= 1) { this.getCategoryListNew(node, resolve); // 防止子节点为空一直出现加载动画

1.2K30

使用 CSS Checkbox Hack 技术制作一个手风琴组件

本篇文章里,我们一起学习下如何使用 CSS checkbox hack 技巧制作一个响应式的手风琴组件,这个组件完全基于CSS,没有JavaScript脚本,基于窗口大小进行水平和垂直之间进行切换。...,然后设置标题选项卡的宽度为70px,以及定义鼠标经过的外观样式: 由于宽度有限,我们需要旋转标题文字的方向,让其由下往上垂直显示,示例代码如下: 最后我们来定义选项卡内容文本的样式,我们应该默认第一个选项卡的内容出于展示状态...最后定义一个可选的外观样式,当每个单选按钮获取焦点,我们为lable标签定义outline属性,这个细节帮组我们增强组件的可访问性。...但是为了确保没有足够内容支撑手风琴效果不走样,我们需要进行一些样式上的特殊处理,效果如下图所示: 我们需要在每个当前选中状态的选项卡里添加flex-grow: 1属性,并不是所有的选项卡,让当前选中的选项卡里占据所有剩余宽度...CSS手风琴效果, CSS checkbox hack 不仅能做手风琴效果,还有更多有趣的效果等待你挖掘,比如实现常见的导航切换、点击按钮弹出层的效果,不用写一行JS代码,是不是觉得CSS很神奇呢,接下来的文章

5.3K30

高颜值在线绘图平台ImageGP系列教程 - 参数介绍

支持直接粘贴矩阵到对应的文本框 (不需要注册)或先注册后上传文件再选择已上传的文件 (适合数据比较大,直接粘贴进来会把浏览器卡住的情形;或者多个工具都会用到的数据,上传一次多次使用)。...每个手风琴里面有更多参数可以设置,如果该手风琴里面有必选参数,通常是打开的;如果没有必选参数,默认是收起的。...1.3 参数的控制 参数前面如果有一个红色的星号 (*)表示是必选或必填参数。如果必选或必填参数为空,则不能提交;或提交也会弹出信息,不允许提交。...参数的智能控制: 点击Check data之前,所有下方参数都不可用。需要先确保数据格式无误、Check data 通过后,才可以选择更多参数。...这样一来可以避免输入错误,二来也给了一个提示这个参数应该提供什么信息。 颜色参数之间存在互斥。选择颜色集合和自定义取色两个只有一个处于可选状态,清空一个选项,另一个选项即可用。

1.2K40
领券