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

JS绘制一个从一个div指向另一个div的箭头

要实现从一个div指向另一个div的箭头,可以使用JavaScript和CSS来完成。以下是一种实现方式:

  1. 首先,在HTML中创建两个div元素,分别为sourceDiv和targetDiv,用于表示箭头的起点和终点。
代码语言:txt
复制
<div id="sourceDiv"></div>
<div id="targetDiv"></div>
  1. 在CSS中定义箭头的样式,可以使用伪元素::before或::after来创建箭头形状,并设置其样式属性。
代码语言:txt
复制
.arrow {
  position: relative;
  width: 0;
  height: 0;
}

.arrow::before {
  content: "";
  position: absolute;
  border-style: solid;
  border-width: 10px;
  border-color: transparent transparent transparent #000;
  transform: rotate(45deg);
}
  1. 在JavaScript中获取sourceDiv和targetDiv的位置信息,并计算箭头的起点和终点坐标。
代码语言:txt
复制
var sourceDiv = document.getElementById("sourceDiv");
var targetDiv = document.getElementById("targetDiv");

var sourceRect = sourceDiv.getBoundingClientRect();
var targetRect = targetDiv.getBoundingClientRect();

var sourceX = sourceRect.left + sourceRect.width / 2;
var sourceY = sourceRect.top + sourceRect.height / 2;

var targetX = targetRect.left + targetRect.width / 2;
var targetY = targetRect.top + targetRect.height / 2;
  1. 创建一个箭头元素,并设置其位置和样式。
代码语言:txt
复制
var arrow = document.createElement("div");
arrow.className = "arrow";
arrow.style.left = sourceX + "px";
arrow.style.top = sourceY + "px";
arrow.style.width = Math.sqrt(Math.pow(targetX - sourceX, 2) + Math.pow(targetY - sourceY, 2)) + "px";
document.body.appendChild(arrow);

通过以上步骤,就可以实现从一个div指向另一个div的箭头效果。可以根据实际需求调整箭头的样式和位置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • vue封装一个简单div框选时间组件

    前言 技术需要积累,有时间我把我之前写还不错组件都开源出来。并尝试vue和react 两种方式组件封装。今天简单写下鼠标框选div选中效果封装吧。...div框选实现 div框选效果,其实没有什么好方法,就是获取鼠标事件,根据鼠标的位置,动态创建一个跟随鼠标的div。...其实总结起来就两步: 鼠标左键按下不放,移动鼠标出现矩形选框; 鼠标左键松开,根据上边出现矩形选框统计选框范围内DOM元素; 创建一个跟随鼠标的div,代码如下: // 创建选框节点...= `left:${this.startX}px;top:${this.startY}px` 鼠标移动,获取被选中div列表,增加一个临时class this.selectBoxDashed.style.display...timedivselect' 使用例子: https://github.com/confidence68/timeDivselect/blob/master/src/App.vue 顺便说说npm发布遇到一个小问题吧

    1.6K50

    使用 TortoiseSVN 将某个 SVN 目录下目录指向另一个仓库

    使用 TortoiseSVN 将某个 SVN 目录下目录指向另一个仓库 —— 独立观察员 2015.04.09 哈哈,不知道大家有没有这种需求,是不是看到标题感到有点蛋疼呢?...无论如何,我今天想要实现这个操作,发现还不是那么容易呢。可能使用原生 SVN 或者使用命令行可以比较容易达到这个效果吧(不知道,也可能不行),不过虽然我是程序员,但坦白说我并不喜欢命令行。...先来看看 TortoiseSVN 机制: 也就是一个 SVN 主目录(指定了一个仓库了)下有 ".svn" 目录,用于存储一些信息。...在主目录内空白处右键,可看到 TortoiseSVN 菜单,在 "导出" 下面有 "重新定位" 选项,这就是用于重新指定数据仓库指令,当然,这是用于切换整个 SVN 目录仓库。...不认为这是 SVN 目录了。

    1.4K20

    CSS一个div内两个子元素高度自适应

    ---- 设想这样一个情况:一个父元素有两个子元素,父元素高度不确定,用子元素撑起来。 但是这会导致一个问题:各个子元素高度不一致,为子元素添加height:100%是无效。...这种方式需要父元素高度确定,然而父元素高度由子元素确定。 猜想渲染时由于父元素高度不确定,会计算出各个子元素高度再确定父元素高度,但计算子元素高度时并没有父元素高度可以参考,因此上述方法行不通。...你可以 为父元素设置固定高度 配合height:100%,两个子元素都能撑满父元素 利用span元素与布局 如果span定位是absolute类型,那么它高度可以等于父元素高度。...父元素只根据相对定位子元素决定高度,也就是说,absolute定位span设置height:100%是有效,父元素高度对它来说是已知。...这种方法下,父元素高度仍然由最高相对定位子元素确定,其它元素放到span中,所以需要知道最高子元素。 使用同色背景 虽然很简单,却很实用方法。子元素高度虽然不都是100%,但效果一样。

    5.1K30

    Win系统下文件夹映射实现(将文件夹从一个盘映射到另一个盘)

    Target:指定新链接引用路径(相对或绝对) 如将G盘123文件夹映射到L盘并重命名为test mklink 硬链接/H和符号链接/D区别 硬链接只能用于文件,不能用于文件夹,而且硬链接和目标文件必须在同一个分区或者卷中...但是硬链接具有以下一些不同地方。 (1)硬链接必须引用同一个分区或者卷中文件,而符号链接可以指向不同分区或者共享文件夹上文件或者文件夹。...(5)如果win7把符号链接目标文件删除,然后用一个同名文件替换,则符号链接会指向目标文件;而把硬链接目标文件删除’再用同名文件替换,则硬链接还是会继续引用原始文件。...(6)也就是说,硬链接和目标文件地位相等。事实上,原始目标文件本身也相当于硬链接,新建硬链接,只是相当于增加一个目录路後而已。...(7)硬链接看上去和真的文件一模一样(实际上就是真实文件),不像符号链接那样有一个快捷方式箭头,但是硬链接并不会增加磁盘空间占用。

    89510

    每天10前端小知识 【Day 11】

    如何使用js计算一个html页面有多少种标签? 这道题看似简单,但是是一个很有价值一道题目。...test js 文件下载不会阻塞前面 HTML 和 CSS 解析: test test2 第二,文件下载是不会被阻塞,不管是 css 还是 js 文件,浏览器主线程会在页面解析前开启下载,所以就算在外部脚本执行前删除脚本...所以,箭头函数中this指向在它被定义时候就已经确定了,之后永远不会改变。 3、箭头函数继承而来this指向永远不变(重要!!深入理解!!)...简单来说,分为四步: ① JS内部首先会先生成一个对象; ② 再把函数中this指向该对象; ③ 然后执行构造函数中语句; ④ 最终返回该对象实例。 但是!!

    12810

    使用Raphael绘制流程图,自绘动态箭头,可拖动,有双击事件,纯前端,兼容各种浏览器

    关于Raphaël Raphaël是一个在网页上绘图js类库,非常小压缩版只有89k左右 官方宣称兼容各种主流浏览器,据笔者测试在IE6下尚有一些问题(不过这些与本文无关) 他是使用js来创建vml或...svg来绘图 缘起 项目中不能使用Silverlight或者flash来解决绘图和拖动问题 而且为了项目效果较好,要求拖动时候箭头能动态改变起点和重点,别且箭头要改变方向 所以只能考虑JS了 效果..."> 这两东西是不相干...并且重绘了节点和箭头 drawArr是一个自定义方法,负责修改箭头方向,代码如下 //随着节点位置改变动态改变箭头 Raphael.fn.drawArr = function..., point包含两点, point.start为起点, point.end为终点, 然后需要确定箭头绘图路径 一个箭头包含三线段,四点 1:起点,2:终点,3:箭头终点1,4:箭头终点2 在此函数中

    1K30

    GPT-Migrate——一款可将代码库从一个框架或语言迁移到另一个框架或语言AI应用

    今天介绍是一款位于github热榜榜首,可轻松将您代码库从一个框架或语言迁移到另一个框架或语言AI应用:GPT-Migrate。...GPT-Migrate 轻松将您代码库从一个框架或语言迁移到另一个框架或语言。 ⚡️ 使用方法 1.安装 Docker 并确保它正在运行。建议使用至少 GPT-4,最好是 GPT-4-32k。.../my-python-app 中 Python 代码,将其迁移到 Node.js,并将生成代码写入 ./my-nodejs-app。...在这个存储库中,prompt_constructor() 函数接受一个或多个子提示,并生成一个字符串,该字符串可以用变量格式化。...✅ 基准测试 我们正在积极努力构建一个健壮基准测试库。如果您有一个代码库想要贡献,请提交一个 PR!目前基准测试是从头开始构建:REST API 应用程序,具有一些端点和依赖文件。

    64030

    使用物理引擎Box2D设计类愤怒小鸟击球游戏--基本架构设置

    游戏基本玩法是,用鼠标点击小球,移动鼠标选择小球发射方向,松开鼠标按钮后,小球按照鼠标指向方向发射出去,一旦小球与障碍物碰撞后,它会像现实世界那样反复弹跳,如果一系列碰撞后,小球能停留在木架上,游戏就算过关...它类似于投篮,选定箭头方向,让小球发射后落入到绿色方块中。...,其中一个用来调试,另一个用来显示游戏画面,一旦所有设计调试通过后,我们就可以把调试画布组件给去除,留下第二画布组件。...,一个画布用来调试绘制物体原型,原型这个概念后面会深入探究,例如愤怒小鸟它在物理引擎世界里,对应其实是一个正方形,而那些被攻击猪,其原型就是圆形。...页面启动后,在画布里会出现两正方形,其中一个正方形会像现实世界一样做自由落体运动,它下落有一个加速度,在物理引擎驱使下,正方形下落与现实世界中物体下落是一样

    1.5K50

    我发现了华点:vue规定用普通函数定义方法,为什么react又要我用箭头函数!

    如果使用过react和vue,应该发现过一个问题:vue告诉我们不应该把方法、生命周期用箭头函数去定义;而在react类组件中,把方法写成箭头函数形式却更方便。...但有趣是,为了达到同样目的,一个是不能使用箭头函数,一个是使用箭头函数便能解决 react vue React中this丢失 首先来看看react,这是一个很普通类组件写法: class Demo...,另一个用普通函数。...其实这是一个无关reactjs特性,剥离react带来心智负担,本质上,上面的代码不过是一个「类」,简化一下,就变成了这样: class ReactDemo { // ✅推荐 arrowFunMethod...结语 「为什么react中用箭头函数,vue中用普通函数」这是一个挺很有意思问题,简单来说,这种差异是由于我们写react是一个类,而vue是一个对象导致

    78910

    【React】组件&事件

    React(二) 创建组件 函数组件 函数组件:使用JS函数或者箭头函数创建组件 使用 JS 函数(或箭头函数)创建组件,叫做函数组件 约定1:函数名称必须以大写字母开头,React 据此区分组件和普通...创建 函数式组件 // 普通函数或者箭头函数创建组件,首字母大写 // 组件必须要有返回值 function Music() { return ( haha<...hello.js,类组件home.js, hello.js const Hello = () => 我是hello组件 export default Hello home.js import...状态state即数据,是组件内部私有数据,只有在组件内部可以使用 state值是一个对象,表示一个组件中可以有多个数据 通过 this.state.xxx 来获取状态 // 1....> {/* this指向是App组件 */} {/* 这并不是函数调用,仅仅是做了一个赋值 onClick = this.handleClick */}

    91850

    vue1

    目录 vue vue框架优势 页面引入 总结 vue实例内部参数 声明实例是否用一个变量接收 插值表达式 文本指令 方法指令 JS中var、let、const、不写区别 function、箭头函数...选择器语法,但是只能匹配第一次检索到结果 }); 总结 通常挂载点都选用id选择器(唯一性) html与body标签不能作为挂载点,可以选择一个div最为挂载点。...,里面可以是function、箭头函数 声明实例是否用一个变量接收 在实例内部不需要,用this就代表当前vue实例本身 在实例外部或其他实例内部需要,定义一个变量接收new Vue()产生实例 插值表达式...; function、箭头函数区别 作用域: 箭头函数指向其定义环境,箭头函数内部this指向无法通过其他方式改变,指向是外部this,在箭头函数中调用 this 时,仅仅是简单沿着作用域链向上寻找...,找到最近一个 this 拿来使用。

    56730
    领券