首页 > 其他分享 >cdkdroplist,调整button排序和位置问题

cdkdroplist,调整button排序和位置问题

时间:2024-03-15 18:44:06浏览次数:14  
标签:滚动 auto button 滚动条 item tab cdkdroplist 排序

button enhancement;

简单做个记录,给自己看的哈哈!!!

应用场景

由于cdkdroplist多行时的item移动难用的一批,跟需求讨论决定搞成单行的滚动条;好了开干,玩的就是真实。item少的时候就不说了,正常。当item多时需要滚动,开始操作:

超出文本滚动,不换行... 等等,原本根据配置的居左居右咋办。原来的版本,靠左时,margin-right:auto;靠右时,margin-left:auto;
这下好了,auto不理你,但是你又要考虑item少时不需要滚动的场景。

前期css简单处理下,例如:tab最大宽度,tab超出文本省略号。开始处理逻辑:
当tab不够多不足以出现滚动条时:

此时也不需要过多的逻辑,只有删除tab后的选中逻辑;

当tab足够多足以出现滚动条时:

我们新建一个tab时,tab有默认tab名,此时tab滚动到最右边;

当修改完名称,自适应tab宽度至最右边;

当点击其他tab,且这个tab不完全暴露在视口时,点击后会滚动到该tab贴近左侧或者右侧,这里其实跟删除tab定位到上一个tab的功能是一样的。具体看思路及代码

那么还需要考虑到窗口变化时,也需要切换tab方法的判断:

实现思路

tabControl中三个属性分别是滚动到最左边,滚动到最右边,tab足够多足以出现滚动条;
鼠标点下左键或者右键时,触发鼠标滚动事件,此时hostlistener监听document的mousemove事件,事件里通过点下时拿到的是左键还是右键判断拿到一个滚动的方向,通过定时器一直加offsetX值,传给我们的droplist,动态样式[style.transform]=“’translateX(‘ + offsetX + ’px)‘”。其次就是scrollToSelectedTab的方法对于几种场景的集合判断。当完成tab名的修改时,新增tab时,删除时,点击时都指向该方法。具体看代码:

实现代码

这里有监听resize ,判断超出,没问题扔给scrollToSelectedTab方法

关键的scrollToSelectedTab方法



标签:滚动,auto,button,滚动条,item,tab,cdkdroplist,排序
From: https://www.cnblogs.com/zzxblogs999/p/18076042

相关文章

  • 【算法】二分查找——在排序数组中查找元素的第一个和最后一个位置
    leetcode链接题目描述给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1,-1]。你必须设计并实现时间复杂度为O(logn)的算法解决此问题。示例1:输入:nums=[5,......
  • 十大经典排序之选择排序
    文章目录概要整体架构流程代码实现小结概要选择排序是一种简单直观的排序算法,无论什么数据进去都是O(n²)的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。整体架构流程首先在未排序序列中找到最小(大)元素,存放到......
  • 归并排序、快速排序——左神数据结构与算法Day2学习笔记C++版本(持续更新)
    递归行为        利用递归求整个数组的最大值,代码如下。intfind_Max(inta[],intL,intR){if(L==R){returna[L];}intmid=L+((R-L)>>1);//mid是数组的中点intleftMax=find_Max(a,L,mid);intrightMax......
  • LeetCode题练习与总结:搜索旋转排序数组
    一、题目整数数组nums按升序排列,数组中的值互不相同。在传递给函数之前,nums在预先未知的某个下标k(0<=k<nums.length)上进行了旋转,使数组变为[nums[k],nums[k+1],...,nums[n-1],nums[0],nums[1],...,nums[k-1]](下标从0开始计数)。例如,[0,1,2,4,5,6,7]......
  • LeetCode题练习与总结:在排序数组中查找元素的第一个和最后一个位置
    一、题目给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回 [-1,-1]。你必须设计并实现时间复杂度为 O(logn) 的算法解决此问题。二、解题思路1.查找起始位置:使......
  • Java中的Map集合如何根据key值排序?
    Java中的Map集合如何根据key值排序(HashMap<String,Object>)?Map集合的键(key)默认是按照它们的hashCode排序的,这在有时间不符合业务排序。如果你想要根据Map的key值进行排序,一般以下有几种方法可以实现。方法一:使用TreeMap使用TreeMap类,它会自动根据key的自然顺序或自定义比较器......
  • 经典排序算法回顾:
    排序算法有非常多,应用也非常多,在各种笔试面试中也常常出现,所以现在就来复习一下相关的排序算法吧!下面会介绍多种排序算法,在此之前先说一下,排序算法的评价主要有以下几个方面:排序算法的时间复杂度;排序算法的空间复杂度;排序算法的稳定性其中前两个是老生常谈了,基本提到算法都会考虑......
  • 14_学习日志_数据结构_冒泡排序_快速排序_插入排序
    #include<编织有意义的谎言,使我相信闭上眼再睁开眼时的世界是同一个>1.介绍    从后往前或者从前往后开始两两比较元素,使得最小数上浮或者最大数下沉为冒泡排序,快速排序利用分治思想,使得基准数左边都存放相对较小数,右边存放较大数,两边再按照同样的做法重复。插入排序......
  • Java(计算机相关)面试之海量数据问题处理(1)分治/hash/排序
    原文链接:https://blog.csdn.net/a619602087/article/details/130348569面试的时候经常被问到海量数据处理问题,下面我会分期介绍几种海量数据处理的思路还有案例了解了之后面试不用怕了大数据处理思路:分而治之/Hash映射+HashMap统计+堆/快速/归并排序分而治之/hash映射:......
  • C语言冒泡排序
            冒泡排序是一种简单的排序算法,通过重复遍历要排序的数列,依次比较两个相邻的元素,如果它们的顺序错误则交换它们。这个过程会重复进行,直到没有相邻的元素需要交换,也就是数列已经排序完成。        冒泡排序的名字来源于其工作方式,因为较小的元素会像气......