首页
学习
活动
专区
工具
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的箭头效果。可以根据实际需求调整箭头的样式和位置。

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

相关·内容

day 81 Vue学习一之vue初识

vue称为渐进式js框架,这个框架用来做前后端分离的项目,之前我们学习django,知道django是一个MTV模式的web框架,urls--views--templates,模板渲染通过后端的代码来实现数据的渲染,再加上前端一些简单的dom操作来完成网页的开发,当我们做一个复杂的大型的网页的时候,你会发现这种模式作起来会比较复杂,扩展起来也比较困难,因为前后端没有分离开,耦合性太高,牵一发而动全身,所以人们就开始想,如果能有专门的人来开发前端,专门的人来开发后端,前端页面就是前端语言来写,后端服务端代码就是后端服务端代码来写,两者之前只有数据的交流,那么以后页面在进行拓展,进行功能的更新的时候就会变得比较简单,因此vue就诞生了,之前我们前端页面拿到数据都是通过dom操作或者django的模板语言来进行数据的渲染的,有了前端框架vue,就不需要他们了,并且频繁的dom操作,创建标签添加标签对页面的性能是有影响的,那么直接数据驱动视图,将django的MTV中的T交给vue来写,也就是那个templates里面的内容,并且前端的vue拿到了T这部分的工作,MTV前身是MVC,可以将vue拿到的T的工作称为view视图,就是完成MVC的V视图层工作,只不过V称为视图函数,重点在函数,而vue我们称为视图,接到后端的数据(通过接口url,获得json数据),直接通过vue的视图渲染在前端。

02
领券