Javascript 图像根据鼠标的位置而变化
如何根据鼠标位置实现图像更改:左、左上、右上、右下、右下、左下和单击 下面是我正在尝试做的一个例子: 我尝试过在Stack Overflow上找到一个类似的主题,但我似乎无法让左、右、上和下正常工作: 这是我一直在使用的代码Javascript 图像根据鼠标的位置而变化,javascript,jquery,mouseevent,jquery-events,mousemove,Javascript,Jquery,Mouseevent,Jquery Events,Mousemove,如何根据鼠标位置实现图像更改:左、左上、右上、右下、右下、左下和单击 下面是我正在尝试做的一个例子: 我尝试过在Stack Overflow上找到一个类似的主题,但我似乎无法让左、右、上和下正常工作: 这是我一直在使用的代码 通过查看他的js文件,您可以看到他是如何做到这一点的。他有一个名为site.faces.js的js文件 $.extend(Site, { Faces: { /* Attributes */ center: {
通过查看他的js文件,您可以看到他是如何做到这一点的。他有一个名为site.faces.js的js文件
$.extend(Site, {
Faces: {
/* Attributes */
center: {
'left': 0,
'top': 0
},
config: {
'persons': ['eric', 'fabian', 'lievin', 'nicolas', 'pascale', 'fred'],
'nbpositions': 8
},
currentImage: null,
/* Methods */
angle: function (cursor) {
var angle = Math.atan2(0-cursor.y,0-cursor.x)*(180 / Math.PI);
if(angle < 0) { angle += 360;}
return angle;
},
distance: function(cursor) {
return Math.sqrt( Math.pow((0 - cursor.y),2) + Math.pow((0 - cursor.x),2) );
},
setCenterFace: function() {
Site.Faces.center = $("#face").offset();
if (parseInt($('#face').css('padding-top'))==0) {
Site.Faces.center.left += 720/2;
Site.Faces.center.top += 480/2;
} else {
Site.Faces.center.left += $("#face").width()/2;
Site.Faces.center.top += parseInt($('#face').css('padding-top'))/2;
}
},
init: function(config) {
if (typeof config!='undefined') {
$.extend(this.config, config);
}
if (typeof this.config.person=='undefined') {
this.config.person = this.config.persons[Math.floor(Math.random()*this.config.persons.length)];
}
/*
To force a face, use this...
this.config['person'] = 'fabian';
*/
$('#face').addClass('face-'+this.config['person']);
if ($('html').hasClass('touch')) {
$('#face').css({
'background-image': 'url('+Shin.href(';img/site/faces/'+this.config['person']+'.jpg')+')'
});
$('.face-'+this.config['person']).fadeIn();
$(window).resize(function(){
var bgPositionX = '0px';
if ($('#face').css('padding-top')!='0px') {
bgPositionX = "center";
}
$('#face').css('background-position', bgPositionX+' 0px');
});
$(window).resize();
} else {
$(window).resize(function(){
Site.Faces.setCenterFace();
Site.Faces.showImage(9);
});
Site.Faces.preloadImage(Shin.href(';img/site/faces/'+this.config['person']+'_mixed.jpg'), function() {
$(window).resize();
var offset = null;
var cursor = {
x: 0,
y: 0
};
$('body').mousemove(function(e) {
cursor.x = (e.pageX - Site.Faces.center.left);
cursor.y = (e.pageY - Site.Faces.center.top);
Site.Faces.manageImage(cursor, 'mousemove');
});
$('a, #face').bind('mousedown',function() {
Site.Faces.showImage(10)
});
});
}
},
manageImage: function(cursor, event) {
if (event == 'mousemove') {
var centerDistance = 100
if ($('#face').css('padding-top')!='0px') {
centerDistance = 50
}
if (this.distance(cursor)<centerDistance) {
if(Site.Faces.currentImage != 9 && Site.Faces.currentImage != 10) {
Site.Faces.showImage(9);
}
} else {
var angleByPosition = 360/this.config['nbpositions'];
var numImage = Math.ceil(( this.angle(cursor) + (angleByPosition/2))/angleByPosition);
numImage = (numImage>this.config['nbpositions'])?1:numImage;
if (Site.Faces.currentImage != numImage) {
Site.Faces.showImage(numImage);
}
}
}
},
preloadImage: function(src, callback) {
var img = new Image();
img.src = src;
img.onload = function () {
$('#face').css('background-image','url('+src+')');
$('.face-'+Site.Faces.config['person']).fadeIn();
if (typeof callback=="function") callback();
};
},
showImage: function(num) {
Site.Faces.currentImage = num;
var height = (480*(10-num));
var bgPositionX = '0px';
if ($('#face').css('padding-top')!='0px') {
height = (200*(10-num));
bgPositionX = "center";
}
$('#face').css({
backgroundPosition: bgPositionX+' -'+height+'px'
});
}
}
});
$.extend(站点、{
面孔:{
/*属性*/
中心:{
“左”:0,
“顶部”:0
},
配置:{
“人”:[“埃里克”、“费边”、“利文”、“尼古拉斯”、“帕斯卡尔”、“弗雷德”],
“nbpositions”:8
},
currentImage:null,
/*方法*/
角度:函数(光标){
变量角度=数学atan2(0-cursor.y,0-cursor.x)*(180/Math.PI);
如果(角度<0){angle+=360;}
返回角;
},
距离:函数(光标){
返回Math.sqrt(Math.pow((0-cursor.y),2)+Math.pow((0-cursor.x),2));
},
setCenterFace:函数(){
Site.Faces.center=$(“#face”).offset();
if(parseInt($('#face').css('padding-top'))==0){
Site.Faces.center.left+=720/2;
Site.Faces.center.top+=480/2;
}否则{
Site.Faces.center.left+=$(“#face”).width()/2;
Site.Faces.center.top+=parseInt($('#face').css('padding-top'))/2;
}
},
初始化:函数(配置){
如果(配置类型!=“未定义”){
$.extend(this.config,config);
}
if(typeof this.config.person=='undefined'){
this.config.person=this.config.persons[Math.floor(Math.random()*this.config.persons.length)];
}
/*
要强制一张脸,请使用此。。。
this.config['person']='fabian';
*/
$('#face').addClass('face-'+this.config['person']);
if($('html').hasClass('touch')){
$(“#面”).css({
“背景图像”:“url('+Shin.href(';img/site/faces/'+this.config['person']+'.jpg')+”)”
});
$('.face-'+this.config['person']).fadeIn();
$(窗口)。调整大小(函数(){
变量bgPositionX='0px';
if($('#face').css('padding-top')!='0px'){
bgPositionX=“中心”;
}
$('#face').css('background-position',bgPositionX+'0px');
});
$(窗口).resize();
}否则{
$(窗口)。调整大小(函数(){
Site.Faces.setCenterFace();
网站。面孔。展示图片(9);
});
Site.Faces.preload图像(Shin.href('img/Site/Faces/'+this.config['person']+'u mixed.jpg'),函数(){
$(窗口).resize();
var offset=null;
变量游标={
x:0,,
y:0
};
$('body').mousemove(函数(e){
cursor.x=(e.pageX-Site.Faces.center.left);
cursor.y=(e.pageY-Site.Faces.center.top);
Site.Faces.manageImage(光标“mousemove”);
});
$('a,#face').bind('mousedown',function(){
Site.Faces.showImage(10)
});
});
}
},
manageImage:函数(光标、事件){
如果(事件=='mousemove'){
var中心距=100
if($('#face').css('padding-top')!='0px'){
中心距=50
}
if(this.distance(cursor)this.config['nbpositions'])?1:numImage;
if(Site.Faces.currentImage!=numImage){
Site.Faces.showImage(numImage);
}
}
}
},
预加载映像:函数(src,回调){
var img=新图像();
img.src=src;
img.onload=函数(){
$('#face').css('background-image','url('+src+'));
$('.face-'+Site.Faces.config['person']).fadeIn();
if(typeof callback==“function”)callback();
};
},
showImage:函数(num){
Site.Faces.currentImage=num;
变量高度=(480*(10个));
变量bgPositionX='0px';
if($('#face').css('padding-top')!='0px'){
高度=(200*(10个));
bgPositionX=“中心”;
}
$(“#面”).css({
背景位置:bgPositionX+'-'+高度+'px'
});
}
}
});
您尝试过什么?你的密码在哪里?什么工作不正常?嗨,这里我已经试过了,但还是没能让它工作。你不能只是插入他的代码,期待它工作。。。它应该给你一个如何工作的想法。是的,我知道我在寻找一个更简单的版本