当前位置: 首页 > 知识库问答 >
问题:

javascript - css 使用过多position定位元素,造成拖拽卡顿,如何解决?

吕英豪
2023-04-27
  1. 在做一个元素的拖拽的时候,对关闭图标和右键弹出层使用了position:absolute来相对于父元素(即每一个应用)进行定位。再通过mousedownmousemovemouseup三个事件来实现拖拽的逻辑,这样实现之后,发现当元素过多时,拖拽会卡顿。

  2. 如下面图片所示:
    image.png

共有1个答案

田兴旺
2023-04-27

position: absolute 来实现元素的拖拽每次拖拽操作都需要对受影响元素进行新的布局计算和渲染,会有性能问题, 题主已经出现了, JavaScript线程在执行拖拽操作的同时,还需要同时处理其他UI更新:

  • 使用transform属性代替left/top定位方式,减少重排重绘的频率, 例如:transfrom: translate(x, y);
 类似资料:
  • position 属性指定了元素的定位类型。 position 属性的五个值: fixed 定位 元素的位置相对于浏览器窗口是固定位置。 即使窗口是滚动的它也不会移动:p.pos_fixed { position:fixed; top:30px; right:5px; } 注意: Fixed 定位在 IE7 和 IE8 下需要描述 !DOCTYPE 才能支持。 Fixed定位使元素的位置与文档流无

  • 本文向大家介绍如何使用JavaScript和CSS创建可拖动的HTML元素?,包括了如何使用JavaScript和CSS创建可拖动的HTML元素?的使用技巧和注意事项,需要的朋友参考一下 要使用JavaScript和CSS创建可拖动的HTML元素,代码如下- 示例 输出结果 上面的代码将产生以下输出- 通过拖动来移动div时-

  • 本文向大家介绍jQuery实现html元素拖拽,包括了jQuery实现html元素拖拽的使用技巧和注意事项,需要的朋友参考一下 代码很简单,效果非常棒,直接给大家上源码: html css js 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 当 jQuery UI 可拖拽元素被拖动到日程表上后触发: function( date, allDay, jsEvent, ui ) { } date 是当前的“可拖拽元素”拖动到的位置的 js Date对象。 allDay jsEvent ui this 是被拖拽的DOM元素。 官方英文文档:http://arshaw.com/fullcalendar/docs/dropping/drop/

  • dropAccept 提供了一种方法来判断哪些元素可以拖拽到日程表上,值为字符串或者函数,默认值为“*”。 默认情况下,将 FullCalendar 的 droppable 设置为 true,日程表接受所有“可拖拽元素”。dropAccept 属性让 FulLCalendar 更加有选择性的接受“可拖拽元素”。 dropAccept 的值可以是一个 jQuery 选择器字符串。也可以是一个函数,接

  • 定义外部的 jQuery UI 拖拽元素是否可以拖动到日程表上,值为布尔类型,默认false。此属性依赖于 jQuery UI,必须下载引用 jQuery UI 的文件,然后初始化可拖拽元素。此外,还要将 FullCalendar 的 droppable 属性设置为 true。下例演示如何初始化一个元素,拖拽到日程表: $('#my-draggable').draggable({ reve