admin管理员组文章数量:1434363
How to center react-draggable element on start?
I have a modal that is wrapped by react-draggable a ponent. I would like to after the modal is open, center his position in a browser.
I try pass to a defaultPosition a percentage value but I'm not able to pass percentage defaultPostion={{ x: 50%, y: 50% };}
but without result.
How to center react-draggable element on start?
I have a modal that is wrapped by react-draggable a ponent. I would like to after the modal is open, center his position in a browser.
I try pass to a defaultPosition a percentage value but I'm not able to pass percentage defaultPostion={{ x: 50%, y: 50% };}
but without result.
5 Answers
Reset to default 4React draggable has an option named positionOffSet
which gives us a chance to set the initial offset of the draggable element. This is different than the defaultPosition
and accepts %value
. You can check the React Draggable docs for details.
<Draggable positionOffset={{ x: '-50%', y: '-50%' }}}>
<div className='myElement'>
This is my draggable element
</div>
</Draggable/>
Now, all we need to do is to add few styles to our element like so:
.myElement{z-index:999; position: absolute; top: 50%; left: 50%;}
This will center the modal element in the middle of the page, no matter what dimensions it has.
I found solution but I don't have access no more. The solution is to change dynamically position for defaultPosition: get position of element that has been clicked and dynamically calculate center of the screen.
You can't use CSS transform because defaultPosition
replace it.
You can use margin
, I normally use this solution:
import React, { useState, useEffect } from "react"
import Draggable from 'react-draggable';
function MyComponent() {
const [boxSize, setBoxSize] = useState({ w: 0, h: 0 });
useEffect(() => {
setBoxSize({
w: document.querySelector('.container').clientWidth / -2,
h: document.querySelector('.container').clientHeight / -2
});
}, []);
return (
<Draggable>
<div style={{
marginLeft: boxSize.w,
marginTop: boxSize.h
}} className="container">
{/* ... */}
</div>
</Draggable>
);
}
export default MyComponent;
with css3, the best and simple solution for react:
.center { margin: 0; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); }
Try to use quotation around your percentages, like defaultPosition={{ x: '50%', y: '50%' }}
本文标签: javascriptHow to center reactdraggable element on start (modaldiv)Stack Overflow
版权声明:本文标题:javascript - How to center react-draggable element on start? (modal, div) - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745633276a2667400.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论