zoukankan      html  css  js  c++  java
  • 更新卡片的zIndex

    问题描述

    屏幕上有若干张互相重叠的卡片,用户每点击一张卡片,就要把这张卡片的移到最上面,也就是把它的zIndex置为最大值。应该如何操作每个卡片的zIndex才能实现?

    实现方案一

    定义一个全局变量globalZIndex
    一开始zIndex都是0,每点击一次,被点击的卡片:zIndex=++globalZIndex,这样做的坏处是总有一天zIndex会超出int范围。
    但是这种方法并非不可救药,当globalZIndex达到int最大值时,执行对全部元素的排序操作,给各个元素的zIndex重新赋值为0~N之间的数字,同时将globalZIndex置为N。
    这样做时空复杂度都很低,平时操作时特别快(时间复杂度O(1)),但达到int最大值之后就需要一次类似“磁盘碎片整理”的操作需要对卡片进行排序(时间复杂度O(Nlg(N)))。

    实现方案二

    用一个数组a记录各个卡片的zIndex,a[i]表示第i张卡片的zIndex。
    点击卡片时,在数组中找到对应卡片,将后面的元素往前移动一格同时更改它的zIndex。
    这样做的好处是始终将zIndex控制在0~N。每次操作复杂度微O(N)

  • 相关阅读:
    正则表达式
    查看当前文件大小
    logging日志快速上手
    kafka消息队列的使用
    修改文件权限给指定的用户
    使用Dockerfile构建镜像
    k8s 常用命令总结
    k8s pod.yaml配置文件参数
    Linux安装依赖包
    Freeswitch配置SIP网关拨打外部
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/8721632.html
Copyright © 2011-2022 走看看