jquery实现鼠标焦点十字效果
系统开发时很多地方需要有焦点效果,例如:鼠标点击聚焦,地图定位,在图片上突出显示,焦点定位页面元素。
本小功能通过jquery和graphics二次开发,实现通过鼠标点击页面任何区域,聚焦当前点击位置。适用于页面任何元素的位置效果。
首先引入jquery引擎包:jquery-1.4.2.min.js和graphics.js
http://download.csdn.net/detail/u010769276/5622689 源码下载地址
编写实现效果js文件,qfocus.js,源码如下:
- var qfocus = {
- config:{
- "bar_dis":true,//横竖条显示或隐藏
- "circle_dis":true,//焦点隐藏
- "bar_color":"black",//线条颜色
- "circle_color":"red",//圆圈颜色
- "rect_color":"green"//方块颜色
- },
- locationTimer: null,//时间控制标识符
- onmouseClick: function(ev){//鼠标点击获取鼠标位置画聚焦效果
- var point = this.mousePosition(ev);
- this.showFocus(point);
- },
- onclickElement:function(obj) {//鼠标点击获取坐标做焦点
- var _point = this.elementPosition(obj);
- this.showFocus(_point);
- },
- showFocus:function (point) {//显示焦点效果
- if (this.locationTimer) {
- clearTimeout(this.locationTimer);
- } //清除定时器
- var mapDiv = "#mapdiv";
- var _point = point;
- var canvas = $("#canvas");
- var vLine = $("#vline");
- var hLine = $("#hline");
- //焦点隐藏或显示
- if (this.config["circle_dis"] == true) {
- if (!$("#canvas").attr("id")) {
- 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;"/>';
- $(canvas).appendTo("body");
- } else {
- canvas.css("left", (_point.x - 25) + "px");
- canvas.css("top", (_point.y - 25) + "px");
- canvas.show();
- }
- paper = Raphael("canvas");
- paper.clear();
- var rect = paper.rect(20, 20, 10, 10, 0);
- rect.attr("stroke", this.config["rect_color"]);
- rect.attr("stroke-width", 1);
- }
- //是否显示横竖条
- if (this.config["bar_dis"] == true) {
- if (!$("#vline").attr("id")) {
- vLine = "<div id='vline' style='background-color:"+this.config["bar_color"]+";height:100%;width:1px;position:absolute;top:0px;left:" + (_point.x) + "px;'/>";
- $(vLine).appendTo("body");
- } else {
- $(vLine).css("left",(_point.x) + "px");
- vLine.show();
- }
- if (!$("#hline").attr("id")) {
- 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;'/>";
- $(hLine).appendTo("body");
- } else {
- $("#hline").css("top",(_point.y ) + "px");
- hLine.show();
- }
- }
- this.hideFocus();
- return true;
- }, hideFocus:function() {//隐藏焦点效果
- if (paper != null) {
- var circle = paper.circle(25, 25, 30);
- circle.attr("stroke", this.config["circle_color"]);
- circle.attr("stroke-width", 1);
- var anim = Raphael.animation({
- r: 5
- }, 900, null, function(){
- this.locationTimer = setTimeout(function(){
- $("#canvas").hide(); //焦点
- $("#vline").hide(); //横条
- $("#hline").hide(); //竖条
- clearTimeout(this.locationTimer);
- }, 500);
- });
- circle.animate(anim);
- } else {
- this.locationTimer = setTimeout(function(){
- $("#canvas").hide(); //焦点
- $("#vline").hide(); //横条
- $("#hline").hide(); //竖条
- clearTimeout(this.locationTimer);
- }, 500);
- }
- },mousePosition:function (e) {
- var x,y;
- var e = e||window.event;
- return {
- x:e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,
- y:e.clientY+document.body.scrollTop+document.documentElement.scrollTop
- }
- },elementPosition:function( oElement ) {
- var x2 = 0;
- var y2 = 0;
- var width = oElement.offsetWidth;
- var height = oElement.offsetHeight;
- var postion = "";
- if( typeof( oElement.offsetParent ) != 'undefined' ){
- for( var posX = 0, posY = 0; oElement; oElement = oElement.offsetParent ) {
- posX += oElement.offsetLeft;
- posY += oElement.offsetTop;
- }
- x2 = posX + width;
- y2 = posY + height;
- postion = [ posX, posY ,x2, y2];
- } else{
- x2 = oElement.x + width;
- y2 = oElement.y + height;
- postion = [ oElement.x, oElement.y, x2, y2];
- }
- var x = postion[0] + ((postion[2] - postion[0])/2);
- var y = postion[1] + ((postion[3] - postion[1])/2);
- return {"x":x,"y":y};
- }
- }
html页面调用源码:
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
- <script type="text/javascript" src="js/graphics.js"></script>
- <script type="text/javascript" src="js/qfocus.js"></script>
- <title>qfocus</title>
- <script type="text/javascript">
- function forward(ev){
- qfocus.onmouseClick(ev);
- }
- document.onmousedown=forward;
- </script>
- </head>
- <body>
- </body>
- </html>
效果图片:
jquery实现鼠标焦点十字效果的更多相关文章
- Jquery实现鼠标拖拽效果
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...
- jQuery实现鼠标经过图片变亮效果
在线体验效果:http://hovertree.com/texiao/jquery/1.htm 以下是完整源代码: <!DOCTYPE html PUBLIC "-//W3C//DTD ...
- 基于jQuery CSS3鼠标点击动画效果
分享基于jQuery CSS3鼠标点击动画效果支持图片或内容滑动,允许设置动画延迟效果.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class="co ...
- jQuery实现鼠标移到元素上动态提示消息框效果
当光标移动到某些元素上时,会弹出像tips的提示框,这种效果想必大家都有见到过吧,下面有个不错的示例,大家可以感受下 当光标移动到某些元素上时,会弹出像tips的提示框. 复制代码代码如下: < ...
- jquery 鼠标图片经过效果
<script> //鼠标图片经过效果 $(function(){ $(".jione_box ").css("background-color", ...
- Jquery绑定事件及动画效果
Jquery绑定事件及动画效果 本文转载于:https://blog.csdn.net/Day_and_Night_2017/article/details/85799522 绑定事件 bind(ty ...
- jQuery个性化图片轮播效果
jQuery个性化图片轮播效果 购物产品展示:图片轮播器<效果如下所示> 思路说明: 每隔一段时间,实现图片的自动切换及选项卡选中效果,鼠标划入图片动画停止,划出或离开动画开始 两个区域: ...
- jQuery css3鼠标悬停图片显示遮罩层动画特效
jQuery css3鼠标悬停图片显示遮罩层动画特效 效果体验:http://hovertree.com/texiao/jquery/39/ 效果图: 源码下载:http://hovertree.co ...
- 关于JQuery(最后一点动画效果*)
1,$(':radio').val(['1','2','3']);//特殊写法,把值为1 2 3的都选中. 2,math.abs(len)取绝对值 3,按钮高亮显示,一般是配置两个按钮,一个普通的,一 ...
随机推荐
- Ubuntu: 搭建tftp,nfs服务器
Ubuntu12.04搭建tftp&nfs服务器 http://blog.163.com/thinki_cao/blog/static/83944875201411610467306/ 硬件环 ...
- 解决打包时IsCmdBld.exe出错的问题
1.查看环境变量是否配置了 2.查看是否是使用administrator登陆的,要求使用administrator登陆否则可能会出现权限不足的现象
- 用css实现列表菜单的效果
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- null的小扩展
注意:JavaScript有6种数据类型,其中是五种基本数据类型,分别是:Undefined.Null.Boolean.Number 和String,还有一种复杂的数据类型Object 使用typeo ...
- 线程:Message和Runnable
原文地址http://blog.csdn.net/flowingflying/article/details/6370184 程序需要相应用户的操作,最要能在200ms(0.2s)之内,如果超过5秒没 ...
- php:兄弟连之面向对象版图形计算器2
上篇说到通过result.class.php来分流,因为三个类都继承了shape这个类,让我们来看一下,面向对象中的继承. shape.class.shape文件 <?php abstract ...
- PHP - 表单与验证
第11章 表单与验证 学习要点: 1.Header()函数 2.接收及验证数据 我们对Web感兴趣,认为它有用的原因是其主要通过基于HTML的表单发布和收集信息的能力.这些表单用来鼓励网站的反馈.进行 ...
- C#调用存储过程实现分页(个人代码笔记)
分页的存储过程: drop proc LoadPageMain create Proc LoadPageMain @pageIndex )) Fid ) ].Rows ) ...
- 【linux驱动】linux驱动总览
欢迎转载,转载时需保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:http:// ...
- Cocos2d-x使用android拍照功能加载照片内存过大,通过另存照片尺寸大小解决
使用2dx调用android拍照功能,拍照结束后在2dx界面显示拍照照片,如果不对照片做处理,会出现内存过大的问题,导致程序崩溃,如果仅仅另存拍照照片,则照片质量大小均下降,导致照片不够清晰,后来发现 ...