Angular+rxjs怎么实现拖拽功能?下面本篇文章给大家介绍一下Angular 结合 rxjs 实现拖拽的方法,希望对大家有所帮助!
在之前的文章,我们学习了 Angular 中自定义 Video 操作,没有度过的读者可先了解。
现在有这么一个需求,你会怎么实现呢?
页面中 video 标签,当滚动高度超过其位置之后,将其设置为可在可视区域自由拖拽。
一个不错的 Idea
,如果你使用 Angular
的 @angular/cdk/drag-drop
可以轻松实现,但是我们这里不使用工具。
好吧,我们来分析下实现的思路:
页面滚动高度大于视频所在的位置:那么就是视频的
bottom
值相对可视窗口的值要小于0,我们需要设定一个包裹video
标签的div
方便计算,其高度是原设定video
的高度。即元素脱离原文档布局
video
元素可以拖拽,那么其定位需要被改变为fixed
video
元素在可视区内自由拖动,那么需要对其top
,left
值进行限定
所以我们设定下面的 demo
布局:
有下面这些预定的样式:
这里还引入了 rxjs
来操作。
刚才已经分析了 video
元素脱离文档的临界调节了:
video 的外 div
,即 #anchor
元素的相对视图的 bottom < 0
。所以我们有:
先获取 anchor
元素对象,监听页面对象 document
滚动(我们这里加入了防抖函数优化),当 bottom < 0
的时候,将相关的样式 video-fixed
添加给 video
。
接下来就是实现 video
元素的拖拽。这里我们要监听 video
元素的三个事件,分别是鼠标按下 mousedown
,鼠标移动 mousemove
和鼠标抬起 mouseup
。
我们监听目标元素(filter 函数)被鼠标按下,然后鼠标可以在 document
范围内移动(这里用节流函数优化了下),直到监听到鼠标抬起。在移动的过程中,计算目标元素的相对可视窗口左侧和顶部的距离,将值赋予到 left
和 top
。
这里的计算 move.clientX - down.offsetX, window.innerWidth - this.video.nativeElement.offsetWidth
,相关的概念也许你不是很清楚,不过没关系,上面的内容,理解思路即可。相关的知识点会在接下来的文章介绍。
最后,我们得到的效果如下
相关说明:
1、VIP会员无限制任意下载,免积分。 立即前往开通>>
2、本站资源大多存储在云盘,如出现链接失效请评论反馈。
3、本站提供的源码、模板、软件工具等其他资源,均不包含技术服务,请大家谅解!资源仅供参考学习只用,请勿用于任何商业用途,请支持正版。
4、源码、模板等资源会随着技术、坏境的升级而存在部分问题,还请慎重选择。
本文网址:http://www.zzdaima.com/14/40.html
转载请声明来自: 站长代码- 浅析Angular+rxjs怎么实现拖拽功能?
一、域名历史是什么意思?域名历史,是指域名首次注册的时间、域名持有者更新、域名网站所属行业变更、域名是否被降权或K站、域名历史PR值、域名历史的外链建设情况、域名年龄等等。二、域名历史对SEO有影响因素马慧SEO简单列出几点域名历史对网站优化的影响:①域名历史是否
Apache环境和IIS环境默认在根目录加了伪静态规则了,不需要操作,只要主机支持伪静态即可。 Nginx环境,请打开nginx.txt文件,把里面的代码复制到配置中,下面我们以宝塔为例, 伪静态规则的文件在 这样就完成了
一、建站的需求及目的建站的目的时什么,需求又是什么,依据自己的需求及行业的对比,大概做出一个小的预算。通常情况下,若作为单一的企业网站,建站费用不高,若需要定制开发的话,定制开发所需要的费用肯定比一般的企业网站要高,网站定制开发流程:沟通确定需求-出设计效
第一,标题要准确简洁一篇高质量的文章内容,首先必须要有一个简洁明确的题目标题,能够让读者一下就可以抓住你要表达的文章意思。而有些SEO优化人员,为了图省事,往往采用采集文章的方式更新内容,但又考虑到雷同性太高,于是就随便更换一个文章标题了事。这样做的后果就是
选择垂直行业领域关键词大家在选择关键词的时候,记住一定不能太宽泛,因为我们是个人站长,不可能投入那么多的人力物力去经营一个有大量内容的网站,如果网站主体太广,我们是根本没有精力去管理的,那么排名自然也是无法上来的,这里如风SEO强烈建议大家一定要找准一个垂直
一、质量高的原创内容在这个越来越注重内容的时代,各位站长要想在百度、360等搜索引擎获得不菲的流量,那必须注重网站内容的原创性。独特的实质性的并且是高质量的原创内容,极大的影响着网站的收录和排名。现下正火热的熊掌号就是百度针对原创内容的一次尝试,高质量的原创
关于我们 联系我们 免责声明 共享规则 SiteMap 站长代码所有作品均为会员提供或网上搜集,版权归原作者所有,如需商业用途或转载请与原作者联系
Copyright © 2022 站长代码版权所有 辽ICP备2021012267号-1 辽公网安备 21012202000096号 所提供的内容仅供观摩学习交流之用,请勿用作商业用途!如有侵权,请及时 联系我们删除