Javascript 使div保持在视图内

Javascript 使div保持在视图内,javascript,html,css,web,Javascript,Html,Css,Web,标题 window.onload=函数(){ var bsDiv=document.querySelector(“.videoPop”); 变量x,y; addEventListener(“mousemove”,函数(事件){ x=事件.clientX;//-217 y=event.clientY-165;//-280 如果(x的类型!=“未定义”){ bsDiv.style.left=x+“px”; bsDiv.style.top=y+“px”; } },假); } .视像流行音乐{ 背景色:


标题
window.onload=函数(){
var bsDiv=document.querySelector(“.videoPop”);
变量x,y;
addEventListener(“mousemove”,函数(事件){
x=事件.clientX;//-217
y=event.clientY-165;//-280
如果(x的类型!=“未定义”){
bsDiv.style.left=x+“px”;
bsDiv.style.top=y+“px”;
}
},假);
}
.视像流行音乐{
背景色:#3b3b;
边界半径:0px;
位置:固定;
边界半径:10px;
宽度:440px;
高度:245px;
z指数:200;
边框:5px实心#3b3b;
左:50%;
最高:50%;
转换:翻译(-50%,-50%);
}
.videoPop:之后{
内容:'';
位置:绝对位置;
最高:100%;
左:55%;
左边距:-55px;
宽度:0;
身高:0;
边框顶部:实心30px#3b3b;
左边框:实心30px透明;
右边框:实心30px透明;
}
.视频pop加载{
位置:绝对位置;
左:50%;
最高:50%;
转换:翻译(-50%,-50%);
宽度:50px;
}
iframe{
边界半径:5px;
}

您可以这样计算最大/最小x和y值:

window.onload=function(){
var bsDiv=document.querySelector(“.videoPop”);
const divWidth=bsDiv.clientWidth;
const divHeight=bsDiv.clientHeight;
const windowWidth=window.innerWidth;
const windowHeight=window.innerHeight;
变量x,y;
addEventListener(“mousemove”,函数(事件){
x=Math.max(event.clientX,divWidth/2);//-217
y=Math.max(event.clientY-165,divHeight/2);//-280
x=数学最小值(x,windowWidth-divWidth/2);
y=数学最小值(y,窗高-分割高度/2);
如果(x的类型!=“未定义”){
bsDiv.style.left=x+“px”;
bsDiv.style.top=y+“px”;
}
},假);
}

标题
.视像流行音乐{
背景色:#3b3b;
边界半径:0px;
位置:固定;
边界半径:10px;
宽度:440px;
高度:245px;
z指数:200;
边框:5px实心#3b3b;
左:50%;
最高:50%;
转换:翻译(-50%,-50%);
}
.videoPop:之后{
内容:'';
位置:绝对位置;
最高:100%;
左:55%;
左边距:-55px;
宽度:0;
身高:0;
边框顶部:实心30px#3b3b;
左边框:实心30px透明;
右边框:实心30px透明;
}
.视频pop加载{
位置:绝对位置;
左:50%;
最高:50%;
转换:翻译(-50%,-50%);
宽度:50px;
}
iframe{
边界半径:5px;
}

您可以这样计算最大/最小x和y值:

window.onload=function(){
var bsDiv=document.querySelector(“.videoPop”);
const divWidth=bsDiv.clientWidth;
const divHeight=bsDiv.clientHeight;
const windowWidth=window.innerWidth;
const windowHeight=window.innerHeight;
变量x,y;
addEventListener(“mousemove”,函数(事件){
x=Math.max(event.clientX,divWidth/2);//-217
y=Math.max(event.clientY-165,divHeight/2);//-280
x=数学最小值(x,windowWidth-divWidth/2);
y=数学最小值(y,窗高-分割高度/2);
如果(x的类型!=“未定义”){
bsDiv.style.left=x+“px”;
bsDiv.style.top=y+“px”;
}
},假);
}

标题
.视像流行音乐{
背景色:#3b3b;
边界半径:0px;
位置:固定;
边界半径:10px;
宽度:440px;
高度:245px;
z指数:200;
边框:5px实心#3b3b;
左:50%;
最高:50%;
转换:翻译(-50%,-50%);
}
.videoPop:之后{
内容:'';
位置:绝对位置;
最高:100%;
左:55%;
左边距:-55px;
宽度:0;
身高:0;
边框顶部:实心30px#3b3b;
左边框:实心30px透明;
右边框:实心30px透明;
}
.视频pop加载{
位置:绝对位置;
左:50%;
最高:50%;
转换:翻译(-50%,-50%);
宽度:50px;
}
iframe{
边界半径:5px;
}
已更改

if (typeof x !== "undefined")

if(类型为x!=“未定义”&&x-225>0&&y-127>0&&x
完整代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Title</title>
</head>

<body>
    <div class="videoPop">
        <div class="point"></div>
        <iframe width="440" height="245"
            src="https://www.youtube.com/embed/fj984wXo3O8?autoplay=1&controls=0&disablekb=1&modestbranding=1&rel=0&loop=1"
            frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope">
        </iframe>
    </div>
    <script>
        window.onload = function () {
            var bsDiv = document.querySelector(".videoPop");
            var x, y;
            window.addEventListener("mousemove", function (event) {
                x = event.clientX;//-217
                y = event.clientY - 165;//-280
                if (typeof x !== "undefined" && x -225 > 0 && y -127 > 0 && x < window.innerWidth -225 && y < window.innerHeight -127) {

                    bsDiv.style.left = x + "px";
                    bsDiv.style.top = y + "px";
                }
            }, false);
        }
    </script>
    <style>
        .videoPop {
            background-color: #3b3b3b;
            border-radius: 0px;
            position: fixed;
            border-radius: 10px;
            width: 440px;
            height: 245px;
            z-index: 200;
            border: 5px solid #3b3b3b;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
        }

        .videoPop:after {
            content: '';
            position: absolute;
            top: 100%;
            left: 55%;
            margin-left: -55px;
            width: 0;
            height: 0;
            border-top: solid 30px #3b3b3b;
            border-left: solid 30px transparent;
            border-right: solid 30px transparent;

        }


        .videoPopLoading {
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
            width: 50px;
        }

        iframe {
            border-radius: 5px;
        }
    </style>
</body>

</html>

标题
window.onload=函数(){
var bsDiv=document.querySelector(“.videoPop”);
变量x,y;
addEventListener(“mousemove”,函数(事件){
x=事件.clientX;//-217
y=event.clientY-165;//-280
如果(类型x!=“未定义”&&x-225>0&&y-127>0&&x<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Title</title>
</head>

<body>
    <div class="videoPop">
        <div class="point"></div>
        <iframe width="440" height="245"
            src="https://www.youtube.com/embed/fj984wXo3O8?autoplay=1&controls=0&disablekb=1&modestbranding=1&rel=0&loop=1"
            frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope">
        </iframe>
    </div>
    <script>
        window.onload = function () {
            var bsDiv = document.querySelector(".videoPop");
            var x, y;
            window.addEventListener("mousemove", function (event) {
                x = event.clientX;//-217
                y = event.clientY - 165;//-280
                if (typeof x !== "undefined" && x -225 > 0 && y -127 > 0 && x < window.innerWidth -225 && y < window.innerHeight -127) {

                    bsDiv.style.left = x + "px";
                    bsDiv.style.top = y + "px";
                }
            }, false);
        }
    </script>
    <style>
        .videoPop {
            background-color: #3b3b3b;
            border-radius: 0px;
            position: fixed;
            border-radius: 10px;
            width: 440px;
            height: 245px;
            z-index: 200;
            border: 5px solid #3b3b3b;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
        }

        .videoPop:after {
            content: '';
            position: absolute;
            top: 100%;
            left: 55%;
            margin-left: -55px;
            width: 0;
            height: 0;
            border-top: solid 30px #3b3b3b;
            border-left: solid 30px transparent;
            border-right: solid 30px transparent;

        }


        .videoPopLoading {
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
            width: 50px;
        }

        iframe {
            border-radius: 5px;
        }
    </style>
</body>

</html>