系统开发时很多地方需要有焦点效果,例如:鼠标点击聚焦,地图定位,在图片上突出显示,焦点定位页面元素。

本小功能通过jquery和graphics二次开发,实现通过鼠标点击页面任何区域,聚焦当前点击位置。适用于页面任何元素的位置效果。

首先引入jquery引擎包:jquery-1.4.2.min.js和graphics.js

http://download.csdn.net/detail/u010769276/5622689 源码下载地址

编写实现效果js文件,qfocus.js,源码如下:

  1. var qfocus = {
  2. config:{
  3. "bar_dis":true,//横竖条显示或隐藏
  4. "circle_dis":true,//焦点隐藏
  5. "bar_color":"black",//线条颜色
  6. "circle_color":"red",//圆圈颜色
  7. "rect_color":"green"//方块颜色
  8. },
  9. locationTimer: null,//时间控制标识符
  10. onmouseClick: function(ev){//鼠标点击获取鼠标位置画聚焦效果
  11. var point = this.mousePosition(ev);
  12. this.showFocus(point);
  13. },
  14. onclickElement:function(obj) {//鼠标点击获取坐标做焦点
  15. var _point = this.elementPosition(obj);
  16. this.showFocus(_point);
  17. },
  18. showFocus:function (point) {//显示焦点效果
  19. if (this.locationTimer) {
  20. clearTimeout(this.locationTimer);
  21. } //清除定时器
  22.  
  23. var mapDiv = "#mapdiv";
  24. var _point = point;
  25.  
  26. var canvas = $("#canvas");
  27. var vLine = $("#vline");
  28. var hLine = $("#hline");
  29.  
  30. //焦点隐藏或显示
  31. if (this.config["circle_dis"] == true) {
  32. if (!$("#canvas").attr("id")) {
  33. canvas = '<div id="canvas" style="left:' + (_point.x - 25) + 'px;top:' + (_point.y - 25) + 'px;width:50px;height:50px;overflow:hidden;position:absolute;border:solid 0px red;"/>';
  34. $(canvas).appendTo("body");
  35. } else {
  36. canvas.css("left", (_point.x - 25) + "px");
  37. canvas.css("top", (_point.y - 25) + "px");
  38. canvas.show();
  39. }
  40. paper = Raphael("canvas");
  41. paper.clear();
  42.  
  43. var rect = paper.rect(20, 20, 10, 10, 0);
  44. rect.attr("stroke", this.config["rect_color"]);
  45. rect.attr("stroke-width", 1);
  46. }
  47.  
  48. //是否显示横竖条
  49. if (this.config["bar_dis"] == true) {
  50. if (!$("#vline").attr("id")) {
  51. vLine = "<div id='vline' style='background-color:"+this.config["bar_color"]+";height:100%;width:1px;position:absolute;top:0px;left:" + (_point.x) + "px;'/>";
  52. $(vLine).appendTo("body");
  53. } else {
  54. $(vLine).css("left",(_point.x) + "px");
  55. vLine.show();
  56. }
  57. if (!$("#hline").attr("id")) {
  58. var hLine = "<div id='hline' style='overflow:hidden;background-color:"+this.config["bar_color"]+";height:1px;width:100%;position:absolute;left:0px;top:" + (_point.y ) + "px;'/>";
  59. $(hLine).appendTo("body");
  60. } else {
  61. $("#hline").css("top",(_point.y ) + "px");
  62. hLine.show();
  63. }
  64. }
  65. this.hideFocus();
  66. return true;
  67. }, hideFocus:function() {//隐藏焦点效果
  68. if (paper != null) {
  69. var circle = paper.circle(25, 25, 30);
  70. circle.attr("stroke", this.config["circle_color"]);
  71. circle.attr("stroke-width", 1);
  72. var anim = Raphael.animation({
  73. r: 5
  74. }, 900, null, function(){
  75. this.locationTimer = setTimeout(function(){
  76. $("#canvas").hide(); //焦点
  77. $("#vline").hide(); //横条
  78. $("#hline").hide(); //竖条
  79. clearTimeout(this.locationTimer);
  80. }, 500);
  81. });
  82. circle.animate(anim);
  83. } else {
  84. this.locationTimer = setTimeout(function(){
  85. $("#canvas").hide(); //焦点
  86. $("#vline").hide(); //横条
  87. $("#hline").hide(); //竖条
  88. clearTimeout(this.locationTimer);
  89. }, 500);
  90. }
  91.  
  92. },mousePosition:function (e) {
  93. var x,y;
  94. var e = e||window.event;
  95. return {
  96. x:e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,
  97. y:e.clientY+document.body.scrollTop+document.documentElement.scrollTop
  98. }
  99. },elementPosition:function( oElement ) {
  100. var x2 = 0;
  101. var y2 = 0;
  102. var width = oElement.offsetWidth;
  103. var height = oElement.offsetHeight;
  104. var postion = "";
  105. if( typeof( oElement.offsetParent ) != 'undefined' ){
  106. for( var posX = 0, posY = 0; oElement; oElement = oElement.offsetParent ) {
  107. posX += oElement.offsetLeft;
  108. posY += oElement.offsetTop;
  109. }
  110. x2 = posX + width;
  111. y2 = posY + height;
  112. postion = [ posX, posY ,x2, y2];
  113. } else{
  114. x2 = oElement.x + width;
  115. y2 = oElement.y + height;
  116. postion = [ oElement.x, oElement.y, x2, y2];
  117. }
  118. var x = postion[0] + ((postion[2] - postion[0])/2);
  119. var y = postion[1] + ((postion[3] - postion[1])/2);
  120. return {"x":x,"y":y};
  121. }
  122. }

html页面调用源码:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
  6. <script type="text/javascript" src="js/graphics.js"></script>
  7. <script type="text/javascript" src="js/qfocus.js"></script>
  8. <title>qfocus</title>
  9. <script type="text/javascript">
  10. function forward(ev){
  11. qfocus.onmouseClick(ev);
  12. }
  13. document.onmousedown=forward;
  14. </script>
  15. </head>
  16. <body>
  17. </body>
  18. </html>

效果图片:

jquery实现鼠标焦点十字效果的更多相关文章

  1. Jquery实现鼠标拖拽效果

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  2. jQuery实现鼠标经过图片变亮效果

    在线体验效果:http://hovertree.com/texiao/jquery/1.htm 以下是完整源代码: <!DOCTYPE html PUBLIC "-//W3C//DTD ...

  3. 基于jQuery CSS3鼠标点击动画效果

    分享基于jQuery CSS3鼠标点击动画效果支持图片或内容滑动,允许设置动画延迟效果.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="co ...

  4. jQuery实现鼠标移到元素上动态提示消息框效果

    当光标移动到某些元素上时,会弹出像tips的提示框,这种效果想必大家都有见到过吧,下面有个不错的示例,大家可以感受下 当光标移动到某些元素上时,会弹出像tips的提示框. 复制代码代码如下: < ...

  5. jquery 鼠标图片经过效果

    <script> //鼠标图片经过效果 $(function(){ $(".jione_box ").css("background-color", ...

  6. Jquery绑定事件及动画效果

    Jquery绑定事件及动画效果 本文转载于:https://blog.csdn.net/Day_and_Night_2017/article/details/85799522 绑定事件 bind(ty ...

  7. jQuery个性化图片轮播效果

    jQuery个性化图片轮播效果 购物产品展示:图片轮播器<效果如下所示> 思路说明: 每隔一段时间,实现图片的自动切换及选项卡选中效果,鼠标划入图片动画停止,划出或离开动画开始 两个区域: ...

  8. jQuery css3鼠标悬停图片显示遮罩层动画特效

    jQuery css3鼠标悬停图片显示遮罩层动画特效 效果体验:http://hovertree.com/texiao/jquery/39/ 效果图: 源码下载:http://hovertree.co ...

  9. 关于JQuery(最后一点动画效果*)

    1,$(':radio').val(['1','2','3']);//特殊写法,把值为1 2 3的都选中. 2,math.abs(len)取绝对值 3,按钮高亮显示,一般是配置两个按钮,一个普通的,一 ...

随机推荐

  1. Ubuntu: 搭建tftp,nfs服务器

    Ubuntu12.04搭建tftp&nfs服务器 http://blog.163.com/thinki_cao/blog/static/83944875201411610467306/ 硬件环 ...

  2. 解决打包时IsCmdBld.exe出错的问题

    1.查看环境变量是否配置了 2.查看是否是使用administrator登陆的,要求使用administrator登陆否则可能会出现权限不足的现象

  3. 用css实现列表菜单的效果

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. null的小扩展

    注意:JavaScript有6种数据类型,其中是五种基本数据类型,分别是:Undefined.Null.Boolean.Number 和String,还有一种复杂的数据类型Object 使用typeo ...

  5. 线程:Message和Runnable

    原文地址http://blog.csdn.net/flowingflying/article/details/6370184 程序需要相应用户的操作,最要能在200ms(0.2s)之内,如果超过5秒没 ...

  6. php:兄弟连之面向对象版图形计算器2

    上篇说到通过result.class.php来分流,因为三个类都继承了shape这个类,让我们来看一下,面向对象中的继承. shape.class.shape文件 <?php abstract ...

  7. PHP - 表单与验证

    第11章 表单与验证 学习要点: 1.Header()函数 2.接收及验证数据 我们对Web感兴趣,认为它有用的原因是其主要通过基于HTML的表单发布和收集信息的能力.这些表单用来鼓励网站的反馈.进行 ...

  8. C#调用存储过程实现分页(个人代码笔记)

    分页的存储过程: drop proc LoadPageMain create Proc LoadPageMain @pageIndex )) Fid     ) ].Rows )            ...

  9. 【linux驱动】linux驱动总览

    欢迎转载,转载时需保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:http:// ...

  10. Cocos2d-x使用android拍照功能加载照片内存过大,通过另存照片尺寸大小解决

    使用2dx调用android拍照功能,拍照结束后在2dx界面显示拍照照片,如果不对照片做处理,会出现内存过大的问题,导致程序崩溃,如果仅仅另存拍照照片,则照片质量大小均下降,导致照片不够清晰,后来发现 ...