使用一条带箭头的虚线连接两个div,并且div拖拽时保持虚线连接

 

 


 

1.如何使用带箭头的虚线将div连接


        a.了解path命令


        我们可以使用svg的path配合marker属性来实现,首先我们需要了解path元素的命令

        M(x,y) 起始位置的坐标

        L(x,y) 结束位置的坐标

 <!-- 从 坐标(150,0) ~ (300,300) -->
 <!-- <path d="M 150,0 L 300,300"  style="stroke: red ;stroke-width:2px"   /> -->

这样我们就会得到一条这样的直线

        那么如何绘制一条虚线,只需要添加"stroke-dasharray: 0.5%"属性就可以了

<!-- 从 坐标(150,0) ~ (300,300) -->
<path d="M 150,0 L 300,300" style="stroke: red; stroke-width: 2px ;stroke-dasharray: 0.5%;"  />

        H(x) 绘制一条给定x坐标的横线

 <!-- 从 坐标(150,300) ~ (600,0) 的横线 -->
 <path d="M 150,300 H 600" style="stroke: aqua" />

         V(y) 绘制一条给定y坐标的垂线

      <!-- 从 坐标(150,300) ~ (0,600) 的垂线 -->
      <path d="M 150,300 V 600" style="stroke: red; stroke-width: 2px" />

        C(x1,y1 x2,y2 x,y) 绘制一条 x1,y1 x2,y2 为控制点 终点为x,y的三次贝塞尔曲线

   <!-- 从(50,200)出发,以(0,50)(150,50)为控制点,以(300,200)为终点的三次贝塞尔曲线 /> -->
   <path d="M 50,200 C 0,50 150,50 300,200" style="stroke-width: 2px" fill="#fff" />


        b.marker属性实现箭头


        markerWidth: marker标记的宽度

        markerHeight: marker标记的高度

        markerUnits: 默认为strokeWidth 将marker的标记的大小设置为允许缩放

        refX refY: 是图形和marker标记连接位置的坐标

        orient: 他决定marker在与其他元素连接时 是否会旋转

        我们图形应用marker有以下几种方法

                marker-start=”url(#marker-id)”

                marker-mid=”url(#marker-id)”

                marker-end=”url(#marker-id)”

                marker=”url(#marker-id)”

        <defs>
          <marker
            markerWidth="10"
            markerHeight="10"
            markerUnits="strokeWidth"
            id="wjl"
            refX="0"
            refY="2"
            orient="auto"
          >
            <path d="M 0 0 L 5 2 L 0 4 z" />
          </marker>
        </defs>
        <path
          d="M 0,0 C 150,0 150,100 200,100"
          class="line3"
          style="marker-end: url(#wjl)"
          fill="none"
        />

        // .line3 {
        //   stroke-width: 2px;
        //   stroke: black;
        // }

这样我们就可以绘制一条有箭头的虚线了


2. 了解clientX/Y、 screenX/Y 、offsetX/Y

想要完成这个功能,我们必须了解的就是clientX/Y、 screenX/Y 、offsetX/Y

clientX/Y事件被触发时鼠标相对于浏览器区域的水平/垂直坐标
screenX/Y事件被触发时鼠标相对于屏幕的水平/垂直坐标
offsetX/Y事件被触发时鼠标相对于事件源的水平/垂直坐标


3.接下来我们要实现div的拖动


        1、为需要拖动的元素添加鼠标按下事件

        

        2、通过计算坐标实现鼠标拖动div 同理 为第二个div添加此方法

        

         3.接下来通过设置path的M(x,y)和L(x,y)来实现鼠标拖动 连接线始终连接的效果

 updated() {
   this.d = `M ${this.fX + 25?this.fX + 25:50},${this.fY?this.fY:0} L ${this.sX != ''?this.sX + 25:250},${this.sY?this.sY:55}`;
  },

        这时候我们在鼠标拖动方法中获得的fX和fY就起到了作用

        由于我的div大小为50px,所以为x坐标加25是为了使连接点的起始位置和终点位置都在两个div的中心,我们通过三元运算符来判断以确定在我们没有拖动时连接线的位置,到这一步我们就已经完成了拖动但是连接线保持连接

        4.通过进一步判断实现连接线根据两个div位置切换的效果

  updated() {
    this.d = `M ${this.fX + 25?this.fX + 25:50},${this.fY?(this.fY>this.sY+25?this.fY:this.fY+50):0}  L ${this.sX != ''?this.sX + 25:250},${this.sY?(this.sY>this.fY+25?this.sY:this.sY+50):55}`
  },
Destinynever
关注 关注
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
DIV+CSS通过border样式制作箭头提示框效果
09-25
在很多的网站上都能见到箭头提示框效果,其实并不难,通过CSS中一个border样式就能做来,下面为大家介绍下此效果的具体实现
css 定位连线_使用纯CSS从一个点到另一个点绘制线(路径)
weixin_42382558的博客
01-13 1424
I have a image animating in this path below and would like the path to be visible.CSSdiv {width:10px;height:10px;background:red;position:relative;-webkit-animation-name:Player1;-webkit-animation-durat...
js+css实现两个dom元素之间的连线
u598975767的专栏
02-20 1万+
刷论坛,看到有小伙伴提问不依赖图形化工具,怎么实现两个div之间的连线, 看着追问的人不少,顺题发挥了下, 下面代码实现两个dom元素中心坐标的连线,首先引入jquery(任意版本),主要是为了方便dom操作,当然改成原生js也可以 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width
vue css实现两个元素之间连线箭头,v-for循环每两个直接添加连线箭头
qq_35968173的博客
01-12 4037
通过css伪元素实现连线箭头
连接两个div的直线,拖动保持连线
weixin_34224941的博客
11-09 5245
效果:连接两个div箭头虚线,拖动div保持线条实改变位置保持始终连接 效果图: 1.产品经理提的需求 用箭头虚线两个位置不固定的div连接起来,初听到这个需求一头雾水,传统的div可以做直线,但斜起来不太好做,幸亏之前接触过svg,里面有一个line标签,知道起始中止两个点的位置,就可以将两个连接起来了。 至于箭头,...
纯css箭头div
05-25
<head> <title>纯CSS无图片箭头DIV方框</title> <style> div.container{position:absolute; top:30px; left:40px; font-size: 9pt; display:block; height:100px; width:200px; background-color:transparent; *border:1px solid #666; } s{ position:absolute; top:-20px; *top:-22px; left:20px; display:block; height:0; width:0; font-size: 0; line-height: 0; border-color:transparent transparent #666 transparent; border-style:dashed dashed solid dashed; border-width:10px; } i{position:absolute; top:-9px; *top:-9px; left:-10px; display:block; height:0; width:0; font-size: 0; line-height: 0; border-color:transparent transparent #fff transparent; border-style:dashed dashed solid dashed; border-width:10px; } .content{ border:1px solid #666; -moz-border-radius:3px; -webkit-border-radius:3px; position:absolute; background-color:#fff; width:100%; height:100%; padding:5px; *top:-2px; *border-top:1px solid #666; *border-top:1px solid #666; *border-left:none; *border-right:none; *height:102px; box-shadow: 3px 3px 4px #999; -moz-box-shadow: 3px 3px 4px #999; -webkit-box-shadow: 3px 3px 4px #999; /* For IE 5.5 - 7 */ filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color="#999999'); /* For IE 8 */ -ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#999999')"; } </style> </head> <body> 这是框中的文字,可动态显示。高度自动增加,应该不错吧^_^ </body> </html>
css--如何实现一个箭头
前端小菜鸟的成长记录
12-26 1507
如何用css实现三角
html一条线并箭头,手把手教你用CSS实现箭头的流程进度条
weixin_31925745的博客
06-03 3160
本文介绍的是利用纯CSS的箭头流程进度条,兼容到IE8,需要的朋友们下面来一起学习学习。首先写一个基本的样式。.cssNav li{padding: 0px 20px;line-height: 40px;background: #50abe4;display: inline-block;color: #fff;position: relative;}接下来使用 :after 伪类画一个三角形...
css 箭头的进度条
微风的博客
05-26 629
css 箭头的进度条
html箭头的直线代码,纯CSS实现的箭头线条
weixin_35807050的博客
06-04 2638
CSS语言:CSSSCSS确定.link {position: relative;display: block;padding: 1em 3em 1em 1em;font-size: 30px;font-weight: bold;text-decoration: none;color: #e74c3c;box-shadow: inset 0 0 0 0.2em #e74c3c;}.link:aft...
纯Javascript编写的div拖拽以及用鼠标绘制div之间连接线(包含箭头
01-09
纯Javascript编写的div拖拽以及用鼠标绘制div之间连接线,外部资源仅需要jquery。有以下功能: 1、创建节点 2、节点随鼠标任意拖动 3、切换拖动和画线模式 4、用鼠标绘制两个节点之间箭头连线 5、连接线随节点移动保持连接状态 6、附节点鼠标右键弹自定义菜单代码
通过浮动+定位实现两个div在同一行
09-25
主要介绍了通过浮动+定位实现两个div在同一行,感兴趣的朋友可以参考下
连接两点:用箭头的线连接两点-matlab开发
05-31
用户可以通过编辑该脚本轻松实现绘制连续箭头等功能。附件是基于该脚本的扩展脚本绘制的图形。
div+css布局制作横向箭头步骤流程样式
11-08
div+css布局制作横向箭头步骤流程样式 div+css布局制作横向箭头步骤流程样式 div+css布局制作横向箭头步骤流程样式
css 提示框 CSS实现箭头DIV提示框
09-25
毕业设计要做一个提示框:当鼠标放在某个链接上,下边显示有提示功能的窗体,接下来详细介绍,感兴趣的朋友可以参考下
html两个元素使用线段连接,使用CSS和JavaScript在两个元素之间创建一条线
weixin_35813209的博客
06-28 2057
好的,正如评论中所提到的,当点在同一条线上相对容易.如果你有一个在另一个之上变得更复杂 – 那么你基本上需要:角度,将它应用于CSS变换:旋转属性,以及两个点/元素之间的长度,以重新计算宽度,因为它不再是直线.我讨厌数学:),所以我使用来自互联网的好人的知识:http://jsfiddle.net/codepo8/bAwUf/light/(信用到codepo8)两条最重要的路线:var angl...
CSS学习笔记
热门推荐
阿宝的博客
02-18 2万+
现象:2个上下并列结构的候,如果给上面的盒子添加了margin-bottom,同给下面的盒子添加了margin-top,此应该解析的垂直间距是2者之和,但是浏览器解析的候,会按照最大数值去解析。-webkit- -webkit-box-shadow 所有基于Webkit引擎的浏览器(如Chrome、Safari)专属的CSS需添加-webkit-前缀。-moz- -moz-box-shadow 所有基于Gecko引擎的浏览器(如Firefox)专属的CSS属性需添加-moz-前缀。
CSS小记(持续更新)
二熊不是熊二的博客
09-19 632
CSS小记(持续更新) 1、text-decoration属性 值 描述 none 默认。定义标准的文本。无划线 underline 下划线 overline 上划线 line-through 中划线 blink 定义闪烁的文本。(只有FireFox支持) inherit 规定应该从父元素继承 text-decoration 属性的值。 2、CSS代码书写顺...
css 箭头_web前端入门到实战:css简单实现箭头的边框
weixin_39776787的博客
11-29 233
实现一个普通边框<style> .border { width: 100px; height: 50px; border: 1px solid red; } </style> <div class="border"></div> 实...
使用svg+div来画两个长方形中间用箭头线连接
最新发布
06-07
可以使用以下 HTML、CSS 和 SVG 代码来画两个长方形中间用箭头线连接: ```html <div style="position: relative; width: 200px; height: 100px;"> <!-- 第一个长方形 --> <svg viewBox="0 0 100 100" style="position: absolute; left: 20px; top: 20px;"> <rect x="0" y="0" width="100" height="100" fill="#f00" /> </svg> <!-- 第二个长方形 --> <svg viewBox="0 0 100 100" style="position: absolute; left: 120px; top: 20px;"> <rect x="0" y="0" width="100" height="100" fill="#0f0" /> </svg> <!-- 箭头线 --> <svg viewBox="0 0 200 100" style="position: absolute; left: 0; top: 0;"> <line x1="80" y1="50" x2="120" y2="50" stroke="#00f" stroke-width="2" marker-end="url(#arrow)" /> <!-- 定义箭头 --> <defs> <marker id="arrow" markerWidth="10" markerHeight="10" refX="8" refY="5" orient="auto" markerUnits="strokeWidth"> <path d="M0,0 L0,10 L8,5 z" fill="#00f" /> </marker> </defs> </svg> </div> ``` 其中,`div` 元素用来创建包裹 SVG 元素的容器,`position: relative;` 属性用来指定容器的定位方式,`width` 和 `height` 属性用来指定容器的大小。每个 SVG 元素用来创建长方形或箭头线,`viewBox` 属性用来指定 SVG 的视口大小和位置,`style` 属性用来指定 SVG 元素的定位方式和位置箭头线的 SVG 元素需要放在最后面,以便覆盖前面的 SVG 元素。 需要注意的是,SVG 元素默认是 inline 元素,无法设置宽度和高度,需要用 CSS 的 `position` 属性和 `left`、`top` 属性来控制位置和大小。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • vue3中简单的使用百度地图 8620
  • 如何在vue3中生成二维码 7694
  • 如何在数组对象中为每个对象添加属性 5143
  • uni-app 实现定点签到功能 4929
  • vue3 + uni-app 封装音乐播放插件 4134

最新评论

  • vue h5使用postcss-pxtorem

    CSDN-Ada助手: Vue入门 技能树或许可以帮到你:https://edu.csdn.net/skill/vue?utm_source=AI_act_vue

  • vue h5使用postcss-pxtorem

    秋说: 项目合作,有意可私信我或添加我文章底部联系方式。

  • 实现ifream内外互相交互功能(vue2以及vue3写法)

    CSDN-Ada助手: 恭喜你写了第20篇博客!看到你分享了如何实现ifream内外互相交互功能,我觉得很有帮助。不过我还希望能看到更多关于Vue2和Vue3写法的内容,或许可以分享一些实际项目中的应用案例,让我们更好地理解和运用这些技术。希望你能继续保持创作,期待你的下一篇博客!

  • uni-app 实现定点签到功能

    Destinynever: 加上了 你不讲我都没注意表情包

  • uni-app 实现定点签到功能

    溜溜球q: rad是什么方法呀

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • vue h5使用postcss-pxtorem
  • uni-app中 pinia的使用
  • 自用VSCode插件记录
2024年3篇
2023年4篇
2022年17篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源酒的公司起名大全教师宿舍楼起名彼女×彼女×彼女娱乐圈之潜规则大亨农业商标起名大全给男宝宝起个小名乳名大全浓情一生假如你欺骗了生活鸿字起名大全男孩四个字的公司起名大全瑜字起名是什么意思起名预测打评分家乡的风俗作文600字诺字起名含义是什么敢达决战给小孩子起名卢姓女孩起名成绩高的塑胶起名产生水上飞机的作用江姓起名小起公司名字大全起名八字 周易乐器公司起名大全起名网站源码付先生的占有欲进球网羞羞的游戏李依后面起个女孩名字明典淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化