美文网首页
菜单栏的 resize 效果

菜单栏的 resize 效果

作者: 康乐芳华 | 来源:发表于2019-05-01 17:15 被阅读0次

要实现 vscode 的 resize 效果, 因为要对菜单进行伸缩


vscoderesize.gif

Chrome 也有这种效果


chromeresize.gif
从任务管理器里面可以看出 resize 操作特别的吃 CPU
其实 window 对象是有 resize 这个操作的, 但是对 div 没有 看网上有特别的实现,实现手法是通过 object 元素实现。 但是我觉得不用额外的加元素就能实现

先看我的页面结构


image.png

1 是整个页面的布局容器
2 是侧边栏 使我们需要改变宽度的地方
3 是 sash。这个词还是跟 vscode 学的, 就是装饰的意思, 他是一个空的 div , 作用很简就是当鼠标悬停上面的时候给用户提示:这个地方可以 resize ! 所以这个 sash 的宽度 vscode 设置的是 4px 我也用了 4px。
用法如下可以改变鼠标的形状

.sash:hover{ cursor: w-resize; }

先说 2 区域, 当用户鼠标移动到 sash 上面的时候, 给出光标提示, 当用户按下鼠标的时候整个 resize 操作就被激活了, 激活的意思是可以监测用户的操作了。用户什么操作呢?当然是用户鼠标在页面的移动了。

激活后我们监听 1 区域的 mousemove 操作, 得到一个 event.。event.pageX 就是鼠标的游离点距离页面左侧的距离, 正好可以拿来做 2 区域的宽度。

2 区域的宽度可以设置上限以及下限, 防止用户将宽度整成 0 或者很大, 当然你也可以不做, 看你喜好

当用户的鼠标抬起的时候停止对 nousemove 的监听 这是鼠标再怎么游离也不能改变 2 的宽度

最终效果

selfresize.gif

应为这个 resize 十分的吃 CPU 所以有必要用节流节一下 上面的图是用了 lodash 的 throttle 之后的效果, 在 chrome 里面有时候很正常 像是上面的效果, 有时候就不行了 cpu 能达到 40%- 50%

补一个 vscode 的 sash 的证据


vscodesash.png

相关文章

  • 菜单栏的 resize 效果

    要实现 vscode 的 resize 效果, 因为要对菜单进行伸缩 Chrome 也有这种效果 先看我的页面结...

  • iOS 快速集成头部菜单栏

    最近遇到很吸引我的代码,效果就是这种类似新闻APP的顶部滚动菜单栏: 效果 功能 快速集成顶部菜单栏 拆分为Seg...

  • 进阶18 瀑布流布局

    1: 实现一个瀑布流布局效果 (以下两种效果都有resize功能,并且效果2的加载数量,是随初始窗口大小动态改变)...

  • Material Design控件使用(二)

    本文介绍如何使用DrawerLayout和NavigationView实现侧滑菜单栏的效果。效果如下: Layou...

  • css 使用过不清晰的标签

    resize The resize CSS property sets whether an element is...

  • JS各种实用的效果(合集)

    给大家介绍几种实用的JS的使用,代码很简单,很容易理解。 一.固定菜单栏 实现效果:当页面向下滚动时,菜单栏始终固...

  • HashMap、HashTable

    HashMap的resize的时机和resize的大小,16 0.75 当里面的元素大于24时会进行resize然...

  • android沉浸式状态栏实现

    项目中遇到两种情况: statusbar 和toolbar 颜色保持一致效果如下:ezgif.com-resize...

  • vue实现弧形菜单栏

    需求: 实现一个弧形的菜单栏,并将激活的菜单项移动到中间位置,点击按钮可对该菜单栏进行显示隐藏。 1. 实现效果 ...

  • OpenCV(iOS)图像尺寸缩放(14)

    尺寸调整:resize()函数 resize(InputArray src, OutputArray d...

网友评论

      本文标题:菜单栏的 resize 效果

      本文链接:https://www.haomeiwen.com/subject/cqkwnqtx.html