首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

前端实现伸缩框

JS 实现伸缩框 我们思路是这样子: 实现右下角三角拖动图标 计算伸缩框距离左边顶部距离 监听鼠标的点击、拖动、抬起事件,记录鼠标当前相对视窗左上角点左侧距离顶部距离 计算鼠标距离边框左侧距离...,即边框新宽度 计算鼠标距离边框顶部距离,即边框新高度 限定边框最小距离,防止 icon 拖动隐藏 我们需要跟浏览器事件打交道,这里引入 RxJS ,(当然,读者可以手写原生 javascript...RxJS一个用于处理异步事件库。...); drag$.subscribe(handleMouseMove); // 观察者 -> 鼠标拖动过程中监听 这里我们引入 rxjs 为 7.8.1 版本,读者可以直接使用 cdn -> https...当鼠标按下拖动时候,触发对伸缩框宽度高度重新计算并赋值。当鼠标抬起后,结束监听。

20110

rxjs实现元素拖拽

最近看了一点rxjs东西。现学现玩一下…就来尝试下元素拖拽吧 如果使用rxjs而是普通js实现思路也不难。...,通过计算当前位置设置元素样式 3、监听 document mouseup,设置标识停止拖动 // 不使用rxjs实现。...在拖拽操作中,我们源肯定就是鼠标事件了,所以我们这边建立 3 个源,分别是鼠标移动、鼠标点击、鼠标 mouseup const target = document.getElementById("drag...接下来,就是在mousemove事件中去计算元素位置并设置样式改变元素位置了。上面的pipe运算符就是将前一个操作符输出作为下一个操作符输入。...然后又是使用map去根据原来计算出来偏移值当前鼠标移动值去计算元素位置了 ...

1.6K10
您找到你想要的搜索结果了吗?
是的
没有找到

Angular 结合 rxjs 实现拖拽

这是我参与「掘金日新计划 · 4 月更文挑战」第12天, 在上两篇文章中,我们学习了元素中必知重要属性方法 Angular 中自定义 Video 操作,没有度过读者可先了解。...一个不错 Idea,如果你使用 Angular @angular/cdk/drag-drop 可以轻松实现,但是我们这里不使用工具。...元素拖拽 接下来就是实现 video 元素拖拽。这里我们要监听 video 元素三个事件,分别是鼠标按下 mousedown,鼠标移动 mousemove 鼠标抬起 mouseup。...在移动过程中,计算目标元素相对可视窗口左侧顶部距离,将值赋予到 left top。...相关知识点会在接下来文章介绍。 最后,我们得到效果如下 【完】✅

86810

Rxjs 响应式编程-第四章 构建完整Web应用程序

构建完整Web应用程序 在本章中,我们将构建一个典型Web应用程序,在前端后端使用RxJS。...您还可以在任何Node.js项目中使用RxJS,并且能够在任何项目中使用反应式编程RxJS。...添加地震列表 新仪表板第一个功能是显示地震实时列表,包括有关其位置,大小日期信息。此列表数据与来自USGS网站地图相同。...这类似于JavaScript事件工作方式。 鼠标事件股票交易代码是热Observables例子。...更重要是,我们代码现在非常高效。 无论我们检索地震信息量如何,我们总是只有一个鼠标悬停事件单击事件,而不是数百个事件

3.6K10

Rxjs 响应式编程-第一章:响应式

在那里,我们使用鼠标点击作为用户点击时实时生成无限事件流。这个想法起源于Erik Meijer,也就是Rxjs作者。他认为:你鼠标就是一个数据库。...在响应式编程中,我把鼠标点击事件作为一个我们可以查询操作持续事件。想象成流而不是一个孤立事件,这种想法开辟了一种全新思考方式。我们可以在其中操纵尚未创建整个值流。 好好想想。...事实上,大多数我们在任何应用程序中使用数据都可以表示为序列。 序列查询 让我们使用传统javascript传统事件绑定技术来实现一个鼠标点击流。...RxJS为operators提供了从大多数JavaScript数据类型创建Observable功能。 让我们回顾一下你将一直使用最常见:数组,事件回调。...我们可以使用fromCallbackfromNodeCallback两个函数将回调转换为Observable。Node.js遵循是在回调函数第一个参数传入错误对象,表明存在问题。

2.2K40

# 如何使用 ArcGIS Engine10.2 + C# VS2012 开发环境,实现鹰眼功能。

它还可以让我们通过拖动或者缩放鹰眼地图上矩形框,来改变主地图视图范围,实现同步更新。在本文中,我将介绍如何用C#语言和ArcGIS Engine控件类库,实现一个简单鹰眼地图功能。...编写几个事件处理方法,用来响应主地图鹰眼地图上鼠标操作,并实现视图范围变化同步创建一个Windows窗体应用程序,并添加两个MapControl控件,一个作为主地图,一个作为鹰眼地图:图片接下来我们需要编写一个方法...表示如果按下鼠标左键,并且指针落在鹰眼地图矩形框中,就标记为可移动,并记录点击坐标,用于后续拖动操作。...CopyToPageLayout 方法用于将主地图地图对象复制到页面布局控件中地图对象,实现两个地图对象同步。它使用一个 IObjectCopy 接口,用于复制覆盖对象。...处理了鹰眼地图上鼠标事件,如OnMouseDown、OnMouseMove、OnMouseUp等,用于移动或改变矩形框位置大小,并相应地改变主地图视图范围。

1.9K10

跟我学Rx编程——惯性滑动

,MOUSE_UP) 这些事件流触发规律是,由一个MOUSE_DOWN事件,一连串MOUSE_MOVE事件一个MOUSE_UP事件组成 MOUSE_DOWN MOUSE_MOVE MOUSE_MOVE...手势移动偏移量实时速度 我们需要取得手指或者鼠标按下后移动距离来确定每时每刻速度,因为我们需要在手指或鼠标抬起瞬间利用这个速度进行惯性移动 let speedOb = mdOb.pipe(switchMapTo...使用这个操作符目的是,为了取得上次计算结果,因为我们需要比较前一个事件这个事件手指或鼠标的Y坐标变化。...(muOb, speedOb) 上面这句话可以让我们得到当鼠标或手指抬起时候,speedOb事件流里面最新数据,我们用这个数据作为用户滑动速度,然后做一个逐渐减速过程。...其中speedinitFrame是传入常数,用来调整姿势。 这个事件流将流出你需要数据,最后进行subscribe即可

67420

构建流式应用:RxJS 详解

学习 RxJS,我们需要从可观测数据流(Streams)说起,它是 Rx 中一个重要数据类型。 流是在时间流逝过程中产生一系列事件。它具有时间与事件响应概念。...下雨天时,雨滴随时间推移逐渐产生,下落时对水面产生了水波纹影响,这跟 Rx 中流是很类似的。而在 Web 中,雨滴可能就是一系列鼠标点击、键盘点击产生事件或数据集合等等。...RxJS 是基于观察者模式迭代器模式以函数式编程思维来实现。 观察者模式 观察者模式在 Web 中最常见应该是 DOM 事件监听触发。...Rx.Observable.prototype.switchMap() 使用 switchMap 替换 mergeMap,将能取消上一个已无用请求,只保留最后请求结果流,这样就确保处理展示最后搜索结果...RxJS 作为一个库,可以与众多框架结合使用,但并不是每一种场合都需要使用RxJS

7.2K31

drag事件详解:html5鼠标拖动排序及resize实现方案分析及实践

对列表进行拖动排序,尺寸改变。之前一般会使用jQuery-UI(interactjs更加纯粹)。其通过mousedown、mousemove、mouseup这三个事件来实现页面元素被鼠标拖拽效果。...,被拖拽对象离开目标对象时触发拖动事件列表每一个拖动元素,在拖动过程中,都会经历三个过程,拖动开始-->拖动过程中--> 拖动结束在拖动目标上触发事件 (源元素-被拖动元素):ondragstart...ondragover - 当被拖动元素在目的地元素内时触发——放到何处ondragleave - 当被拖动元素没有放下就离开目的地元素时触发ondrop - 在一个拖动过程中,释放鼠标键时触发此事件——.../uri-list注:如果给定类型数据不存在,则将其添加到拖动数据存储末尾,使得dataTransfer.types列表中最后一个项目将是新类型。...从拖动目标(dragstart事件触发元素)生成半透明图像,并在拖动过程中跟随鼠标指针。这个图片是自动创建,你不需要自己去创建它。

6.2K21

【HTML5】逐步分析如何实现拖放功能

一、什么是拖放 拖放就是通过鼠标放在一个物体上,按住鼠标不放就可以把一个物体托动到另一个位置。其实我们平时一直都有接触,如图 ? 那么在网页上其实也可以实现同样效果拖放功能,如图 ?...,那么我们来了解一下 (1)被拖动元素事件拖动元素所支持事件如下表所示 事件 含义 dragstart 准备拖动拖动元素时触发 drag 拖动过程中触发(频繁触发) dragend 拖动结束时触发...那么最后我们再来将一下如何才能触发 drop事件,只需要阻止 dragenter事件 dragover事件 默认行为即可。 <!... text/uri-list,前者表示普通字符串,后者表示URL字符串;第二个参数 就是用于存放字符串 getData() 方法只接收一个参数,即需要接收字符串类型 我们来简单使用一下这两个方法...,这个两个属性需要搭配使用,它们决定了被拖放元素 目标元素 之间关系,当设定好两者关系后,在进行拖动操作时候,鼠标会根据不同关系显示不同样式,除此之外,没有别的特别的作用。

1.4K10

手写原生代码专题 | 图片拖拽效果(一)

但是前端发展实在太快,各种框架组件五花八门,由于项目业务时间问题,我们都习惯了使用各种框架组件去实现,以至于离开这些东西,我们有可能连个最基础动效都不清楚怎么实现,这就是我想写这个系列文章原因...三、拖拽相关知识复习 在练习前,我们先复习下拖拽相关几个API事件,在某个元素被拖动时,会按照顺序触发以下事件: dragstart(按住鼠标不放,刚开始拖动元素时,就会触发 dragstart 事件...) drag(dragstart 事件触发后,只要元素还在被拖动时,就会持续触发 drag 事件,类似 mouseover,随着鼠标移动而不断触发) dragend(当拖动元素动作停止时即松开鼠标时,...1、编写HTML代码 html代码文件比较简单,我们依次创建5个div方格,并将被拖动图片元素容器初始化放置在第一个方格内,并在元素上添加可拖动属性 draggable 值为 true,表示此元素可被拖动...,在编写前,我们需要提前规划思考下,具体思路如下: 首先定义两个DOM对象变量fillempties,一个代表被拖动图片对象,一个是可放置元素目标对象(数组对象)。

2.2K30

【附 RxJS 实战】

) 高阶函数(接受函数作为参数或者返回一个函数函数) 没有隐式输入、输出(输入通过函数入参传递,输出通过函数 return 进行返回) 值不变性(指在程序状态改变时,不直接修改当前数据,而是创建并追踪一个新数据...阶乘数学表达式是:f(n) = n*f(n - 1) (n > 1) ,f(n) = 1 (n = 1) ,利用递归解决问题。这个过程中基本上没有状态量,只有表达式,也没有赋值语句。...说明:既然是一种 Monads,就意味着存在延迟计算,即只有当变量真正使用时才去计算,整个链式遍历过程也是这样。更多 RxJS 在 JS 中,能体现 FRP 第三方框架是 RxJS。...sequences 来组合 非同步行为 事件基础 程序 JS 库;可以把 RxJS 理解为处理 非同步行为 Lodash。...拖拽实战 再演示一个实战栗子: 实现一个简单拖拽功能; 拖拽功能,可理解为:对 mousedown, mousemove, mouseup 等多个事件进行观察,并相应地改变小方块位置。

82010

移动端app开发问题及理解

事件有点不同 web端事件有 onload 页面中所有标签,文档,图片等资源加载完毕后触发 onclick 鼠标单击事件 ondbclick 鼠标双击事件 onmousedown 鼠标按下...ondragover 元素在有效拖放目标上正在被拖动时运行脚本 ondragstart 在拖动操作开端运行脚本 ondrop 当被拖元素正在被拖放是运行脚本 onmousewheel 当鼠标滚轮整被滚动时...手指在屏幕上下滑触发 vant组件使用过程中遇到问题 弹框dialog组件确认回调函数 最开始我绑定是confirm事件 但是实际调用时候接口一直调用进入死循环了,控制台报Maximum call...可以改用beforeClose事件 回调函数有两个参数,第一个判断点击是确认按钮还是取消按钮。第二个感觉是可以关闭模态框 移动端消息推送 消息推送跟设备走还是跟人走?...我理解WebView相当于一个中间层,h5原生应用交互都是通过原生应用中WebView,h5调用原生应用注入其中原生对象方法,原生应用调用h5暴露在该环境中JavaScript对象方法,

3.8K10

再谈BOMDOM(5):各个大流浪器DOMBOM里面的那些坑—兼容性

指向在childNodes列表中最后一个节点 childNodes NodeList 所有子节点列表 previousSibling Node 返回选定节点一个同级节点,若不存在,则返回null...document.getElementsByTagName('*');//获取所有元素 PS:IE 浏览器在使用通配符时候,会把文档最开始 html 规范声明当作第一个元素节点。...返回鼠标移出源节点:event.fromElement 返回鼠标移入源节点:event.toElement 返回激活事件源节点:event.srcElement 节点相对引用:(设当前对节点为...:node.firstChild 返回最后一个子节点:node.lastChild 返回同属下一个节点:node.nextSibling 返回同属上一个节点:node.previousSibling 节点信息...问题一:Firefox,Chrome、SafariIE9都是通过非标准事件pageXpageY属性来获取web页面的鼠标位置

94340

200 行代码实现一个滑动验证码

本文章主要来介绍一下第一个阶段,也就是前端校验验证码实现,下面来介绍一下拖动验证码具体实现。 需求 那么前端完成一个合格验证码,究竟需要做成什么样子呢?...它有两个主要事件需要监听,一个叫做 dragover,一个叫做 dragleave,分别用来监听 Drag 对象拖上拖开事件。...,就是 Drag 组件 slot 部分: 这部分定义了在拖动过程中鼠标移动图片样式...,这里也 Drag 滑块一样定义了一样样式,这样在拖动过程中,就会显示一个 Drag 滑块一样滑块随鼠标移动。...最后如果大家想也仿照实现一下的话,可以参考这个组件:https://github.com/cameronhimself/vue-drag-drop,里面也介绍了其他一些属性事件,在某些情况下还是很有用

1.1K40

200 行代码实现一个滑动验证码

本文章主要来介绍一下第一个阶段,也就是前端校验验证码实现,下面来介绍一下拖动验证码具体实现。 需求 那么前端完成一个合格验证码,究竟需要做成什么样子呢?...它有两个主要事件需要监听,一个叫做 dragover,一个叫做 dragleave,分别用来监听 Drag 对象拖上拖开事件。...,就是 Drag 组件 slot 部分: 这部分定义了在拖动过程中鼠标移动图片样式...,这里也 Drag 滑块一样定义了一样样式,这样在拖动过程中,就会显示一个 Drag 滑块一样滑块随鼠标移动。...最后如果大家想也仿照实现一下的话,可以参考这个组件:https://github.com/cameronhimself/vue-drag-drop,里面也介绍了其他一些属性事件,在某些情况下还是很有用

1.1K80

200行代码实现解锁滑动验证码(文末附源码)

本文章主要来介绍一下第一个阶段,也就是前端校验验证码实现,下面来介绍一下拖动验证码具体实现。 需求 那么前端完成一个合格验证码,究竟需要做成什么样子呢?...它有两个主要事件需要监听,一个叫做 dragover,一个叫做 dragleave,分别用来监听 Drag 对象拖上拖开事件。...,就是 Drag 组件 slot 部分: 这部分定义了在拖动过程中鼠标移动图片样式...,这里也 Drag 滑块一样定义了一样样式,这样在拖动过程中,就会显示一个 Drag 滑块一样滑块随鼠标移动。...最后如果大家想也仿照实现一下的话,可以参考这个组件:https://github.com/cameronhimself/vue-drag-drop,里面也介绍了其他一些属性事件,在某些情况下还是很有用

2.3K31

dragula插件web端移动端拖拽排序

Dragula简介 Dragula是一款支持移动触摸屏设备纯js元素拖放插件。这个元素拖放插件使用简单,浏览器兼容性好,能够实现通过鼠标或在移动设备中通过手指来拖动DOM元素位置。...如果元素被放置在containers列表元素之外,插件将取消revertOnSpillremoveOnSpill选项。 注意:拖拽事件只会发生在用户鼠标左键点击时候,并且没有meta键被按下。...sibling元素可以为null,这会使元素被放置到容器最后一个位置。注意:如果options.copy设置为true,el元素会被设置为一个副本,替代原始拖放元素。...7. options.direction:当元素被拖放到一个容器中,它将被放置到最接近鼠标位置点上。...事件 8. drake.end( ):使用最后位置预览阴影标记最为拖放目的地拖放元素。相应cancel或drop事件将被触发。

2.3K10

vue 中基于html5 drag drap拖放

通过绑定元素mousedown 事件,监听鼠标的mousemove,mouseup 事件,于是我轻松实现了同一区域内元素可以拖着跑,上代码!...,无法读取鼠标的坐标,pageXpageY都变为0 if (x === 0 && y === 0) { return // 不处理拖动最后一刻XY都为0情形...y -= this.offsetY // console.log('e left') // console.log(x + '-' + y) /* 它父级第一个存在定位元素...当右侧拖动区域 第一次触发了drop 操作后,新生成一个对象,这个对象既有拖动(draggable=’true’)属性,也绑定dragstart(开始事件),拖动事件(drag),这样新元素会在右侧随意拖动...每次拖动元素都会触发drop 事件,并不是每次都要生成一个新元素,要知道是从左边列表拖到右侧第一次drop 时候生成新元素。怎么知道呢?

1.4K00
领券