html 绘制矩形轨迹,选中区域

图片

 

 code

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
.box {
    border:1px solid black;
    width: 0px;
    height: 0px;
    position: absolute;
     
    z-index:-1;
}
div{
opacity:1;
border:1px solid black;
width:800px;
height:500px;
 
}
</style>
<script type="text/javascript">
window.onload = function(e) {
    e = e || window.event;
    // startX, startY 为鼠标点击时初始坐标
    var startX, startY; 
    // 鼠标按下
    document.onmousedown = function(e) {
        startX = e.pageX;
        startY = e.pageY;
        // 在页面创建 box
        var active_box = document.createElement("div");
        active_box.id = "active_box";
        active_box.className = "box";
        active_box.style.top = startY + 'px';
        active_box.style.left = startX + 'px';
        document.body.appendChild(active_box);
        active_box = null;
    };   
    // 鼠标移动
    document.onmousemove = function(e) {
        // 更新 box 尺寸
        if(document.getElementById("active_box") !== null) {
            var ab = document.getElementById("active_box");
            if(e.pageX>startX){
                if(e.pageY>startY){
                    active_box.style.top = startY + 'px';
                    active_box.style.left = startX + 'px';
                    ab.style.width = Math.abs(e.pageX - startX) + 'px';
                    ab.style.height = Math.abs(e.pageY - startY) + 'px';
                }else if(e.pageY==startY){
                    active_box.style.top = startY + 'px';
                    active_box.style.left = startX + 'px';
                    ab.style.width = Math.abs(e.pageX - startX) + 'px';
                    ab.style.height = Math.abs(e.pageY - startY) + 'px';
                }else{
                    active_box.style.top = e.pageY + 'px';
                    active_box.style.left = startX + 'px';
                    ab.style.width = Math.abs(e.pageX - startX) + 'px';
                    ab.style.height = Math.abs(e.pageY - startY) + 'px';
                }
            }else if(e.pageX==startX){
                if(e.pageY>startY){
                    active_box.style.top = startY + 'px';
                    active_box.style.left = startX + 'px';
                    ab.style.width = Math.abs(e.pageX - startX) + 'px';
                    ab.style.height = Math.abs(e.pageY - startY) + 'px';
                }else if(e.pageY==startY){
                    active_box.style.top = startY + 'px';
                    active_box.style.left = startX + 'px';
                    ab.style.width = Math.abs(e.pageX - startX) + 'px';
                    ab.style.height = Math.abs(e.pageY - startY) + 'px';
                }else{
                    active_box.style.top = e.pageY + 'px';
                    active_box.style.left = startX + 'px';
                    ab.style.width = Math.abs(e.pageX - startX) + 'px';
                    ab.style.height = Math.abs(e.pageY - startY) + 'px';
                }
            }else{
                if(e.pageY>startY){
                    active_box.style.top = startY + 'px';
                    active_box.style.left = e.pageX + 'px';
                    ab.style.width = Math.abs(e.pageX - startX) + 'px';
                    ab.style.height = Math.abs(e.pageY - startY) + 'px';
                }else if(e.pageY==startY){
                    active_box.style.top = e.pageY + 'px';
                    active_box.style.left = e.pageX + 'px';
                    ab.style.width = Math.abs(e.pageX - startX) + 'px';
                    ab.style.height = Math.abs(e.pageY - startY) + 'px';
                }else{
                    active_box.style.top = e.pageY + 'px';
                    active_box.style.left = e.pageX + 'px';
                    ab.style.width = Math.abs(e.pageX - startX) + 'px';
                    ab.style.height = Math.abs(e.pageY - startY) + 'px';
                }  
            }
             
        }
    };    
    // 鼠标抬起
    document.onmouseup = function(e) {
        if(document.getElementById("active_box") !== null) {
            var ab = document.getElementById("active_box");
            ab.removeAttribute("id");
            // 如果长宽均小于 3px,移除 box
            document.body.removeChild(ab);
        }
    };
};
</script>
</head>
<body>
<div></div>
<p>点击鼠标左键并拖动绘制矩形</p>
</body>
</html>

 

posted @ 2018-09-16 20:55  anobscureretreat  阅读(427)  评论(0编辑  收藏  举报