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 相关文章推荐
用javascript实现分割提取页面所需内容
May 09 Javascript
jquery的ajax请求全面了解
Mar 20 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
Jan 14 Javascript
复杂的javascript窗口分帧解析
Feb 19 Javascript
详解JavaScript跨域总结与解决办法
Oct 31 Javascript
Angularjs单选框相关的示例代码
Aug 17 Javascript
基于Vue过渡状态实例讲解
Sep 14 Javascript
Express下采用bcryptjs进行密码加密的方法
Feb 07 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
Jan 21 Javascript
vue-cli中使用高德地图的方法示例
Mar 28 Javascript
Vue+Element UI+vue-quill-editor富文本编辑器及插入图片自定义
Aug 20 Javascript
vue自定义指令和动态路由实现权限控制
Aug 28 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获取http请求的头信息实现步骤
2012/12/16 PHP
浅析PHP页面局部刷新功能的实现小结
2013/06/21 PHP
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
php中define用法实例
2015/07/30 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
jQuery的context属性用法实例
2014/12/27 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
Javascript字符串拼接小技巧(推荐)
2016/06/02 Javascript
微信小程序url传参写变量的方法
2018/08/09 Javascript
vue实现菜单切换功能
2019/05/08 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
vue 解决IOS10低版本白屏的问题
2020/11/17 Javascript
基于vuex实现购物车功能
2021/01/10 Vue.js
Python入门篇之正则表达式
2014/10/20 Python
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
python使用PyGame模块播放声音的方法
2015/05/20 Python
python简单读取大文件的方法
2016/07/01 Python
Python字符串格式化的方法(两种)
2017/09/19 Python
Python自定义一个类实现字典dict功能的方法
2019/01/19 Python
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
如何基于python实现不邻接植花
2020/05/01 Python
Python3读取和写入excel表格数据的示例代码
2020/06/09 Python
英国汽车零件购物网站:GSF Car Parts
2019/05/23 全球购物
毕业生自荐信的主要内容
2013/10/29 职场文书
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
实习报告评语
2014/04/26 职场文书
个人典型事迹材料
2014/12/30 职场文书
留学推荐信怎么写
2015/03/26 职场文书
2019年图书室自查报告范本
2019/10/12 职场文书
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
2022/01/18 HTML / CSS
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL