
我想把鼠标拖到单元格上,单元格下面的任何内容都会被选中。只有其下面的单元格才会被选中。如果用户以之字形方式移动鼠标,则不会发生任何选择。
发布于 2015-05-24 21:49:56
这是我在Chrome上测试的解决方案。我不确定您是否希望在开始拖动时选中第一个正方形,因此我将其保留为未选中状态,以便在您开始进行Z字形拖动之前不选中它。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
td{padding: 100px;}
.selected{background-color: #f55;}
.deselected{background-color: #faa;}
</style>
<script>
var dragging = false
var reference
addEventListener("load", function(){
var squares = document.querySelectorAll("td")
for(var i = 0; i < squares.length; ++i){
squares[i].draggable = true
squares[i].className = "deselected"
squares[i].addEventListener("dragstart", function(){
reference = this
dragging = true
})
squares[i].addEventListener("drop", function(){dragging = false})
squares[i].addEventListener("dragenter", toggle)
}
})
function toggle(){
if(!dragging) return
if(this == reference) return
var rect = reference.getBoundingClientRect()
if(this.getBoundingClientRect().top < rect.top){
dragging = false
return
}
if(this.getBoundingClientRect().left != rect.left){
dragging = false
return
}
if(this.className == "selected"){
this.className = "deselected"
}
else{
this.className = "selected"
}
}
</script>
</head>
<body>
<table>
<tr><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td></tr>
</table>
</body>
</html>https://stackoverflow.com/questions/11033542
复制相似问题