已知10个点出现在页面上,用html/css/javas写一段完整的代码 ,实现出现一个浮动箭头,再出现一个浮动箭头,再出现一个浮动箭头,再出现一个浮动箭头,以此类推
时间: 2024-04-18 17:23:53 浏览: 99
html代码展示--浮动
4星 · 用户满意度95%
下面是一个使用 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 id="container"></div>
<script>
window.addEventListener('DOMContentLoaded', (event) => {
const container = document.getElementById('container');
const points = [
{ x: 50, y: 50 },
{ x: 150, y: 50 },
{ x: 150, y: 150 },
{ x: 50, y: 150 },
{ x: 100, y: 100 },
{ x: 50, y: 50 },
{ x: 150, y: 50 },
{ x: 150, y: 150 },
{ x: 50, y: 150 },
{ x: 100, y: 100 }
];
let index = 0;
function createArrow(startX, startY, endX, endY) {
const arrow = document.createElement('div');
arrow.classList.add('arrow');
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`;
container.appendChild(arrow);
}
function animate() {
const startPoint = points[index];
const endPoint = points[index + 1];
if (endPoint) {
setTimeout(() => {
createArrow(startPoint.x, startPoint.y, endPoint.x, endPoint.y);
index++;
animate();
}, 1000);
} else {
index = 0;
setTimeout(animate, 1000);
}
}
animate();
});
</script>
</body>
</html>
```
这段代码会按照预定义的点的顺序,循环地出现多个浮动箭头。通过 JavaScript 的 `setTimeout` 函数和递归调用 `animate` 函数来控制箭头的出现时间和循环效果。你可以将这段代码复制到一个 HTML 文件中,然后在浏览器中打开该文件查看效果。每个箭头的起点和终点坐标由 `points` 数组中的对象指定,你可以根据需要修改这些坐标来创建不同的箭头路径。
阅读全文