【发布时间】:2022-01-23 06:23:31
【问题描述】:
我正在使用mousemove 事件调整框的大小和位置。那些。我将transform translate 和width (height) 更改为pageX (pageY)。但是由于鼠标事件mousemove 并不总是有时间被处理(例如,如果您快速移动鼠标)或没有时间读取条件,因此该块超出范围。
问题:在这种情况下我需要怎么做才能使块不超出边界?
大致是这样的。那些。在本例中,second_block 在first_block (500px) 之外,即它没有时间读取条件。这个问题应该如何解决?也为了方便https://jsfiddle.net/ManuOP/t1r4szdx/3/
<div id="first_block" class="first_block">
<div id="auxiliary_block">
<div id="second_block" class="second_block"></div>
<input id="point" class="point" name="name_point" type="button">
</div>
</div>
<script src="1.block_in_center_question.js"></script>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
div {
display: flex;
flex-direction: column;
}
div.first_block {
height: 300px;
width: 500px;
background: green;
}
div#auxiliary_block {
position: absolute;
}
div.second_block {
height: 200px;
width: 300px;
background: orange;
}
input.point {
position: absolute;
cursor: pointer;
height: 14px;
width: 14px;
border: none;
background: black;
right: -7px;
top: 50%;
}
"use strict";
let second_block = document.getElementById('second_block');
let point = document.getElementById('point');
function change_second_block() {
if(second_block.clientWidth < 500) {
second_block.style.width = `${start_x + event.pageX}px`;
}
}
point.addEventListener('mousedown', (event) => {
window.start_x = second_block.clientWidth - event.pageX;
document.addEventListener('mousemove', change_second_block);
});
【问题讨论】:
标签: javascript html css transform mousemove