亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否有任何處理程序可以旋轉對象?

是否有任何處理程序可以旋轉對象?

四季花海 2023-06-29 21:15:20
這似乎在 interact.js 的移動版本中是可能的,而我正在尋找一種也可以在標準桌面瀏覽器中使用的解決方案。
查看完整描述

1 回答

?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

這是代碼:

/*?

?* Some code borrowed from: https://codepen.io/taye/pen/wrrxKb

*/


interact('.rotation-handle')

? .draggable({

? ? onstart: function(event) {

? ? ? var box = event.target.parentElement;

? ? ? var rect = box.getBoundingClientRect();


? ? ? // store the center as the element has css `transform-origin: center center`

? ? ? box.setAttribute('data-center-x', rect.left + rect.width / 2);

? ? ? box.setAttribute('data-center-y', rect.top + rect.height / 2);

? ? ? // get the angle of the element when the drag starts

? ? ? box.setAttribute('data-angle', getDragAngle(event));

? ? },

? ? onmove: function(event) {

? ? ? var box = event.target.parentElement;


? ? ? var pos = {

? ? ? ? x: parseFloat(box.getAttribute('data-x')) || 0,

? ? ? ? y: parseFloat(box.getAttribute('data-y')) || 0

? ? ? };


? ? ? var angle = getDragAngle(event);


? ? ? // update transform style on dragmove

? ? ? box.style.transform = 'translate(' + pos.x + 'px, ' + pos.y + 'px) rotate(' + angle + 'rad' + ')';

? ? },

? ? onend: function(event) {

? ? ? var box = event.target.parentElement;


? ? ? // save the angle on dragend

? ? ? box.setAttribute('data-angle', getDragAngle(event));

? ? },

? })


function getDragAngle(event) {

? var box = event.target.parentElement;

? var startAngle = parseFloat(box.getAttribute('data-angle')) || 0;

? var center = {

? ? x: parseFloat(box.getAttribute('data-center-x')) || 0,

? ? y: parseFloat(box.getAttribute('data-center-y')) || 0

? };

? var angle = Math.atan2(center.y - event.clientY,

? ? center.x - event.clientX);


? return angle - startAngle;

}

body {

? font-family: sans-serif;

}


.box {

? width: 150px;

? height: 100px;

? position: relative;

? background-color: #4be091;

? border-radius: 6px;

}


.rotation-handle {

? padding: 3px 4px;

? display: table;

? position: absolute;

? left: 50%;

? right: 50%;

? bottom: -35px;

? background-color: #ff1661;

? border-radius: 10rem;

? line-height: 1;

? text-align: center;

? font-weight: bold;

? color: #fff;

? cursor: move;

}

<script src="https://cdnjs.cloudflare.com/ajax/libs/interact.js/1.2.9/interact.min.js"></script>

<p>

? <strong>Rotate the box using the red handle.</strong>

</p>


<div class="box">

? <div class="rotation-handle">&circlearrowright;</div>

</div>


查看完整回答
反對 回復 2023-06-29
  • 1 回答
  • 0 關注
  • 120 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號