用html/css/javas写一段完整的代码 绘制两点之间的浮动箭头
时间: 2024-04-17 12:22:49 浏览: 182
Javas/HTML建立一个简单的计算器界面.html
好的!下面是一个使用 HTML、CSS 和 JavaScript 绘制两点之间浮动箭头的完整代码示例:
```html
<!DOCTYPE html>
<html>
<head>
<style>
.arrow {
position: absolute;
width: 200px;
height: 2px;
background-color: black;
transform-origin: left center;
}
.arrow::before,
.arrow::after {
content: "";
position: absolute;
width: 0;
height: 0;
}
.arrow::before {
border-style: solid;
border-width: 8px 8px 0 0;
border-color: transparent #000 transparent transparent;
top: -8px;
left: -8px;
}
.arrow::after {
border-style: solid;
border-width: 8px 8px 0 0;
border-color: transparent #fff transparent transparent;
top: -6px;
left: -6px;
}
</style>
</head>
<body>
<div class="arrow"></div>
<script>
window.addEventListener('DOMContentLoaded', (event) => {
const arrow = document.querySelector('.arrow');
const startElement = document.getElementById('start');
const endElement = document.getElementById('end');
function updateArrowPosition() {
const startRect = startElement.getBoundingClientRect();
const endRect = endElement.getBoundingClientRect();
const startX = startRect.left + startRect.width / 2;
const startY = startRect.top + startRect.height / 2;
const endX = endRect.left + endRect.width / 2;
const endY = endRect.top + endRect.height / 2;
const angle = Math.atan2(endY - startY, endX - startX);
const distance = Math.sqrt((endX - startX) ** 2 + (endY - startY) ** 2);
arrow.style.transform = `translate(${startX}px, ${startY}px) rotate(${angle}rad)`;
arrow.style.width = `${distance}px`;
}
updateArrowPosition();
window.addEventListener('resize', updateArrowPosition);
});
</script>
</body>
</html>
```
这段代码会在页面中绘制一个浮动箭头,并根据指定的起始点和结束点动态调整箭头的位置和角度。你需要在 HTML 中添加两个元素作为起始点和结束点,并为它们分别设置一个唯一的 `id` 属性。然后,通过 JavaScript 获取这两个元素,并在 `updateArrowPosition` 函数中计算箭头的位置和角度,最后将结果应用到箭头元素上。你可以将这段代码复制到一个 HTML 文件中,然后在浏览器中打开该文件查看效果。
阅读全文