鸿蒙,grid子组件拖拽出grid也显示的demo示例
时间: 2024-10-08 17:11:48 浏览: 24
鸿蒙操作系统(HarmonyOS)是一个开源的、分布式的能力框架,它强调设备之间的互联互通。对于Grid子组件的拖拽功能,通常是在UI设计中创建网格布局,允许用户通过拖动元素调整其在网格中的位置。这里有一个简单的HTML/CSS和JavaScript的例子:
```html
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<style>
.grid-container {
display: grid;
gap: 10px;
width: 400px;
}
.grid-item {
background-color: lightblue;
border: 1px solid black;
padding: 10px;
cursor: move;
}
</style>
</head>
<body>
<div class="grid-container" id="draggable-grid">
<!-- 这里是动态生成的grid项 -->
</div>
<script>
let gridItems = document.querySelectorAll('.grid-item');
gridItems.forEach((item) => {
item.addEventListener('mousedown', dragStart);
item.addEventListener('mouseup', dragEnd);
window.addEventListener('mousemove', dragMove);
});
function dragStart(e) {
e.target.classList.add('dragging');
this.startX = e.clientX;
this.startY = e.clientY;
}
function dragMove(e) {
e.preventDefault();
let dx = e.clientX - this.startX;
let dy = e.clientY - this.startY;
let newLeft = Math.max(0, this.offsetLeft + dx);
let newTop = Math.max(0, this.offsetTop + dy);
this.style.left = `${newLeft}px`;
this.style.top = `${newTop}px`;
}
function dragEnd() {
this.classList.remove('dragging');
}
</script>
</body>
</html>
```
在这个例子中,我们首先设置了一个grid容器,并添加了一些`.grid-item`作为可拖动元素。然后,我们为每个grid项添加了鼠标按下(开始拖动)、移动(执行拖动)和松开(结束拖动)事件处理函数。
阅读全文