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>