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

前端实现伸缩框

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

28910

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。...相关的知识点会在接下来的文章介绍。 最后,我们得到的效果如下 【完】✅

    90910

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

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

    3.6K10

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

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

    2.2K40

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

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

    2K10

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

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

    71420

    构建流式应用:RxJS 详解

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

    7.4K31

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

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

    6.4K21

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

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

    1.5K10

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

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

    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 等多个事件进行观察,并相应地改变小方块的位置。

    87910

    移动端app开发问题及理解

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

    3.8K10

    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.2K80

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

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

    2.5K31

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

    指向在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、Safari和IE9都是通过非标准事件的pageX和pageY属性来获取web页面的鼠标位置的。

    98040

    Axure教程:用中继器做图片轮播

    这里要解释一下,面板1是用来做向左向右鼠标拖动的交互。面板2是因为中继器不能被选中做移动的交互,所以要将其转成动态面板。...面板2的交互向左拖动结束时,触发右按钮事件鼠标单击时事件。向用拖动结束时,触发做按钮鼠标单击时事件。4....左右按钮的交互鼠标单击右按钮时,我们要做一个移动的动态效果,首先简单的讲解一下思路,点击时,先移动面板1一个图片的距离,然后更新行,将原来第1张的图片变成最后一张,最后一张变成倒数第二张……以此类推,最后将面板...制作自动轮播我们用循环动态面板制作自动轮播的效果,首先将面板添加一个state2载入时设置面板状态为next(向后循环,间隔3000ms)状态改变时,触发右按钮鼠标单击时事件6....整个组合的事件最后,我们把所有元件组合,做一个鼠标移入组合时不自动轮播的效果鼠标移入时,显示左右按钮,设置循环动态面板的状态为停止循环鼠标移出时,隐藏左右按钮,设置循环动态面板的状态为next(向后循环

    10820

    vue 中基于html5 drag drap的拖放

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

    1.4K00
    领券