AngularJS:有元素跟随光标

Fli*_*ats 5 javascript css jquery angularjs

jsfiddle:https://jsfiddle.net/Flignats/jzrzo56u/3/

我的页面上有一个最初隐藏的元素(popover).当页面上的另一个元素悬停时,我希望弹出框显示在光标旁边.

在我的小提琴中,我有3个段落和弹出窗口.当用户的光标输入段落时,将显示弹出框.当用户的光标离开元素时,不再显示弹出框.

我无法检索光标坐标并将光标位于光标附近.

任何帮助表示赞赏:)

角度代码:

var app = angular.module('myApp', []);

app.controller('Ctrl',['$scope',function($scope) {
$scope.name = 'Ray';
$scope.popover = false;

//Method to show popover
$scope.showPopover = function() {
return $scope.popover = !$scope.popover;
};


}]);
Run Code Online (Sandbox Code Playgroud)

HTML代码:

<div ng-app="myApp" ng-controller="Ctrl">
  <div id="container">
    <p ng-mouseenter="showPopover()" ng-mouseleave="showPopover()">Square 1</p>
    <p ng-mouseenter="showPopover()" ng-mouseleave="showPopover()">Square 2</p>
    <p ng-mouseenter="showPopover()" ng-mouseleave="showPopover()">Square 3</p>
  </div>
  <div class="pop-availability" ng-show="popover">
    <div class="pop-title">
        <p>Title Content Goes Here</p>
    </div>
    <div class="pop-content">
        <table class="pop-table">
            <thead>
                <tr>
                    <th></th>
                    <th ng-repeat='name in data.record'>{{name.name}}</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>Row 1</td>
                    <td ng-repeat='available in data.record'>{{available.number}}</td>
                </tr>
                <tr>
                    <td>Row 2</td>
                    <td ng-repeat='unavailable in data.record'>{{unavailable.number}}</td>
                </tr>
                <tr>
                    <td>Row 3</td>
                    <td ng-repeat='unassigned in data.record'>{{unassigned.number}}</td>
                </tr>
            </tbody>
        </table>
    </div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)

编辑:更新了捕获鼠标坐标的jsfiddle.仍然无法让popover移动到光标:https://jsfiddle.net/Flignats/jzrzo56u/4/

编辑:越来越近,但它是一个小小的车!https://jsfiddle.net/Flignats/jzrzo56u/5/

解决方案:https://jsfiddle.net/Flignats/jzrzo56u/6/

Mar*_*tin 2

JSFiddle

HTML - 将 $event 参数添加到 showPopover 函数

<p ng-mouseenter="showPopover($event)" ng-mouseleave="showPopover()">Square 1</p>
<p ng-mouseenter="showPopover($event)" ng-mouseleave="showPopover()">Square 2</p>
<p ng-mouseenter="showPopover($event)" ng-mouseleave="showPopover()">Square 3</p>
Run Code Online (Sandbox Code Playgroud)

并且使用 ng-style 你可以改变Source的位置

<div class="pop-availability" ng-show="popover"
       ng-style="{left:field.left,
                   top:field.top}" > 
Run Code Online (Sandbox Code Playgroud)

JavaScript

//Method to show popover
$scope.showPopover = function(mouseEvent) {
if (!mouseEvent)
  {
    mouseEvent = window.event;
  }
  $scope.field.left = mouseEvent.pageX + 'px';
  $scope.field.top = mouseEvent.pageY+ 'px';
return $scope.popover = !$scope.popover;
};
Run Code Online (Sandbox Code Playgroud)

CSS 更改 - 添加position:absolute

.pop-availability {
    border-radius: 8px;
    box-shadow: 0 0 10px 0 #969696;
    display: inline-block;
    min-width: 375px;
    position:absolute;
}
Run Code Online (Sandbox Code Playgroud)