html

     <div>
<div class="money-input">
定投金额 :
<div class="input-rela">
<input type="text" placeholder="2000"/>
<span>元</span>
</div> </div>
<div class="money-line">
<img index="js-minus-a" class="js-minus" src="../images/minus.png" alt=""/>
<img id="dragImg" class="red-rela" src="../images/money-dw.png" alt="" onDrag="drag(event)" onDragEnd="dragEnd(event)" style="left: 265px;"/>
<img id="dragLine" class="line3" src="../images/money-line.png" alt=""/>
<img index="js-plus-a" class="js-plus" src="../images/plus.png" alt="" style="margin-left: 880px;"/>
</div>
<div class="money-desc">
<span style="margin-left: 65px;">100</span>
<span>500</span>
<span>1000</span>
<span>2000</span>
<span>3000</span>
<span>4000</span>
<span>5000</span>
<span>6000</span>
<span>7000</span>
<span>8000</span>
<span>9000</span>
<span>10000</span>
</div>
<p>单位:元</p>
</div>

css

 .money-input{margin:36px auto 0;width:330px;font-size:14px;color:#818181}
.input-rela{width:250px;height:42px;display:inline-block;position:relative}
.input-rela>input{width:inherit;height:38px;border:1px solid #eee}
.input-rela>span{position:absolute;right:10px;top:13px}
.money-line{width:970px;margin:60px auto 0;position:relative}
.line3{position:absolute;left:40px;top:10px}
.red-rela{position:absolute;top:;z-index:;cursor:pointer}
.money-desc,.month-desc{font-size:12px;color:#818181}
.money-desc+p,.month-desc+p{margin-right:60px;text-align:right;color:#5a5a5a}
.money-desc>span{display:inline-block;width:71px}
.month-desc>span{display:inline-block;width:79px}

js

  
1 /**
* Created by cq on 2015/6/15.
*/
$(function(){ $('.js-minus').click(function(){
/* min need calculate*/
var index = $(this).attr("index")
var move,min;
if(index=="js-minus-a"){
move = 77;
min = 34;
}
if(index=="js-minus-b"){
move = 85;
min = 36;
}
var redPoint = $(this).next()
var left = redPoint.css("left")
var leftInt = left.replace(/px/g,"")
if((parseInt(leftInt)-move)>=min){
var newLeft = (parseInt(leftInt)-move)+"px"
redPoint.css("left",newLeft)
var num = parseInt ( (parseInt(leftInt)-move-min) / move )
var input = $(this).parent().prev().find("input")
if(index=="js-minus-a"){
var spans = $(this).parent().next().find("span")
var html = spans.eq(num).html()
input.val(html)
}
if(index=="js-minus-b"){
input.val(getMonth(num))
}
}
}) $('.js-plus').click(function(){
/* max and min need calculate*/
var index = $(this).attr("index")
var move , max , min ;
if(index=="js-plus-a"){
move = 77; //ÿ��ƫ����
max = 881; //��������
min = 34; //��Сƫ����
}
if(index=="js-plus-b"){
move = 85;
max = 886;
min = 36;
} var redPoint = $(this).prev().prev()
var left = redPoint.css("left")
var leftInt = left.replace(/px/g,"")
if((parseInt(leftInt)+move)<=max){
var newLeft = (parseInt(leftInt)+move)+"px"
redPoint.css("left",newLeft)
var num = parseInt( (parseInt(leftInt)+move-min) / move )
var input = $(this).parent().prev().find("input")
if(index=="js-plus-a"){
var spans = $(this).parent().next().find("span")
var html = spans.eq(num).html()
input.val(html)
}
if(index=="js-plus-b"){
input.val(getMonth(num))
}
}
}) /*move img js*/
var offsetx = 0, offsety = 0;
var dragImg = document.getElementById("dragImg")
dragImg.addEventListener("mousedown",beforeDrag,true);
}) function beforeDrag(ev){
dragImg = ev.target;
var l = dragImg.offsetLeft;
var t = dragImg.offsetTop;
offsetx = ev.clientX - l;
offsety = ev.clientY - t;
} function drag(e){
e.preventDefault();
/*min need calculate*/
var ml = 8,mr = 20,maxy = 70,moveWidth = 77,min=34;
var dragImg = e.target;
var dragLine = document.getElementById("dragLine");
var movex = e.clientX - offsetx;
var movey = e.clientY - offsety;
var minPY = dragLine.offsetLeft-ml;
var maxPY = dragLine.offsetLeft+dragLine.clientWidth-mr;
if(Math.abs(movey)>maxy){
return
}
if(movex<minPY){
dragImg.style.left = minPY + "px";
return
}
if(movex>maxPY){
dragImg.style.left = maxPY + "px";
return
}
dragImg.style.left = movex + "px"; } function dragEnd (e){
e.preventDefault();
/*min need calculate*/
var ml = 8,mr = 20,maxy = 70,moveWidth = 77,min=34;
var dragImg = e.target;
var dragLine = document.getElementById("dragLine");
var movex = e.clientX - offsetx;
var movey = e.clientY - offsety;
var minPY = dragLine.offsetLeft-ml;
var maxPY = dragLine.offsetLeft+dragLine.clientWidth-mr; if(movex<minPY){
dragImg.style.left = minPY + "px";
$(dragImg).parent().prev().find("input").val(100)
return
}
if(movex>maxPY){
dragImg.style.left = maxPY + "px";
$(dragImg).parent().prev().find("input").val(10000)
return
}
/*dragEnd xifu*/
var num = parseInt ( movex / moveWidth )
dragImg.style.left = (min+moveWidth*num) + "px";
/*dragEnd set input*/
var thisNode = $(dragImg)
var spans = thisNode.parent().next().find('span')
var html = spans.eq(num).html()
var input = thisNode.parent().prev().find("input")
input.val(html)
} /*
function init() {
document.body.onmousemove = function(e) {
if (!e) {
e = window.event;
}
else {
e.srcElement = e.target;
}
document.getElementById("divDebug").innerHTML = "mousemove (" + e.clientX + "," + e.clientY + ") srcElement=" + e.srcElement.tagName + "[" + e.srcElement.id + "]";
}
}*/

html元素拖拽的更多相关文章

  1. Selenium - 实现网页元素拖拽

    Drag and Drop, 使用鼠标实现元素拖拽的操作貌似很复杂, 在Selenium中, 借助OpenQA.Selenium.Interactions.Actions类库中提供的方法, 实现起来还 ...

  2. Js元素拖拽功能实现

    Js元素拖拽功能实现 需要解决的问题 最近项目遇到了一个问题,就是用户某个操作需要弹出一个自定义的内容输入框,但是有个缺点,当浏览太大的时候没办法点击确认和取消按钮,应为这个弹出框是采用绝对定位的,取 ...

  3. WPF中元素拖拽的两个实例

    今天结合之前做过的一些拖拽的例子来对这个方面进行一些总结,这里主要用两个例子来说明在WPF中如何使用拖拽进行操作,元素拖拽是一个常见的操作,第一个拖拽的例子是将ListBox中的子元素拖拽到ListV ...

  4. Selenium WebDriver-通过ActionChains实现页面元素拖拽

    #encoding=utf-8 import unittest import time import chardet from selenium import webdriver class Visi ...

  5. VUE 元素拖拽、移动

    元素拖拽 作者:一粒尘土 时间:2019-10-30 使用范围:两个元素位置交换,移动元素到指定位置 涉及函数 属性 解释 draggable 是否允许元素进行拖拽 dragstart 拖拽开始触发的 ...

  6. vue全局自定义指令-元素拖拽

    小白我用的是vue-cli的全家桶,在标签中加入v-drap则实现元素拖拽, 全局指令我是写在main.js中 Vue.directive('drag', { inserted: function ( ...

  7. html5的元素拖拽

    今天学习了妙味课堂的课程: 在html5中有支持元素拖拽的一些属性和方法: 一些实例代码如下: <div id="div1"></div> <ul&g ...

  8. jQuery网页元素拖拽插件

    效果说明:配合已有CSS样式,载入插件后,网页元素可以随意在窗口内拖拽,设置了原位置半透明和拖拽半透明的效果选项,可根据需要选择.另外,当页面上有多个可拖拽元素时,可以载入另外一个用于设置z-inde ...

  9. Angular 元素拖拽

    拖动元素到指定区域 拖放的同时传递数据 1. 安装 ng2-drag-drop npm install ng2-drag-drop --save 2. 模板中配置可拖拽元素 // drag.compo ...

  10. div/dom元素拖拽缩放插件,纯js实现拖拽缩放,不依赖jQuery~

    产品需求,需要用到对div(dom)进行拖拽缩放操作,看到有好多插件,要么依赖jQuery,要么文件太大. 封装了一个插件,不压缩状态下5KB. html <!DOCTYPE html> ...

随机推荐

  1. NOIP2009 最优贸易

    3. 最优贸易 (trade.pas/c/cpp) [问题描述] C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个城市之间 多只有一条道路直接相连.这 m 条道 ...

  2. adb logcat调试中常用的命令介绍

    Android日志系统提供了记录和查看系统调试信息的功能.日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过 logcat 命 令来查看和使用. adb logcat 命令格式 : ad ...

  3. 3.1 全局存储带宽与合并访问 -- Global Memory(DRAM) bandwidth and memory coalesce

    全局存储带宽(DRAM) 全局内存是动态随机访问的方式访问内存.我们希望访问DRAM的时候非常快,实际情况是DRAM中出来的数据非常非常慢,这就好比,理想状态是泄洪,水倾巢而出,气势宏伟,实际取水却像 ...

  4. hdu4777-Rabbit Kingdom

    题意:求区间内与其他任何数都互质的数的个数. 题解:求出每个数左右互质的边界.然后对询问排序,通过树状数组求解. 讲道理真的好难啊= = http://blog.csdn.net/dyx404514/ ...

  5. Android实例-操作sqlite数据之自建导航(XE8+小米2)

    相关资料: 源文:http://blog.sina.com.cn/s/blog_77691fb90101g9hh.html help://embarcadero.rs_xe5/rad/Mobile_T ...

  6. Android问题-DelphiXE5编义时提示找不到“连接器(arm-linux-androideabi-ld.exe)"

    问题现象:DelphiXE5编义时提示找不到“连接器(arm-linux-androideabi-ld.exe)" 问题提示:Checking project dependencies... ...

  7. SQLServer2005数据导入Mysql到详细教程

    如果转载请注明转载地址,谢谢. SQL SERVER数据导入MYSQL目录 1.Navicat for MySQL 版本10.0.9 2.创建目标数据库 3.创建正确的SQL SERVER数据库ODB ...

  8. Ecshop图片不清晰怎么办?

    很多人说缩略图的质量不高,模糊,那是因为gd库生成缩略图时,默认生成jpg缩略图或商品图的质量是75.可以通过修改生成缩略图质量的默认值来提高缩略图的质量. 找到includes/cls_image. ...

  9. iOS动画详解(一)

    Core Graphics Framework是一套基于C的API框架,使用了Quartz作为绘图引擎.它提供了低级别.轻量级.高保真度的2D渲染.该框架可以用于基于路径的绘图.变换.颜色管理.脱屏渲 ...

  10. eclipse代码左虚线对齐设置

    前言 : 前阵子看到同事的eclipse左边有虚线对齐.有点好奇~刚开始以为是装了神马插件, 于是百度了下, 貌似没有找着. 一怒之下,逗比了半个小时,终于探索出来了~~ 设置如下 : 点击confi ...