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 图片上一张下一张链接效果代码
Mar 12 Javascript
jQuery中json对象的复制方式介绍(数组及对象)
Jun 08 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
Jul 08 Javascript
Js日期选择器并自动加入到输入框中示例代码
Aug 02 Javascript
Select标签下拉列表二级联动级联实例代码
Feb 07 Javascript
JavaScript模拟数组合并concat
Mar 06 Javascript
微信小程序 form组件详解
Oct 25 Javascript
微信小程序功能之全屏滚动效果的实现代码
Nov 22 Javascript
浅谈webpack性能榨汁机(打包速度优化)
Jan 09 Javascript
微信小程序配置服务器提示验证token失败的解决方法
Apr 03 Javascript
微信小程序实现的五星评价功能示例
Apr 25 Javascript
使用jquery实现轮播图效果
Jan 02 jQuery
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
后宫无数却洁身自好的男主,唐三只爱小舞
2020/03/02 国漫
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
2010/12/02 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
js location.replace与location.reload的区别
2010/09/08 Javascript
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
javascript定义变量时有var和没有var的区别探讨
2014/07/21 Javascript
jQuery实现带渐显效果的人物多级关系图代码
2015/10/16 Javascript
学习JavaScript设计模式(继承)
2015/11/26 Javascript
微信小程序 教程之注册程序
2016/10/17 Javascript
深入理解JS继承和原型链的问题
2016/12/17 Javascript
Node.js读取文件内容示例
2017/03/07 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
详解解决Vue相同路由参数不同不会刷新的问题
2018/10/12 Javascript
vue element动态渲染、移除表单并添加验证的实现
2019/01/16 Javascript
JavaScript实现页面中录音功能的方法
2019/06/04 Javascript
微信小程序顶部导航栏可滑动并选中放大
2019/12/05 Javascript
Vue.js仿Select下拉框效果
2020/02/18 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
[00:32]2018DOTA2亚洲邀请赛VG出场
2018/04/03 DOTA
python发布模块的步骤分享
2014/02/21 Python
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
python常用函数详解
2016/09/13 Python
Python解析Excle文件中的数据方法
2018/10/23 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
python使用Matplotlib改变坐标轴的默认位置
2019/10/18 Python
python调用matplotlib模块绘制柱状图
2019/10/18 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
2020/03/23 Python
一篇文章带你学习CSS3图片边框
2020/11/04 HTML / CSS
CK美国官网:Calvin Klein
2016/08/26 全球购物
社团活动总结范文
2014/04/26 职场文书
2014年小学教师工作自我评价
2014/09/22 职场文书
师德师风学习材料
2014/12/19 职场文书
毕业生的自我鉴定表范文
2019/05/16 职场文书
redis限流的实际应用
2021/04/24 Redis
springboot用户数据修改的详细实现
2022/04/06 Java/Android