<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <style>
        * {
            margin: 0;
            padding: 0
        }
        .h_box {
            width: 300px;
            height: 300px;
            position: absolute;
            top: 100px;
            left: 100px;
        }
        /*四边*/
        .h_box .t, .h_box .b, .h_box .l, .h_box .r {
            position: absolute;
            z-index: 1;
            background: #666;
        }
        .h_box .l, .h_box .r {
            width: 5px;
            height: 100%;
            cursor: col-resize;
        }
        .h_box .t, .h_box .b {
            width: 100%;
            height: 5px;
            cursor: row-resize;
        }
        .h_box .t {
            top: 0;
        }
        .h_box .b {
            bottom: 0;
        }
        .h_box .l {
            left: 0;
        }
        .h_box .r {
            right: 0;
        }
        /*四角*/
        .h_box .tl, .h_box .bl, .h_box .br, .h_box .tr {
            width: 5px;
            height: 5px;
            position: absolute;
            background: #fff;
            border:1px solid #666;
            z-index: 2;
            cursor: nwse-resize
        }
        .h_box .tl, .h_box .bl {
            left: 0px;
        }
        .h_box .tr, .h_box .br {
            right: 0px;
        }
        .h_box .br, .h_box .bl {
            bottom: 0px;
        }
        .h_box .tl, .h_box .tr {
            top: 0px;
        }
        .h_box .tr, .h_box .bl {
            cursor: nesw-resize;
        }
        /*内核*/
        .inner {
            width: 100%;
            height: 100%;
        }
    </style>
</head>
<body>
    <!-- 将边线的缩放也加了 -->
    <div class="h_box" id="hbox">
        <span class="h_drag_mark r" data-markname="r"></span><!-- 右边框 -->
        <span class="h_drag_mark l" data-markname="l"></span><!-- 左边框 -->
        <span class="h_drag_mark t" data-markname="t"></span><!-- 上边框 -->
        <span class="h_drag_mark b" data-markname="b"></span><!-- 下边框 -->
        <span class="h_drag_mark br" data-markname="br"></span><!-- 右下角 -->
        <span class="h_drag_mark bl" data-markname="bl"></span><!-- 左下角 -->
        <span class="h_drag_mark tr" data-markname="tr"></span><!-- 右上角 -->
        <span class="h_drag_mark tl" data-markname="tl"></span><!-- 左上角 -->
        <div class="inner">
			<iframe class="iframe_1" style="width: 100px; height: 100px;" frameborder="0" src="../../login.html"></iframe>
		</div>
    </div>
    <script>
        window.onload = function () {
			// 可缩放容器
            var hbox = document.getElementById("hbox");
			
			// 可拖动边缘标记元素
			var aSpan = document.getElementsByClassName("h_drag_mark");
            // var aSpan = hbox.getElementsByTagName('span');
            for (var i = 0; i < aSpan.length; i++) {
                dragFn(aSpan[i]);
            }
			
            function dragFn(obj) {
				// 鼠标按下时事件
                obj.onmousedown = function (ev) {
                    var oEv = ev || event;
                    oEv.stopPropagation(); // 防止冒泡事件
                    var oldWidth = hbox.offsetWidth; // 容器宽度
                    var oldHeight = hbox.offsetHeight; // 容器高度
                    var oldX = oEv.clientX; // 鼠标位置x坐标
                    var oldY = oEv.clientY; // 鼠标位置y坐标
                    var oldLeft = hbox.offsetLeft; // 容器原点x坐标
                    var oldTop = hbox.offsetTop; // 容器原点y坐标
					// 移动到事件
                    document.onmousemove = function (ev) {
                        var oEv = ev || event;
						// y轴位移量:当前鼠标位置-移动之前位置(oEv.clientY - oldY)
						// x轴位移量:当前鼠标位置-移动之前位置(oEv.clientX - oldLeft)
                        let disY = (oldTop + (oEv.clientY - oldY)), //  
                            disX = (oldLeft + (oEv.clientX - oldLeft));
                        if(disX>oldLeft+oldWidth){
                            disX=oldLeft+oldWidth
                        }
                        if(disY>oldTop+oldHeight){
                            disY=oldTop+oldHeight
                        }
                        if (obj.dataset.markname == 'tl') {
                            hbox.style.width = oldWidth - (oEv.clientX - oldX) + 'px';
                            hbox.style.height = oldHeight - (oEv.clientY - oldY) + 'px';
                            hbox.style.left = disX + 'px';
                            hbox.style.top = disY + 'px';
                        }
                        else if (obj.dataset.markname == 'bl') {
                            hbox.style.width = oldWidth - (oEv.clientX - oldX) + 'px';
                            hbox.style.height = oldHeight + (oEv.clientY - oldY) + 'px';
                            hbox.style.left = disX + 'px';
                            hbox.style.bottom = oldTop + (oEv.clientY + oldY) + 'px';
                        }
                        else if (obj.dataset.markname == 'tr') {
                            hbox.style.width = oldWidth + (oEv.clientX - oldX) + 'px';
                            hbox.style.height = oldHeight - (oEv.clientY - oldY) + 'px';
                            hbox.style.right = oldLeft - (oEv.clientX - oldX) + 'px';
                            hbox.style.top = disY + 'px';
                        }
                        else if (obj.dataset.markname == 'br') {
                            hbox.style.width = oldWidth + (oEv.clientX - oldX) + 'px';
                            hbox.style.height = oldHeight + (oEv.clientY - oldY) + 'px';
                            hbox.style.right = oldLeft - (oEv.clientX - oldX) + 'px';
                            hbox.style.bottom = oldTop + (oEv.clientY + oldY) + 'px';
                        }
                        else if (obj.dataset.markname == 't') {
                            hbox.style.height = oldHeight - (oEv.clientY - oldY) + 'px';
                            hbox.style.top = disY + 'px';
                        }
                        else if (obj.dataset.markname == 'b') {
                            hbox.style.height = oldHeight + (oEv.clientY - oldY) + 'px';
                            hbox.style.bottom = disY + 'px';
                        }
                        else if (obj.dataset.markname == 'l') {
                            hbox.style.height = oldHeight + 'px';
                            hbox.style.width = oldWidth - (oEv.clientX - oldX) + 'px';
                            hbox.style.left = disX + 'px';
                        }
                        else if (obj.dataset.markname == 'r') {
                            hbox.style.height = oldHeight + 'px';
                            hbox.style.width = oldWidth + (oEv.clientX - oldX) + 'px';
                            hbox.style.right = disX + 'px';
                        }
                    };
					// 鼠标松开时事件
                    document.onmouseup = function () {
                        document.onmousemove = null;
                    };
                    return false;
                };
            }
			
			// 鼠标按下时事件
            document.getElementById("hbox").onmousedown = function (ev) {
                var oevent = ev || event;
                oevent.preventDefault(); // 阻止默认行为

                var distanceX = oevent.clientX - hbox.offsetLeft;
                var distanceY = oevent.clientY - hbox.offsetTop;
				
				// 移动到事件
                document.onmousemove = function (ev) {
                    var oevent = ev || event;
                    hbox.style.left = oevent.clientX - distanceX + 'px';
                    hbox.style.top = oevent.clientY - distanceY + 'px';
                };
				// 鼠标松开时事件
                document.onmouseup = function () {
                    document.onmousemove = null;
                    document.onmouseup = null;
                };
            }
        };
    </script>
</body>
</html>