I want to position an element $menu
on the mouse's pointer (on click). $menu
is inside $icon
which has position: relative
. ( $menu
has position absolute.)
$(document).ready(function() { $("a").click(function(ev) { var $icon = $(ev.currentTarget) var $menu = $icon.next() var thisPos = $icon.position() var x = ev.clientX var y = ev.clientY $menu.css('top', y + 'px') $menu.css('left', x + 'px') }); })
nav > ul[_v-2e9e2f12] { background: #3a3c3a; margin: 0; padding: 10px; position: absolute; top: 0; left: 0; height: 100%; z-index: 9999; box-shadow: 2px 0 1px rgba(0, 0, 0, 0.1); } nav > ul li[_v-2e9e2f12] { display: block; margin: 0 0 8px; text-align: center; position: relative; -webkit-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; width: 48px; height: 48px; background: #ccc; } ul[_v-0078ee36] { background: #3a3c3a; position: absolute; border-radius: 3px; box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1); } a[_v-2e9e2f12] { display: block; width: 48px; height: 48px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <nav> <ul _v-2e9e2f12=""> <li _v-2e9e2f12=""> <a _v-2e9e2f12=""> </a> <ul _v-0078ee36="" _v-2e9e2f12=""> Hello! </ul> </li> <li _v-2e9e2f12=""> <a _v-2e9e2f12=""> </a> <ul _v-0078ee36="" _v-2e9e2f12=""> Hello! </ul> </li> </ul> </nav>
But I get a weird behavior: $menu
is not positioned on the mouse's pointer but a few pixels to the right and bottom. And for the second element it's even worse: many pixels to the right and bottom.
How to fix this, and make $menu
to be positioned right in the mouse's pointer?
Here's the JSFiddle .
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.