为了账号安全,请及时绑定邮箱和手机立即绑定

样式拖鬼元素

样式拖鬼元素

哔哔one 2021-12-02 16:21:48
我正面临一个问题,我正在拖动一个 div。虽然幽灵元素在 MacOs 上看起来不错(在 Chrome 和 FireFox 上都是这样),但在 Windows 中似乎太透明了(在 Chrome 和 FireFox 上都是。我尝试了多种方法,但似乎没有任何效果。所以是否可以设置样式鬼元素?此外,我尝试在旅途中制作该元素的图像,并将其用作幽灵拖动图像,但透明度问题仍然存在。
查看完整描述

1 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

您可以通过在 JavaScript 中自己实现元素的拖动来做到这一点。这样,您可以在拖动元素时将 CSS 类应用于元素,以您希望的任何方式对其进行样式设置。


const d = 'dragging';


const container = document.getElementById('container');

const el = document.getElementById('drag');


var cOffX = 0;

var cOffY = 0;


el.addEventListener('mousedown', dragStart);


function dragStart(e) {

  e = e || window.event;

  e.preventDefault();


  cOffX = e.clientX - el.offsetLeft;

  cOffY = e.clientY - el.offsetTop;


  document.addEventListener('mousemove', dragMove);

  document.addEventListener('mouseup', dragEnd);


  el.classList.add(d);

  container.style.cursor = 'move';

};


function dragMove(e) {

  e = e || window.event;

  e.preventDefault();


  el.style.top = (e.clientY - cOffY).toString() + 'px';

  el.style.left = (e.clientX - cOffX).toString() + 'px';

};


function dragEnd(e) {

  e = e || window.event;

  e.preventDefault();

  

  document.removeEventListener('mousemove', dragMove);

  document.removeEventListener('mouseup', dragEnd);


  el.classList.remove(d);

  container.style.cursor = null;

};

#container {

  width: 100vw;

  height: 100vh;

  margin: 0;

  padding: 0;

}


#drag {

  position: absolute;

  height: 100px;

  width: 100px;

  background-color: lime;

  border-radius: 0;

  transition: background-color 0.25s, border-radius 0.25s;

  cursor: move;

}


#drag.dragging {

  background-color: navy;

  border-radius: 50%;

}

<div id="container">

  <div id="drag"></div>

</div>


正如其他人所说,重影是基于浏览器的,无法更改,因此如果您想解决这个问题,似乎您需要自己的解决方案。

查看完整回答
反对 回复 2021-12-02
  • 1 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信