应用 CSS3 缩放时可排序行为错误

2024-03-04

我正在使用 CSS 转换缩放 JQuery 可排序元素。拖动时可排序项目的起始位置和偏移量都是错误的,因为 JQuery 不考虑 CSS 比例。我用这里找到的代码部分解决了这个问题:

jQuery 拖动/使用 CSS 变换比例调整大小 https://stackoverflow.com/questions/10212683/jquery-drag-resize-with-css-transform-scale%5B1%5D

但我无法解决的是拖动开始时的可排序项目位置。它向上向右跳一点。我不知道要放入启动事件处理程序中的内容:

        start: function(e, ui)
        {
            // something is needed here to fix the initial offset
        }

这个小提琴显示了问题:http://jsfiddle.net/adrianrosca/zbvLp/4/ http://jsfiddle.net/adrianrosca/zbvLp/4/


与一处区别可拖动的那是转换不是在元素本身上,而是在父元素上。所以它改变了一点逻辑。

这是针对这种特定情况的解决方案,但您会发现它可能会根据情况而变化。例如,如果你改变变换原点,或者如果您有水平排序,则必须对其进行调整。但逻辑保持不变:

var zoomScale = 0.5;

$(".container")
  .sortable({

    sort: function(e, ui) {
    console.log(ui.position.left)
      var changeLeft = ui.position.left - ui.originalPosition.left;
      // For left position, the problem here is not only the scaling,
      // but the transform origin. Since the position is dynamic
      // the left coordinate you get from ui.position is not the one
      // used by transform origin. You need to adjust so that
      // it stays "0", this way the transform will replace it properly
      var newLeft = ui.originalPosition.left + changeLeft / zoomScale - ui.item.parent().offset().left;

      // For top, it's simpler. Since origin is top, 
      // no need to adjust the offset. Simply undo the correction
      // on the position that transform is doing so that
      // it stays with the mouse position
      var newTop = ui.position.top / zoomScale;

      ui.helper.css({
        left: newLeft,
        top: newTop
      });
    }
  });

http://jsfiddle.net/aL4ntzsh/5/ http://jsfiddle.net/aL4ntzsh/5/

EDIT:

之前的答案适用于定位,但正如 Decent Dabbler 所指出的,验证何时应该进行排序的交集函数存在一个缺陷。基本上,位置计算正确,但项目保留width and height未转换的值,这导致了问题。 您可以通过在开始事件时修改这些值来调整这些值,以考虑比例因子。例如这样:

 start: function(e, ui) {
      var items = $(this).data()['ui-sortable'].items;
      items.forEach(function(item) {
        item.height *= zoomScale;
        item.width *= zoomScale;
      });
    }

http://jsfiddle.net/rgxnup4v/2/ http://jsfiddle.net/rgxnup4v/2/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

应用 CSS3 缩放时可排序行为错误 的相关文章

  • python:html 编写器?

    使用 jquery 可以很容易地使用选择器技术在另一个元素中插入一些元素 我想知道是否有任何 python 库可以做与 jquery 类似的事情 原因是我希望服务器端 python 程序生成静态页面 这需要解析 html 并向其中插入一些内
  • 如何使用 Bourbon Neat Framework 实现移动优先

    我一直在使用 bourbon clean 来进行桌面优先布局 效果很好 不过 我想做一个移动优先版本 从移动开始 然后逐步向上 默认网格为 12 列 对于移动设备 我通常使用 4 列网格 我尝试将网格更改为 4 列 然后扩展到 12 列 但
  • jQuery beforeunload 自定义弹出窗口用于离开页面

    您好 我想自定义离开页面的弹出窗口 有什么简单的方法可以做到这一点吗 我正在使用简单的 jQuery document ready function var myPopUp pop up css display block window b
  • 如何将模糊屏幕设置为整页并在点击页面时转到顶部

    CSS1 有效 parentDisable z index 2000 width 100 height 100 display none position absolute left 0 background url images btra
  • Foreach Ajax Json - Jquery

    谁能帮我 我有一个数组 stars Chris Pine Keira Knightley Kevin Costner 我想做的是 foreach star 我想将输入附加到 div 和 foreach star 它们在输入中具有值 这就是我
  • iPad Safari 100% 高度问题

    我的页面上有一个模态 div 它使背景变灰 如果我将overlay div的高度设置为100 它在IE 桌面 上工作正常 但在iPad Safari上 完整的高度不会变灰 究竟是什么问题 这与固定位置 视口有关吗 请帮忙 下面是相同的 CS
  • 如何使用重复的键动态生成 JSON 对象?

    我知道这听起来不可能 但我的老板告诉我 我必须使用 jQuery 通过 AJAX 后调用发送 JSON 并且必须具有重复的键 问题是 如果我写这样的东西 post someurl key1 value1 key2 value2 key2 v
  • 实现快速 Javascript 搜索?

    基本上 我有一个带有文本框的页面和 ul 列在其下面 这 ul 由用户的朋友列表填充 用户开始在文本框中输入朋友的名字 例如按 r 我想立即更新 ul 每次按键仅显示名字以 R 开头的朋友 例如 Richard Redmond Raheem
  • 使用 .add() 选择多个 jQuery 对象

    是否 add http api jquery com add 方法允许一次选择多个对象而不是一次添加一个 one add two add three add four on click function 以下变量的设置方式相同 因为每个变量
  • 使用 Jquery 附加链接

    我正在尝试根据您所在的页面添加指向我的页面的链接 我使用 Squarespace 来构建这个网站 因此对我来说最简单的方法是使用 Javascript 或 Jquery 我认为我缺少的这个语法有问题 我已经尝试用 来打破引号 但这不起作用
  • 我需要一个 jQuery Autocomplete 使用 ajax 返回 id 和 name 的示例

    我需要一个示例 说明如何编写 jQuery 自动完成代码来填充product id 同时显示调用ajax 页面 remote php 的product name
  • IE8 中空 div 层的 z-index 问题

    我在 IE8 中遇到 z index 问题 其他尚未测试 以下 JS 创建一些 html css document write img src border 0 document write div style background col
  • jquery ajax加载后丢失CSS

    大家知道如何解决 load Ajax 请求后的 css 问题吗 例如 如果我想从网页加载 DIV 在我的 Ajax 请求之后 container load path to div div id 我丢失了与该 div 关联的所有 css 和脚
  • 如何在不设置动画的情况下突然更改 CSS 动画中的属性

    这是我试图弄清楚的 但没有使用 51 关键帧作为实现更改的黑客方法transform origin 这里有一个小提琴演示 http jsfiddle net p7pswnpq keyframes spin 0 transform origi
  • CSS 动画自定义属性/变量

    一段时间以来我一直在努力让它发挥作用 关键是内部 div 将具有某种形状 并且可能会不止一个 这就是为什么我使用nth child选择器 这个内部 div 应该显示然后再次隐藏一段时间 问题是 我想在一个动画中为所有 后来的 多个内部 di
  • 媒体查询:如何定位桌面、平板电脑和移动设备?

    我一直在对媒体查询进行一些研究 但我仍然不太明白如何定位特定大小的设备 我希望能够针对台式机 平板电脑和移动设备 我知道会存在一些差异 但如果有一个可用于针对这些设备的通用系统 那就太好了 我发现的一些例子 Mobile only scre
  • 如何使用 Jquery .animate() 函数创建连续滚动内容? [复制]

    这个问题在这里已经有答案了 可能的重复 在jquery中实现圆形滚动条 https stackoverflow com questions 812049 implementing circular scroller in jquery 我想
  • 中心引导表宽度为 100%?

    table class table table striped table hover table responsive table
  • 优化 CSS 交付 - Google 的建议

    谷歌建议在 head 中使用非常重要的 CSS 内联 并在内部使用其他 CSS
  • 我如何用 javascript/jquery 进行两指拖动?

    我正在尝试创建当有两个手指放在 div 上时拖动 div 的功能 我已将 div 绑定到 touchstart 和 touchmove 事件 我只是不确定如何编写这些函数 就像是if event originalEvent targetTo

随机推荐

  • 如何检测CSS3调整大小事件

    CSS3 resize 属性可以分配给任意元素 我正在寻找一种方法来检测 div 上的此类调整大小 我不介意它目前仅在 Firefox 中工作 div resize horizontal overflow hidden 不幸的是 onres
  • 为什么我在制作 Spring 项目时会收到​​ not Exposure to the weaver 警告?

    当我制作 Spring 项目时 我似乎收到了很多这样的警告 该项目使用编译时编织和各种 Spring 注释 例如 Transactional Autowired 和 Configurable 我有三个问题 它们是什么 有什么效果 我应该关心
  • 当我结合 UIPanGestureRecognizer 和自动布局时,我的 UIViews 搞砸了

    当我沿着圆形轨迹拖动手指时 我想要一个球来跟踪我的手指 以适应 iPhone 或 iPad 上每个允许的设备方向 当设备旋转时 视图似乎正确居中 但球不会停留在圆周上 并且当我拖动它时 它似乎会去任何地方 EDIT 马丁 R的回答 http
  • 如何下载特定谷歌云“服务”的代码

    This doc https cloud google com appengine docs python tools downloading source code显示下载我在应用程序引擎中拥有的应用程序源代码的命令 appcfg py
  • Spring MVC 在表单中选择值:表单验证错误后选择

    我的验证表单有问题 该表单有很多不同的字段 输入文本字段 选择选项 多重选择选项 我已经使用 Spring Security 开发了有关验证表单的所有逻辑源代码 但是当验证表单失败 例如 用户没有填写任何内容 并再次重新加载表单时 所有输入
  • 没有开发者许可证/应用商店的 iOS 应用

    我是 iPhone 开发新手 想知道是否有一个好的 简单的指南可以让我在不加入开发者计划的情况下在越狱手机上安装 iOS 应用程序 基本上 我不知道我是否有时间学习我需要学习的所有内容 但我想开始看看它会带来什么结果 一旦我有了一些像样的东
  • 为什么我的可转换核心数据属性不使用我的自定义 NSValueTransformer?

    我有一个核心数据应用程序 具有相当简单的数据模型 我希望能够将 NSImage 实例作为 PNG Bitmap NSData 对象存储在持久存储中 以节省空间 为此 我编写了一个简单的 NSValueTransformer 将 NSImag
  • 从日期中提取年中的天数

    我有一个这样的日期列表 library lubridate my dates lt c 03 01 2006 28 01 2006 12 01 2008 02 02 2006 03 03 2008 my dates lt dmy my da
  • 在密码框的某些事件中显示密码字符

    我正在开发一个 Windows Phone 应用程序 我要求用户登录 在登录页面上 用户必须输入密码 现在我想要的是给用户一个复选框 选择该复选框后应显示密码的字符 我没有在密码框中看到任何显示密码字符的属性 请建议一些方法来做到这一点 不
  • 调试和分析网络工作者

    我正在运行计算 例如网络工作者的寻路 这可能需要几秒钟 我想优化它 对于我当前的代码来说 Chrome 似乎快了大约 3 倍 但是时间花在哪里或者为什么我不知道 一般来说 如何调试 Web Worker 如何分析网络工作者 火狐和 Chro
  • 使用 jQuery 隐藏跨度

    即使已经嵌入图像 如果没有文本 如何隐藏跨度 基本上每个跨度中都嵌入了很少的网页图标和视频图标 访问网站 webicon 查看视频 videoicon 因此 如果 没有链接文本 嵌入WEBICON 包括图像图标在内的整个内容都应该隐藏 di
  • 如何让 Backbone.ajax 返回成功数据

    我试图让 Backbone ajax 返回集合 集合 我需要程序的另一部分的模型 我想让数据在与 ajax 方法相同的级别上可用 Backbone ajax dataType jsonp url https api twitter com
  • 如何通过字符串或整数获取枚举值

    如果我有枚举字符串或枚举 int 值 如何获取枚举值 例如 如果我有一个枚举如下 public enum TestEnum Value1 1 Value2 2 Value3 3 在某些字符串变量中 我的值 value1 如下 string
  • 我想找到线程消息并使用 slack-api 删除它

    可以通过以下方法找到私信或私信im history and converstation history 如何查找话题消息 我想找到线程消息并删除它们 查找话题消息 您需要使用conversations history https api s
  • jQuery 验证插件 - 如何在页面加载时显示标签

    填写输入后 该插件会插入一个标签 但是我希望在页面加载时插入所有标签 任何想法都会很棒 谢谢 该插件的链接在这里 http jqueryvalidation org documentation http jqueryvalidation o
  • 如何计算列表中点的距离?

    我有两组列表 A 和 O 它们都有来自 x y z 坐标的点 我想计算A点和B点之间的距离 我使用了for循环 但它只给了我一个结果 它应该从结果中给出 8 个数字 我很感激有人能看一下 这是我的项目的最后一步 Ax 232 34 233
  • 如何设置 Eclipse 工作区机制来共享设置?

    我该如何配置这个工具 我已经在 Eclipse 环境中设置了首选项 底部图标显示工作区机制正常 但是 当我打开工作区或创建新工作区时 没有任何反应 没有任何首选项 如何设置工作区机制 以及如何告诉工作区使用另一个工作区的设置 默认情况下 工
  • 在面向对象编程中,null 的最佳替代方案是什么?

    我觉得不满意在面向对象编程中 有其他解决方案吗 我不喜欢避免它this way http en wikipedia org wiki Null Object pattern either 最好的处理方法是什么 Java 8 有新的Optio
  • 在 Rails 中使用部分的最佳实践

    为了与 DRY 原则保持一致 当我重复某个特定模式超过一两次时 我会尝试使用部分模式 结果 我的一些观点由十个或更多不同的部分组成 我担心这可能会对整体表现产生负面影响 一些编程书籍将部分的使用与方法的使用进行比较 那么我应该使用相同的理由
  • 应用 CSS3 缩放时可排序行为错误

    我正在使用 CSS 转换缩放 JQuery 可排序元素 拖动时可排序项目的起始位置和偏移量都是错误的 因为 JQuery 不考虑 CSS 比例 我用这里找到的代码部分解决了这个问题 jQuery 拖动 使用 CSS 变换比例调整大小 htt