Can';t在mousemove上,将此javascript更改为高度小于宽度
所以我试着设置这个,你可以在设置中输入一个近似值。接近度决定何时触发缩放,但您只需要输入一个距离——高度和宽度相同。如何更改此代码以允许输入一个单独的高度值和一个单独的宽度值?或者-如何只输入一个值,而将垂直值切成两半?任何一个都可以。。。下面是一些我认为需要更改的代码。。。如果你需要整件事,让我知道,我会把剩下的发出去Can';t在mousemove上,将此javascript更改为高度小于宽度,javascript,jquery,dock,onmousemove,fisheye,Javascript,Jquery,Dock,Onmousemove,Fisheye,所以我试着设置这个,你可以在设置中输入一个近似值。接近度决定何时触发缩放,但您只需要输入一个距离——高度和宽度相同。如何更改此代码以允许输入一个单独的高度值和一个单独的宽度值?或者-如何只输入一个值,而将垂直值切成两半?任何一个都可以。。。下面是一些我认为需要更改的代码。。。如果你需要整件事,让我知道,我会把剩下的发出去 jQuery(document).bind('mousemove', function(e) { var pointer = jQuery.iUtil.getPointer
jQuery(document).bind('mousemove', function(e) {
var pointer = jQuery.iUtil.getPointer(e);
var toAdd = 0;
if (el.fisheyeCfg.halign && el.fisheyeCfg.halign == 'center')
var posx = pointer.x - el.fisheyeCfg.pos.x
- (el.offsetWidth - el.fisheyeCfg.itemWidth * el.fisheyeCfg.items.size())
/ 2 - el.fisheyeCfg.itemWidth / 2;
else if (el.fisheyeCfg.halign && el.fisheyeCfg.halign == 'right')
var posx = pointer.x - el.fisheyeCfg.pos.x - el.offsetWidth
+ el.fisheyeCfg.itemWidth * el.fisheyeCfg.items.size();
else
var posx = pointer.x - el.fisheyeCfg.pos.x;
var posy = Math.pow(pointer.y - el.fisheyeCfg.pos.y - el.offsetHeight / 2, 2);
el.fisheyeCfg.items.each(function(nr) {
distance = Math.sqrt(Math.pow(posx - nr * el.fisheyeCfg.itemWidth, 2) + posy);
distance -= el.fisheyeCfg.itemWidth / 2;
distance = distance < 0 ? 0 : distance;
distance = distance > el.fisheyeCfg.proximity ? el.fisheyeCfg.proximity : distance;
distance = el.fisheyeCfg.proximity - distance;
extraWidth = el.fisheyeCfg.maxWidth * distance / el.fisheyeCfg.proximity;
this.style.width = el.fisheyeCfg.itemWidth + extraWidth + 'px';
this.style.left = el.fisheyeCfg.itemWidth * nr + toAdd + 'px';
toAdd += extraWidth;
});
jQuery.iFisheye.positionContainer(el, toAdd);
});
jQuery(document).bind('mousemove',函数(e){
var-pointer=jQuery.iUtil.getPointer(e);
var-toAdd=0;
如果(el.fisheycfg.halign&&el.fisheycfg.halign=='center')
var posx=pointer.x-el.fisheycfg.pos.x
-(el.offsetWidth-el.fisheycfg.itemWidth*el.fisheycfg.items.size())
/2-el.fisheyeCfg.itemWidth/2;
else if(el.fisheycfg.halign&&el.fisheycfg.halign=='right')
var posx=pointer.x-el.fisheycfg.pos.x-el.offsetWidth
+el.fisheycfg.itemWidth*el.fisheycfg.items.size();
其他的
var posx=pointer.x-el.fisheycfg.pos.x;
var posy=Math.pow(pointer.y-el.fisheycfg.pos.y-el.offsetHeight/2,2);
el.Fisheycfg.项目每个(功能(个){
距离=Math.sqrt(Math.pow(posx-nr*el.fisheycfg.itemWidth,2)+posy);
距离-=el.fisheyeCfg.itemWidth/2;
距离=距离<0?0:距离;
距离=距离>el.fisheyeCfg.PROCESSION?el.fisheyeCfg.PROCESSION:距离;
距离=el.FISHEYCFG.PROCESSION-距离;
extraWidth=el.fisheycfg.maxWidth*距离/el.fisheycfg.approxity;
this.style.width=el.fisheycfg.itemWidth+extraWidth+'px';
this.style.left=el.fisheycfg.itemWidth*nr+toAdd+'px';
toAdd+=额外宽度;
});
jQuery.iFisheye.positionContainer(el,toAdd);
});
有什么想法吗
谢谢,马特我把剧本弄得一团糟,结果修改得比我计划的多了一点 现在需要使用几个新参数调用脚本:
itemHeight
、proximityX
和proximityY
$(document).ready(function() {
$('#fisheye').Fisheye({
maxWidth: 90,
items: 'a',
itemsText: 'span',
container: '.fisheyeContainter',
itemWidth: 40,
itemHeight: 40,
proximityX: 90,
proximityY: 10,
halign : 'center'
})
});
我没有缩小它,但下面是修改后的完整插件:
/**
* Interface Elements for jQuery
* Fisheye menu
*
* http://interface.eyecon.ro
*
* Copyright (c) 2006 Stefan Petre
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*
*/
/**
* Build a Fisheye menu from a list of links
*
* @name Fisheye
* @description Build a Fisheye menu from a list of links
* @param Hash hash A hash of parameters
* @option String items items selection
* @option String container container element
* @option Integer itemWidth the minimum width for each item
* @option Integer maxWidth the maximum width for each item
* @option String itemsText selection of element that contains the text for each item
* @option Integer proximity the distance from element that make item to interact
* @option String valign vertical alignment
* @option String halign horizontal alignment
*
* @type jQuery
* @cat Plugins/Interface
* @author Stefan Petre
*/
jQuery.iFisheye = {
build : function(options)
{
return this.each(
function()
{
var el = this;
el.fisheyeCfg = {
items : jQuery(options.items, this),
container: jQuery(options.container, this),
pos : jQuery.iUtil.getPosition(this),
itemWidth: options.itemWidth,
itemHeight: options.itemHeight,
itemsText: options.itemsText,
proximityX: options.proximityX,
proximityY: options.proximityY,
valign: options.valign,
halign: options.halign,
maxWidth : options.maxWidth
};
jQuery.iFisheye.positionContainer(el, 0);
jQuery(window).bind(
'resize',
function()
{
el.fisheyeCfg.pos = jQuery.iUtil.getPosition(el);
jQuery.iFisheye.positionContainer(el, 0);
jQuery.iFisheye.positionItems(el);
}
);
jQuery.iFisheye.positionItems(el);
el.fisheyeCfg.items
.bind(
'mouseover',
function()
{
jQuery(el.fisheyeCfg.itemsText, this).get(0).style.display = 'block';
}
)
.bind(
'mouseout',
function()
{
jQuery(el.fisheyeCfg.itemsText, this).get(0).style.display = 'none';
}
);
jQuery(document).bind(
'mousemove',
function(e)
{
var pointer = jQuery.iUtil.getPointer(e);
var toAdd = 0;
if (el.fisheyeCfg.halign && el.fisheyeCfg.halign == 'center')
var posx = pointer.x - el.fisheyeCfg.pos.x - (el.offsetWidth - el.fisheyeCfg.itemWidth * el.fisheyeCfg.items.size())/2 - el.fisheyeCfg.itemWidth/2;
else if (el.fisheyeCfg.halign && el.fisheyeCfg.halign == 'right')
var posx = pointer.x - el.fisheyeCfg.pos.x - el.offsetWidth + el.fisheyeCfg.itemWidth * el.fisheyeCfg.items.size();
else
var posx = pointer.x - el.fisheyeCfg.pos.x;
var posy = Math.pow(pointer.y - el.fisheyeCfg.pos.y - el.offsetHeight + el.fisheyeCfg.itemHeight,2);
el.fisheyeCfg.items.each(
function(nr)
{
distanceX = Math.sqrt(
Math.pow(posx - nr*el.fisheyeCfg.itemWidth, 2)
);
distanceY = Math.sqrt(posy) - el.fisheyeCfg.itemHeight;
distanceX -= el.fisheyeCfg.itemWidth/2;
distanceX = distanceX < 0 ? 0 : distanceX;
distanceX = distanceX > el.fisheyeCfg.proximityX ? el.fisheyeCfg.proximityX : distanceX;
distanceX = el.fisheyeCfg.proximityX - distanceX;
distanceY = distanceY > el.fisheyeCfg.proximityY ? el.fisheyeCfg.proximityY : distanceY;
distanceY = el.fisheyeCfg.proximityY - distanceY;
extraWidth = el.fisheyeCfg.maxWidth/4 * (distanceX*distanceY)/(el.fisheyeCfg.proximityX*el.fisheyeCfg.proximityY); // divided by 4 to smooth the sizing transition
extraWidth = (extraWidth > el.fisheyeCfg.maxWidth) ? el.fisheyeCfg.maxWidth : extraWidth;
this.style.width = el.fisheyeCfg.itemWidth + extraWidth + 'px';
this.style.left = el.fisheyeCfg.itemWidth * nr + toAdd + 'px';
toAdd += extraWidth;
}
);
jQuery.iFisheye.positionContainer(el, toAdd);
}
);
}
)
},
positionContainer : function(el, toAdd)
{
if (el.fisheyeCfg.halign)
if (el.fisheyeCfg.halign == 'center')
el.fisheyeCfg.container.get(0).style.left = (el.offsetWidth - el.fisheyeCfg.itemWidth * el.fisheyeCfg.items.size())/2 - toAdd/2 + 'px';
else if (el.fisheyeCfg.halign == 'left')
el.fisheyeCfg.container.get(0).style.left = - toAdd/el.fisheyeCfg.items.size() + 'px';
else if (el.fisheyeCfg.halign == 'right')
el.fisheyeCfg.container.get(0).style.left = (el.offsetWidth - el.fisheyeCfg.itemWidth * el.fisheyeCfg.items.size()) - toAdd/2 + 'px';
el.fisheyeCfg.container.get(0).style.width = el.fisheyeCfg.itemWidth * el.fisheyeCfg.items.size() + toAdd + 'px';
},
positionItems : function(el)
{
el.fisheyeCfg.items.each(
function(nr)
{
this.style.width = el.fisheyeCfg.itemWidth + 'px';
this.style.left = el.fisheyeCfg.itemWidth * nr + 'px';
}
);
}
};
jQuery.fn.Fisheye = jQuery.iFisheye.build;
/**
*jQuery的接口元素
*鱼眼菜单
*
* http://interface.eyecon.ro
*
*版权所有(c)2006 Stefan Petre
*MIT下的双重许可(MIT-LICENSE.txt)
*和GPL(GPL-LICENSE.txt)许可证。
*
*/
/**
*从链接列表构建鱼眼菜单
*
*@name鱼眼
*@description从链接列表构建鱼眼菜单
*@param散列参数的散列
*@选项字符串项目选择
*@option字符串容器元素
*@option Integer itemWidth每个项目的最小宽度
*@option Integer maxWidth每个项目的最大宽度
*@option String items包含每个项目文本的元素的文本选择
*@option整数接近度使项目与元素交互的距离
*@选项字符串有效垂直对齐
*@选项字符串halign水平对齐
*
*@type jQuery
*@cat插件/接口
*@作者Stefan Petre
*/
jQuery.iFisheye={
构建:功能(选项)
{
每个人把这个还给我(
函数()
{
var el=这个;
el.Fisheycfg={
items:jQuery(options.items,this),
容器:jQuery(options.container,this),
pos:jQuery.iUtil.getPosition(this),
itemWidth:options.itemWidth,
itemHeight:options.itemHeight,
itemsText:options.itemsText,
proximityX:options.proximityX,
proximityY:options.proximityY,
valign:options.valign,
halign:options.halign,
maxWidth:options.maxWidth
};
jQuery.iFisheye.positionContainer(el,0);
jQuery(窗口).bind(
“调整大小”,
函数()
{
el.fisheycfg.pos=jQuery.iUtil.getPosition(el);
jQuery.iFisheye.positionContainer(el,0);
jQuery.iFisheye.positionItems(el);
}
);
jQuery.iFisheye.positionItems(el);
el.fisheyeCfg.items
.绑定(
“鼠标悬停”,
函数()
{
jQuery(el.fisheycfg.itemsText,this).get(0.style.display='block';
}
)
.绑定(
“老鼠屎”,
函数()
{
jQuery(el.fisheycfg.itemsText,this).get(0.style.display='none';
}
);
jQuery(document.bind)(
“mousemove”,
职能(e)
{
var-pointer=jQuery.iUtil.getPointer(e);
var-toAdd=0;
如果(el.fisheycfg.halign&&el.fisheycfg.halign=='center')
var posx=pointer.x-el.fisheycfg.pos.x-(el.offsetWidth-el.fisheycfg.itemWidth*el.fisheycfg.items.size())/2-el.fisheycfg.itemWidth/2;
else if(el.fisheycfg.halign&&el.fisheycfg.halign=='right')
var posx=pointer.x-el.fisheycfg.pos.x-el.offsetWidth+el.fisheycfg.itemWidth*el.fisheycfg.items.size();
其他的
var posx=pointer.x-el.fisheycfg.pos.x;
var posy=Math.pow(pointer.y-el.fisheycfg.pos.y-el.offsetHeight+el.fisheycfg.itemHeight,2);
el.fisheycfg.items.each(
功能(nr)
{
distanceX=Math.sqrt(
Math.pow(posx-nr*el.fisheycfg.itemWidth,2)
);
distanceY=Math.sqrt(posy)-el.fisheyeCfg.itemHeight;
距离x-=el.fisheyeCfg.itemWidth/2;
distanceX=distanceX<0?0:distanceX;
distanceX=distanceX>el.fisheycfg.proximityX?el.fisheycfg.proximityX:distanceX;
距离x=el.fisheycfg.proximityX-距离x;
距离Y=距离Y>el.fisheyeCfg.proximityY?el.fisheyeCfg.proximityY:距离;
距离y=el.fisheyeCfg.proximityY-距离;
extraWidth=el.fisheycfg.maxWidth/4*(distanceX*distanceY)/(el.fisheycfg.proximityX*el.fisheycfg.proximityY);//除以4可平滑大小转换
外部宽度=(外部宽度)