jquery利用拖拽方式在图片上添加热链接


Posted in Javascript onNovember 24, 2015

本文实例讲述了jquery利用拖拽方式在图片上添加热链接的实现过程,分享给大家供大家参考。具体如下:
运行效果截图如下:

jquery利用拖拽方式在图片上添加热链接

项目的需求,要在一张图片上加不同的链接,比如说,图片是一个套房,里面有沙发,茶几,酒柜,电视柜等,然后在这些物件上加一个超链接,点击后打开相关产品的介绍。

用jquery写了一个在图片添加锚点的功能,实现的原理:一个文本框写入标题,一个文本框写链接,一个添加按钮,一个编辑按钮,当写好内容后点击添中添加,便会在图片的上方出现一个P标签,然后按着鼠标左键拖拽该标签放到相应的地方松开就可以了,下面来看具体代码。

首入引入jquery库

<script src="js/jquery/1.11.1/jquery.min.js"></script>

构建html。

<div class="box">
 <input type="text" name="title">
 <input type="text" name="link" value="http://">
  <input type="button" value="添加链接" id="add">
 <input type="button" value="编辑" id="show">
</div>
<div class="img_box">
 <img src="images/55cc64813c330.jpg">
</div>

写上CSS,注意这里标签的位置是相对于图片的位置的,所以图片的img_box要加上position: relative;

*{padding: 0; margin: 0;}
.box{margin: 10px;}
.img_box{position: relative;}
.img_box .maodian{position: absolute; padding: 5px 10px; border-right: 5px; background: #000; 
   filter:alpha(opacity=40); 
   -moz-opacity:0.4; 
   opacity:0.4;
   top:10px;
   left:10px;
   color:#FFF;
   font-size: 12px;
   font-family: "宋体";
   cursor: pointer;
}
.maodian a{color: #FFF; text-decoration: none;}

写上JS

$(function(){
   var obj = null ;//定义标签对象的全局变量,目的用于编辑
   $("#add").click(function(){//绑定添加按钮单击事件
    var title = $("input[name=title]").val();//取得标题内容
    var link = $("input[name=link]").val();//取得超链接
    var html = "<p class='maodian'><a href='"+link+"'>"+title+"</a></p>";组装P标签
    $(".img_box").append(html); //添加到img_box div中,即图片的后面
   });
 
   $(".img_box").delegate(".maodian","mousedown",function(e){//绑定标签鼠标按下事件
    obj = $(this);//把当前标签对象赋值给变量
    if(obj.setCapture){ //用于兼容非准浏览器
     obj.setCapture();
    }
    $("input[name=title]").val(obj.find("a").text());//把点中标签的内容加到标题文本框中
    $("input[name=link]").val(obj.find("a").attr("href"));/把点中标签的链接加到链接本框中
     var _x = e.pageX - obj.offset().left;//取得鼠标到标签左边left的距离
     var _y = e.pageY - obj.offset().top; //取得鼠标到标签顶部top的距离
     var oWidth = $(this).outerWidth(); //取得标签的宽,包括padding
     var oHeight = $(this).outerHeight();//取得标签的高,包括padding
     var x=0,y=0; 定义移动的全局变量
 
     $(".img_box").bind("mousemove",function(e){
      var img_position = $(".img_box").offset(); //取得图片的位置
      x = e.pageX -_x - img_position.left; //计算出移动的x值
      y = e.pageY -_y - img_position.top; //计算出移动的y值
      if(x<0){ //如果移动小于0,证明移到了图片外,应设为0
       x = 0;
      }else if(x>($(".img_box img").width()-oWidth)){
      //如果移动大于图片的宽度减去标签的宽度,证明移到了图片外,应该设为可用的最大值
       x = $(".img_box img").width()-oWidth;
      }
 
      if(y<0){ //同上
       y = 0;
      }else if(y>($(".img_box img").height()-oHeight)){
       y = $(".img_box img").height()-oHeight;
      }
      obj.css({"left":x,"top":y});
     });
 
     $(".img_box").bind("mouseup",function(){ //绑定鼠标左键弹起事件
      $('.img_box').unbind("mousemove"); //移动mousemove事件
      $(this).unbind("mouseup"); //移动mouseup事件
      if(obj.releaseCapture){ //兼容非标准浏览器
      obj.releaseCapture();
     }
      
     });
     return false; //用于选中文字时取消浏览器的默认事件
   });
 
   $(".img_box").delegate(".maodian","dblclick",function(){//绑定双击事件
    $(this).remove(); //删除当前标签
   })
 
   $("#show").click(function(){//绑定编辑按钮
     //更新内容到标签
    obj.find("a").text($("input[name=title]").val()).attr("href",link);
   })
  
   $(".img_box").delegate("a","click",function(){ //取消a标签的单击默认事件
    return false;
   })
 
  })

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
探讨JQUERY JSON的反序列化类 using问题的解决方法
Dec 19 Javascript
推荐10个2014年最佳的jQuery视频插件
Nov 12 Javascript
JavaScript判断用户是否对表单进行了修改的方法
Mar 18 Javascript
js实现鼠标点击左上角滑动菜单效果代码
Sep 06 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
May 31 Javascript
js实现手机拍照上传功能
Jan 17 Javascript
详解javascript立即执行函数表达式IIFE
Feb 13 Javascript
angular.js指令中的controller、compile与link函数的不同之处
May 10 Javascript
微信小程序实现评论功能
Nov 28 Javascript
JavaScript创建对象的四种常用模式实例分析
Jan 11 Javascript
微信小程序新手教程之页面打开数量限制
Mar 03 Javascript
JS代码编译器Monaco使用方法
Jun 11 Javascript
jquery中checkbox使用方法简单实例演示
Nov 24 #Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
Nov 24 #Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
Nov 24 #Javascript
基于jquery实现简单的手风琴特效
Nov 24 #Javascript
jQuery插件实现无缝滚动特效
Nov 24 #Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
Nov 24 #Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
Nov 24 #Javascript
You might like
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
2013/11/07 PHP
md5 16位二进制与32位字符串相互转换示例
2013/12/30 PHP
php中switch与ifelse的效率区别及适用情况分析
2015/02/12 PHP
JavaScript库 开发规则
2009/01/31 Javascript
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
基于jquery的文本框与autocomplete结合使用(asp.net+json)
2012/05/30 Javascript
jQuery ReferenceError: $ is not defined 错误的处理办法
2013/05/10 Javascript
javascript实现焦点滚动图效果 具体方法
2013/06/24 Javascript
非常漂亮的JS+CSS图片幻灯切换特效
2013/11/20 Javascript
JavaScript实现公历转农历功能示例
2017/02/13 Javascript
Vue刷新修改页面中数据的方法
2018/09/16 Javascript
基于vue中keep-alive缓存问题的解决方法
2018/09/21 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
教你如何用Node实现API的转发(某音乐)
2019/09/20 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
Python中__name__的使用实例
2015/04/14 Python
python简单实现基于SSL的IRC bot实例
2015/06/15 Python
python数据抓取分析的示例代码(python + mongodb)
2017/12/25 Python
Python的多维空数组赋值方法
2018/04/13 Python
使用Python和xlwt向Excel文件中写入中文的实例
2018/04/21 Python
如何使用Python的Requests包实现模拟登陆
2018/04/27 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
Python time库基本使用方法分析
2019/12/13 Python
python处理RSTP视频流过程解析
2020/01/11 Python
python中安装django模块的方法
2020/03/12 Python
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
SmartBuyGlasses美国官网:太阳眼镜和眼镜
2017/08/20 全球购物
linux面试题参考答案(11)
2012/05/01 面试题
走群众路线学习笔记
2014/11/06 职场文书
党员年度个人总结
2015/02/14 职场文书
2015国际残疾人日活动总结
2015/03/24 职场文书
2016年学校十一国庆节活动总结
2016/04/01 职场文书
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS