基础 - 拖拽的简单封装


/** * 禁止选中文本(兼容) **/function funClearSelection() {    window.getSelection?window.getSelection().removeAllRanges():document.selection.empty();}/** * 简单拖拽 **/function funDropSource(obj,bX,bY,funContractX,funContractY,funFinish) {    obj.onmousedown = function (event) {        var oEvent = event||window.event;        var nSparkX = oEvent.clientX-this.offsetLeft;        var nSparkY = oEvent.clientY-this.offsetTop;        var that = this;        document.onmousemove = function (event) {            var oEvent = event || window.event;            var nX = oEvent.clientX-nSparkX;            var nY = oEvent.clientY-nSparkY;            if(funContractX) nX = funContractX(nX);            if(funContractY) nY = funContractY(nY);            if(bX) that.style.left = nX+"px";            if(bY) that.style.top = nY+"px";            funClearSelection();        }        document.onmouseup = function () {            document.onmousemove = null;            if (funFinish) funFinish();        }    }}function funDropX(obj,funContract,funFinish) {    funDropSource(obj,true,false,funContract,null,funFinish);}function funDropY(obj,funContract,funFinish) {    funDropSource(obj,false,true,null,funContract,funFinish);}function funDropBoth(obj,funContractX,funContractY,funFinish) {    funDropSource(obj,true,true,funContractX,funContractY,funFinish);}



var oBox = document.getElementById("box");var oContent = oBox.getElementsByClassName("content")[0];var oMark = oBox.getElementsByClassName("mark")[0];var oBar = oMark.getElementsByClassName("bar")[0];

var nX = oBox.offsetHeight/oContent.offsetHeight*oMark.offsetHeight;oBar.style.height = nX+"px";

var nMax = oMark.offsetHeight-nX;funDropY(oBar,function (value) {    return value<=0?0:(value>=nMax?nMax:value);}, function () {    console.log(oBar.offsetTop/nMax);});
 
 
时间: 2024-11-11 01:49:13

基础 - 拖拽的简单封装的相关文章

QT窗口拖拽功能简单应用(处理dragEnterEvent和dropEvent事件,不同的事件有不同的信息,比如mimeData)

void dragEnterEvent(QDragEnterEvent *event); void dropEvent(QDropEvent *event); ui->lineEdit->setAcceptDrops(false); this->setAcceptDrops(true); // 拖拽处理函数 void MainWindow::dragEnterEvent(QDragEnterEvent *event) { #if 1   // 判断拖拽文件类型,文件名 接收该动作 if

js原生代码实现鼠标拖拽(超简单)

首先先来看这一张图 在这种图中,盒子的大小为512px,并且margin-left:-250px margin-top:140px;并通过一些样式让其在中部显示 这些样式都不是重要的,这里加个margin是为了让其出现拖拽的时候出现鼠标偏移,好做演示而已,不然margin:0 auto 就可以实现盒子的居中 首先通过offsetLeft的方法获取到盒子的偏移值,然后在通过clientX,clientY获取到鼠标的坐标,通过当前坐标减去offsetLeft的坐标就可以获取鼠标在div里面的 具体数

js基础拖拽

var oDiv= document.getElementById("div"); oDiv.onmousedown= function(e){ var _this = this; var e= e || window.event; var diffX= e.clientX - _this.offsetLeft; var diffY= e.clientY - _this.offsetTop; document.onmousemove= function(e){ var e= e ||

js基础拖拽二

var oDiv= document.getElementById("div"); oDiv.onmousedown= function(e){ var _this = this; var e= e || window.event; var diffX= e.clientX - _this.offsetLeft; var diffY= e.clientY - _this.offsetTop; if(_this.setCapture) _this.setCapture(); docume

面向对象实战之封装拖拽对象

面向对象实战之封装拖拽对象 利用前面几章的所涉及到的知识,封装一个拖拽对象.为了能够帮助大家了解更多的方式与进行对比,我会使用三种不同的方式来实现拖拽. 不封装对象直接实现: 利用原生JavaScript封装拖拽对象: 通过扩展jQuery来实现拖拽对象. 本文的例子会放置于codepen.io中,供大家在阅读时直接查看.如果对于codepen不了解的同学,可以花点时间稍微了解一下. 拖拽的实现过程会涉及到非常多的实用小知识,因此为了巩固我自己的知识积累,也为了大家能够学到更多的知识,我会尽量详

拖拽系列二、利用JS面向对象OOP思想实现拖拽封装

接着上一篇拖拽系列一.JavaScript实现简单的拖拽效果这一篇博客将接着对上一节实现代码利用JS面向对象(OOP)思维对上一节代码进行封装; 使其模块化.避免全局函数污染.方便后期维护和调用:写到这里突然想起一句话“没有任何一个题目是彻底完成的.总还会有很多事情可做......” 我想这句话程序开发大概也适用吧,前端开发人员总是可以结合自己之前学到“拖拽”相关知识,不断扩展.完善.无穷无尽.......     利用匿名函数自执行实现封装 ;(function(){ //do somethi

Atitit。D&amp;D drag&amp;drop拖拽功能c#.net java swing的对比与实现总结

Atitit.D&D drag&drop拖拽功能c#.net java swing的对比与实现总结 1. 实现一个D&D操作一般包括三个步骤: 1 2. .net黑头的拖曳机制.必须有DragEnter事件(单独写DragDrop事件是不会具有拖拽功能的) 2 3. ---java黑头的拖曳..必须有DragEnter事件(单独写 Drop事件是不会具有拖拽功能的) 2 4. 代码 3 5. 参考 5 1. 实现一个D&D操作一般包括三个步骤: 首先实现一个拖拽源,这个拖拽

React.js实现原生js拖拽效果及思考

一.起因&思路 不知不觉,已经好几天没写博客了...近来除了研究React,还做了公司官网... 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖拽效果. 首先,其实拖拽效果的思路是很简单的.主要就是三个步骤: 1.onmousedown的时候,启动可拖拽事件,记录被拖拽元素的原始坐标参数. 2.onmousemove的时候,实时记录鼠标移动的距离,结合被拖拽元素第一阶段的坐标参数,计算并设置新的坐标值. 3.onmouseup的时候,关闭可拖拽事件

一款优雅的小程序拖拽排序组件实现

前言 最近po主写小程序过程中遇到一个拖拽排序需求. 上网一顿搜索未果, 遂自行实现. 这次就不上效果图了, 直接扫码感受吧. 灵感 首先由于并没有啥现成的小程序案例给我参考. 所以有点无从下手, 那就找个h5的拖拽实现参考参考. 于是在jquery插件网看了几个拖拽排序实现后基本确定了思路. 大概就是用 transform 做变换. 是的, 灵感这种东西就是借鉴过来的-- 确定需求 要能拖拽, 毕竟是拖拽排序嘛, 拖拽肯定是第一位. 要能排序, 先有拖拽后有天 -- 跑偏了, 拖拽完了肯定是要