自定义jQuery“粘液”菜单,功能奇特

时间:2015-03-27 16:32:13

标签: javascript jquery math experimental-design

我想创建一个jQuery粘液菜单。基本概念很简单。我在屏幕上有一些固定位置的图标。其中一些是"开关",如果你点击它们,你需要点击另一个元素才能产生一些效果(想象一下你在RTS中有一个建筑时的形象。它还不够只需单击建筑物的图标,但您需要在该操作后将其放置在地图上。)

我想在点击图标后显示一个CSS三角形元素,然后点击另一个"兼容" DIV。问题不在这里,但我对CSS转换并不熟悉。

这是我到目前为止的一个小提琴。我的问题是箭头元素没有旋转到光标。我还需要更改它的大小,因此三角形的底部中心必须位于指针处。

http://jsfiddle.net/PSYKLON/41Lcj653/

HTML部分很简单(span元素用于调试):

<div class="fixicon"></div>
<div class="arrow"></div>
<span></span>

CSS:

span {
    float: right;
}
.fixicon {
    width: 30px;
    height: 30px;
    background: #111;
    border-radius: 15px;
    position: fixed;
    left: 10px;
    top: 10px;
}
.arrow {
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 0 25px 200px 25px;
    border-color: transparent transparent #111 transparent;
    opacity: 0;
    position: fixed;
    left: 0;
    top: 25px;
    transform-origin: 25px 0px;
    transform: rotate(0deg);
}
.arrow.show {
    opacity: 1;
}

和JS:

$(function(){
    $('.fixicon').click(function(){
        $('.arrow').toggleClass('show');
    });
    $(window).mousemove(function(e){
        if(!$('.arrow').hasClass('show')) {
            return;
        }
        var dir = point_direction(25,25,e.pageX,e.pageY);
        $('.arrow').css('transform','rotate('+dir+'deg)');
        $('span').text(dir);
    });
});

function point_direction(x1,y1,x2,y2) {
    var dx,dy;
    dy = y2 - y1;
    dx = x2 - x1;
    return (Math.atan(dy/dx) * 360) % 360;
}

所以基本上,我需要实现这样的事情,屏幕上的光标在哪里并不重要:

enter image description here

感谢能够提供帮助的任何人。 :)

0 个答案:

没有答案