javascript - 如何在移动设备上将 draggable 设置为 false 以进行成帧运动或响应地更改拖动尺寸以适应不同的屏幕尺寸
问题描述
我的 React 应用程序中有一个可拖动组件,它只能在特定尺寸内拖动。但是,在移动设备上,这些尺寸超出了屏幕范围,用户可以将组件拖出屏幕并且永远无法将其取回。
我想知道是否有办法让移动设备上的组件不可拖动。更理想的是,我想知道是否有一种方法可以更改组件在不同屏幕尺寸下可拖动的尺寸。(响应性)
谢谢你。
解决方案
您可以使用 Drag Constraints 设置他们可以拖动的限制
文档:https ://www.framer.com/api/motion/gestures/#draggableprops.dragconstraints
然后根据屏幕尺寸动态改变它
- 将约束绑定到屏幕大小的像素值
- 或者传递响应于可拖动元素的dragConstraints 属性的包含div 的引用
const constraintsRef = useRef(null);
return (
<MotionConstraints ref={constraintsRef}>
<MotionBox drag dragConstraints={constraintsRef}>
Drag Me
</MotionBox>
</MotionConstraints>
)
#2 的工作示例:https ://codesandbox.io/s/framer-motion-constraints-on-a-draggable-element-jqvu5?file=/src/App.tsx
推荐阅读
- git - 是否可以在 git 中缓存每个终端会话的用户凭据?
- bash - 如何在 Rundeck 中用单/双引号 var 重定向长字符串?
- firebase - Firestore 是否不对启用持久性的读取查询中缓存且未更改的文档收费?
- c - 使用 line...file 指令
- java - 如何使用远程 Docker 容器进行开发
- python - 以一种简洁的方式打印出列表值的组合?
- python - 如何在python中创建一个打赏功能
- c++ - 标准中的规则在哪里指定具有尾随返回类型且返回类型包含占位符类型的函数应该是`auto`
- swift - 在 iOS / Swift 5 中使用蓝牙与 Modbus 通信
- sql-server - 如何使用 OpenJson 将 JSON 列标题转换为小写