Javascript 在鼠标输入时显示div,如果鼠标位置在最右边,则无法看到

Javascript 在鼠标输入时显示div,如果鼠标位置在最右边,则无法看到,javascript,css,Javascript,Css,我有一个简单的代码,可以在悬停div时显示div,如下所示 $(".dhx_project").mouseenter(function(e) { $('.project-tooltip').css({ left: e.pageX + 20, top: e.pageY }); }); 我的问题是,当用户尝试将鼠标放在“.dhx项目”div的“最右边”时,不能像这样看到hover div 有没有办法设置一个条件,当用户鼠标指针在最右边时,div将显

我有一个简单的代码,可以在悬停div时显示div,如下所示

$(".dhx_project").mouseenter(function(e) {
    $('.project-tooltip').css({
        left: e.pageX + 20,
        top: e.pageY
    });
});
我的问题是,当用户尝试将鼠标放在“.dhx项目”div的“最右边”时,不能像这样看到hover div

有没有办法设置一个条件,当用户鼠标指针在最右边时,div将显示在左边

示例代码段

通过计算工具提示相对于屏幕宽度的位置和尺寸,您可以扩展鼠标指针处理程序来解释此边缘情况

这样,您就可以确定工具提示是否落在屏幕之外-在这种情况下,您可以设置工具提示的
right:0
属性,使工具提示与屏幕的右边缘对齐,如下所示:

$(".dhx_project").mouseenter(function(e) {

    $('.project-tooltip').show();

    // Extract data used to determine if tooltip will be off screen
    var left = e.pageX + 20;
    var width =  $('.project-tooltip').width()
    var styles = {
        position : 'absolute',
        top: e.pageY + 5    
    }    

  // If the right edge of the tooltip is out of the screen ..
  if(left + width > $(document).width()) {

    // .. then re-adjust it's position to "hug" the right 
    // edge of the screen 
    styles.left = 'auto';
    styles.right = 0;
  }
  else {
    styles.left = left;
    styles.right = 'auto';  
  }

  // Apply styles to tooltip
  $('.project-tooltip').css(styles);
});
[更新]这里是

更新:防止工具提示从页面底部消失 下面展示了如何防止工具提示从页面底部消失

还要注意,此更新的解决方案需要对CSS进行一次小的更新,以提高可靠性:

.project-tooltip {
    display:none;
    position:absolute;
    pointer-events:none; /* <-- Add this */
}
。项目工具提示{
显示:无;
位置:绝对位置;

指针事件:无;/*通过计算工具提示相对于屏幕宽度的位置和尺寸,您可以扩展鼠标指针处理程序以考虑此边缘情况

这样,您就可以确定工具提示是否落在屏幕之外-在这种情况下,您可以设置工具提示的
right:0
属性,使工具提示与屏幕的右边缘对齐,如下所示:

$(".dhx_project").mouseenter(function(e) {

    $('.project-tooltip').show();

    // Extract data used to determine if tooltip will be off screen
    var left = e.pageX + 20;
    var width =  $('.project-tooltip').width()
    var styles = {
        position : 'absolute',
        top: e.pageY + 5    
    }    

  // If the right edge of the tooltip is out of the screen ..
  if(left + width > $(document).width()) {

    // .. then re-adjust it's position to "hug" the right 
    // edge of the screen 
    styles.left = 'auto';
    styles.right = 0;
  }
  else {
    styles.left = left;
    styles.right = 'auto';  
  }

  // Apply styles to tooltip
  $('.project-tooltip').css(styles);
});
[更新]这里是

更新:防止工具提示从页面底部消失 下面展示了如何防止工具提示从页面底部消失

还要注意,此更新的解决方案需要对CSS进行一次小的更新,以提高可靠性:

.project-tooltip {
    display:none;
    position:absolute;
    pointer-events:none; /* <-- Add this */
}
。项目工具提示{
显示:无;
位置:绝对位置;

指针事件:无;/*您可以在标题中有2个div,并有2个不同的鼠标事件,然后计算不同的左、右值并实现您想要的结果

我用
width:50%
固定了工具提示的宽度,使其保持一致,但您也可以自己指定另一个宽度

$(“.dhx_1”).mouseenter(函数(e){
显示工具提示(e.pageX+20',e.pageY)
});
$(“.dhx_2”).mouseenter(函数(e){
showTooltip(“”,$('body').width()-e.pageX+20,e.pageY)
});
$(“.dhx_项目”).mouseleave(函数(e){
$('.project tooltip').hide(100);
});
功能显示工具提示(左、右、上){
$('.project tooltip').show(100);
$('.project tooltip').css({
对:对,
左:左,,
顶端:顶端
});
}
.dhx\u项目{
宽度:100%;
背景:红色;
高度:30px;
}
.dhx_项目。dhx_1,
.dhx_项目。dhx_2{
宽度:50%;
浮动:左;
高度:30px;
}
.dhtmlXTooltip.tooltip[角色=工具提示]{
字体大小:14px;
盒影:0 10px 20px 0 rgba(0,0,0,2),0 1px 6px 0 rgba(0,0,0,2);
边框样式:实心;
边框颜色:透明;
}
.dhtmlXTooltip.tooltip{
左边框:1px点#e0;
边框顶部:1px虚线#e0;
字体系列:Roboto,Arial;
字体大小:12px;
颜色:rgba(0,0,0,75);
z指数:10;
}
.项目工具提示{
显示:无;
宽度:50%
}
.dhtmlXTooltip.tooltip{
-moz盒阴影:3px 3px 3px#888;
-网络工具包盒影:3px 3px 3px#888;
-o形盒阴影:3px 3px 3px#888;
盒影:3px 3px 3px#888;
过滤器:progid:DXImageTransform.Microsoft.Shadow(颜色='#888888',方向=135,强度=5);
背景色:#fff;
游标:默认值;
填充:10px;
位置:固定;
不透明度:1;
}


标题:
错误修复1963

2018年9月11日09:53上午-2018年9月12日09:53上午

说明:

领导: 石田浩

成员: Michael Robert、Freddie Mars、Sheryl Minh、Masao Takahashi、Huy Huy、Quang Tuấn Huy Ngôy Linhôỗ,

预算: 111日元


标题中可以有两个div和两个不同的mouseenter事件,然后计算不同的左、右值并实现您想要的结果

我用
width:50%
固定了工具提示的宽度,使其保持一致,但您也可以自己指定另一个宽度

$(“.dhx_1”).mouseenter(函数(e){
显示工具提示(e.pageX+20',e.pageY)
});
$(“.dhx_2”).mouseenter(函数(e){
showTooltip(“”,$('body').width()-e.pageX+20,e.pageY)
});
$(“.dhx_项目”).mouseleave(函数(e){
$('.project tooltip').hide(100);
});
功能显示工具提示(左、右、上){
$('.project tooltip').show(100);
$('.project tooltip').css({
对:对,
左:左,,
顶端:顶端
});
}
.dhx\u项目{
宽度:100%;
背景:红色;
高度:30px;
}
.dhx_项目。dhx_1,
.dhx_项目。dhx_2{
宽度:50%;
浮动:左;
高度:30px;
}
.dhtmlXTooltip.tooltip[角色=工具提示]{
字体大小:14px;
盒影:0 10px 20px 0 rgba(0,0,0,2),0 1px 6px 0 rgba(0,0,0,2);
边框样式:实心;
边框颜色:透明;
}
.dhtmlXTooltip.tooltip{
左边框:1px点#e0;
边框顶部:1px虚线#e0;
字体系列:Roboto,Arial;
字体大小:12px;
颜色:rgba(0,0,0,75);
z指数:10;
}
.项目工具提示{
显示:无;
宽度:50%
}
.dhtmlXTooltip.tooltip{
-moz盒阴影:3px 3px 3px#888;
-网络工具包盒影:3px 3px 3px#888;
-o形盒阴影:3px 3px 3px#888;
盒影:3px 3px 3px#888;
过滤器:progid:DXImageTransform.Microsoft.Shadow(颜色='#888888',方向=135,强度=5);
背景色:#fff;
游标:默认值;
填充:10px;
位置:固定;
不透明度:1;
}


标题:
错误修复1963

2018年9月11日09:53上午-2018年9月12日09:53上午

说明:

领导: 石田浩

成员: 迈克尔·罗伯特,弗雷迪·马尔斯,S