如果 div 重叠,则在 window 中重新定位
Repositioning a div in window if it overlaps
我正在使用 jQuery 在我的页面上动态创建 div。如果鼠标点击位置在屏幕下方,div 会部分显示在屏幕外。基本上取屏幕 680px,鼠标在 600px 处单击,div 高度 300,div 的下部 220px 将超出屏幕,因为溢出 属性 设置为隐藏。
我想要实现的是一个函数,该函数将计算将其向上移动多少以确保 div 完全可见。
不幸的是,我没有用。感谢任何帮助,甚至是通过 CSS 或其他方式的替代解决方案。
这个函数应该 return 值 top
px。基本上它应该计算 div 超出屏幕高度的多少,并将其从当前鼠标位置移除,以使 div 适合。
Javascript:
var mousex;
var mousey;
var currshowingid;
var mousepos;
$( document ).on( "mousemove", function( event ) {
mousex = event.pageX;
mousey = event.pageY;
//console.log( "pageX: " + event.pageX + ", pageY: " + event.pageY );
});
function xfromtop(el) {
if ((mousey + $(el).height()) > $(window).height()) {
fromtop = mousey - ((mousey + $(el).height()) - $(window).height())*1.1;
fromtop = fromtop.toString() + "px";
} else {
fromtop = mousey.toString() + "px";
}
return fromtop;
}
这将创建 div 运行时并使用 xfromtop() 到 top
CSS 属性
function showdriverdetails(id) {
$('div[id^="driver_"]').remove();
// Add div and place in at mouse position
$("#main").append("<div class='driverdetails dets' id='driver_" + id + "'>");
$("#driver_" + id).load("ajax/driver_info.php?id=" + id).fadeIn().draggable();
$("#driver_" + id).css("top", xfromtop($("#driver_" + id)));
}
CSS:
div.driverdetails {
width: 70%;
height: auto;
min-height: 300px;
max-height: 400px;
left: 18%;
}
.dets {
z-index: 1000;
position: fixed;
padding: 2px;
border: solid #5c6cb0 2.5px;
background-color: white;
border-radius: 12px;
-webkit-border-radius: 12px;
-moz-border-radius: 12px;
display: none;
}
HTML:
<button onclick="showdriverdetails(100)">SHOW</button>
高度 属性 不考虑边距、填充和边框。您应该使用 jQuery 的 outerHeight 来获取 div.
的完整高度
function xfromtop(el) {
var elHeight = $(el).outerHeight();
var windowHeight = $(window).height();
if ((mousey + elHeight) > windowHeight) {
fromtop = windowHeight - elHeight;
fromtop = fromtop.toString() + "px";
} else {
fromtop = mousey.toString() + "px";
}
return fromtop;
}
我正在使用 jQuery 在我的页面上动态创建 div。如果鼠标点击位置在屏幕下方,div 会部分显示在屏幕外。基本上取屏幕 680px,鼠标在 600px 处单击,div 高度 300,div 的下部 220px 将超出屏幕,因为溢出 属性 设置为隐藏。
我想要实现的是一个函数,该函数将计算将其向上移动多少以确保 div 完全可见。
不幸的是,我没有用。感谢任何帮助,甚至是通过 CSS 或其他方式的替代解决方案。
这个函数应该 return 值 top
px。基本上它应该计算 div 超出屏幕高度的多少,并将其从当前鼠标位置移除,以使 div 适合。
Javascript:
var mousex;
var mousey;
var currshowingid;
var mousepos;
$( document ).on( "mousemove", function( event ) {
mousex = event.pageX;
mousey = event.pageY;
//console.log( "pageX: " + event.pageX + ", pageY: " + event.pageY );
});
function xfromtop(el) {
if ((mousey + $(el).height()) > $(window).height()) {
fromtop = mousey - ((mousey + $(el).height()) - $(window).height())*1.1;
fromtop = fromtop.toString() + "px";
} else {
fromtop = mousey.toString() + "px";
}
return fromtop;
}
这将创建 div 运行时并使用 xfromtop() 到 top
CSS 属性
function showdriverdetails(id) {
$('div[id^="driver_"]').remove();
// Add div and place in at mouse position
$("#main").append("<div class='driverdetails dets' id='driver_" + id + "'>");
$("#driver_" + id).load("ajax/driver_info.php?id=" + id).fadeIn().draggable();
$("#driver_" + id).css("top", xfromtop($("#driver_" + id)));
}
CSS:
div.driverdetails {
width: 70%;
height: auto;
min-height: 300px;
max-height: 400px;
left: 18%;
}
.dets {
z-index: 1000;
position: fixed;
padding: 2px;
border: solid #5c6cb0 2.5px;
background-color: white;
border-radius: 12px;
-webkit-border-radius: 12px;
-moz-border-radius: 12px;
display: none;
}
HTML:
<button onclick="showdriverdetails(100)">SHOW</button>
高度 属性 不考虑边距、填充和边框。您应该使用 jQuery 的 outerHeight 来获取 div.
的完整高度function xfromtop(el) {
var elHeight = $(el).outerHeight();
var windowHeight = $(window).height();
if ((mousey + elHeight) > windowHeight) {
fromtop = windowHeight - elHeight;
fromtop = fromtop.toString() + "px";
} else {
fromtop = mousey.toString() + "px";
}
return fromtop;
}