网站开发积累(鼠标控制图片左右移动)
2013-11-18 23:47
393 查看
在最近的网站开发里,需要通过鼠标的位置来控制图片的左右平滑移动,说直接点就是:有一个比较长的图片,不能完全显示在窗口,当鼠标放在窗口右侧的时候,图片会向右移;当鼠标放在窗口左边的时候,图片会向左移;当鼠标放在窗口中间位置的时候,图片就不移动。根据一边查资料一边进行修改实验,终于给整出来了,现在将相关过程记录如下。
(一)首先,是找到一篇博客,题目是“js控制图片左右平滑移动”,里面列出了他控制图片移动的源代码,为了尊重原博主的知识产权,现列出原博客网址(http://hi.baidu.com/kongcheng2012/item/c7707ef497163eda43c36a1e)。这篇博客实现的功能跟我想要的效果已经很像了,他的主要思想是通过两个div实现了,设置上层div为overflow:hidde,相当于一个窗口,对下层div实现裁剪,只显示窗口以内的部分内容;而下层div里就是我们需要左右移动的图片,通过左右滚动,从而实现了图片的左右移动。不过他离我实际需要的效果还是有点点不一样,他是设置了两个button,一个是“向左”,一个是'向右",通过button.onmouseover()来检测鼠标是否移到button上了,当鼠标移动到“向左”按钮上时,则通过调用向左滚动的代码,来实现图片向左移动;当鼠标移动到“向右”按钮上时,则通过调用向右滚动的代码,来实现图片向右移动;当鼠标移动到图片上时,则图片不动。
(二)虽然博主通过“向左”、“向右”两个按钮,实现了图片的左移和右移,但我想要的是当鼠标放在图片左边时,则左移;当鼠标放在图片右边时,则右移;当放中间时则不动。很明显,假如我得到了鼠标在图片中间的相对位置,那么我就可以判断鼠标是处于左半部分还是有半部分,然后就可以跟博主的代码结合起来了,达到我想要的效果。
于是我下一步要做的就是“通过js获取鼠标在图片中的相对坐标”。还是在网上搜资料,代码如下:
<script type="text/javascript">window.onload = function()
{ var xSpan = document.getElemmentById("test");//test是测试图片的id,需要在body里引入<img src="" id="test"/> imgNode.onmousemove = function()
{
(一)首先,是找到一篇博客,题目是“js控制图片左右平滑移动”,里面列出了他控制图片移动的源代码,为了尊重原博主的知识产权,现列出原博客网址(http://hi.baidu.com/kongcheng2012/item/c7707ef497163eda43c36a1e)。这篇博客实现的功能跟我想要的效果已经很像了,他的主要思想是通过两个div实现了,设置上层div为overflow:hidde,相当于一个窗口,对下层div实现裁剪,只显示窗口以内的部分内容;而下层div里就是我们需要左右移动的图片,通过左右滚动,从而实现了图片的左右移动。不过他离我实际需要的效果还是有点点不一样,他是设置了两个button,一个是“向左”,一个是'向右",通过button.onmouseover()来检测鼠标是否移到button上了,当鼠标移动到“向左”按钮上时,则通过调用向左滚动的代码,来实现图片向左移动;当鼠标移动到“向右”按钮上时,则通过调用向右滚动的代码,来实现图片向右移动;当鼠标移动到图片上时,则图片不动。
(二)虽然博主通过“向左”、“向右”两个按钮,实现了图片的左移和右移,但我想要的是当鼠标放在图片左边时,则左移;当鼠标放在图片右边时,则右移;当放中间时则不动。很明显,假如我得到了鼠标在图片中间的相对位置,那么我就可以判断鼠标是处于左半部分还是有半部分,然后就可以跟博主的代码结合起来了,达到我想要的效果。
于是我下一步要做的就是“通过js获取鼠标在图片中的相对坐标”。还是在网上搜资料,代码如下:
<script type="text/javascript">window.onload = function()
{ var xSpan = document.getElemmentById("test");//test是测试图片的id,需要在body里引入<img src="" id="test"/> imgNode.onmousemove = function()
{
VAR X= event.clientX; //x坐标:鼠标在图片中的相对位置 VAR Y= event.clientY; //y坐标:鼠标在图片中的相对位置
}}</script>
(三)最后根据以上两段代码,整合成的最终源码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'Run.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <script type="text/javascript"> window.onload = function() { var imgNode = document.getElementById("demo"); var xSpan = document.getElementById("x"); var ySpan = document.getElementById("y"); imgNode.onmousemove = function() { xSpan.innerHTML = event.clientX; ySpan.innerHTML = event.clientY;
<!--根据获得的X坐标,与图片的宽进行对比,分成在图片左侧、中间、右侧三种情况 --> if(event.clientX<demo.offsetWidth/2-10) {if(MyMar) clearInterval(MyMar);Fang=1;MyMar=setInterval(MarqueeL,speed)} else if(event.clientX>demo.offsetWidth/2-10&&event.clientX<demo.offsetWidth/2+10) {clearInterval(MyMar)} else if(event.clientX>demo.offsetWidth/2+10) {if(MyMar) clearInterval(MyMar);Fang=0;MyMar=setInterval(MarqueeR,speed)} } } </script> </head> <body> <div id="demo" style="overflow:hidden;width:239px"> <div id="c1" style="width:478px"><img width="239" src="images/12.jpg"><img width="239" src="images/12.jpg"> </div> </div> <script> var speed=30; var c1_w=c1.offsetWidth; c1.style.width=c1_w*2+"px"; c1.innerHTML=c1.innerHTML; var Fang=1; var MyMar=setInterval(MarqueeL,speed); function MarqueeL() <!-- 下层div向左滚动-->
{ if(c1_w-demo.scrollLeft*2<=0) demo.scrollLeft-=c1_w; else demo.scrollLeft++; } function MarqueeR() <!--下层div向右滚动-->
{ if(c1_w-demo.scrollLeft>=c1_w) demo.scrollLeft+=c1_w/2; else demo.scrollLeft--; } </script> 鼠标相对窗口坐标是x:<span id="x"></span>--y:<span id="y"></span> </body> </html>
相关文章推荐
- js实现鼠标左右移动,图片也跟着移动效果
- 【unity3d游戏开发之基础篇】利用射线实现鼠标控制角色转向和移动(角色移动一)
- javascript实现图片左右轮换效果(鼠标控制亦可)
- js实现键盘的上下左右控制图片移动
- 【转】移动webApp开发的前端工程师必要的代码,手机webApp触摸左右滑动切换轮播图片广告
- 转向移动webApp开发的前端工程师必要的代码,手机webApp触摸左右滑动切换轮播图片广告
- js设置图片或文字自动左右滚动控制,鼠标经过停留
- 点击鼠标控制图片左右滑动而不影响 motools
- 最佳6款用于移动网站开发的 jQuery 图片滑块插件
- 最佳6款用于移动网站开发的 jQuery 图片滑块插件
- js javascript 鼠标控制图片左右滚动带自动翻滚,图片滑动新闻展示
- javascript实现图片左右轮换效果(鼠标控制亦可)
- 使用WPF Resource以及Transform等技术实现鼠标控制图片缩放和移动的效果
- 超级好用的鼠标控制图片左右…
- unity中如何用鼠标右键控制摄像机视角上下左右移动
- 使用WPF Resource以及Transform等技术实现鼠标控制图片缩放和移动的效果
- 鼠标移动到图片上,图片显示阴影边框,其他一些样式积累
- 零基础ios开发(二 关联button 实现图片的上下左右移动)
- 移动app开发,固定图片div宽高,根据实际图片大小控制图片不变形
- 移动app开发,固定图片div宽高,根据实际图片大小控制图片不变形