gpt4 book ai didi

javascript - 没有 Canvas 的 HTML 线条图(仅 JS)

转载 作者:技术小花猫 更新时间:2023-10-29 12:31:52 24 4
gpt4 key购买 nike

我正在尝试使用 HTML 并在页面上画一条线。

从我读过的所有内容来看,HTML5 canvas 标签是最好用的,但我需要这条线连接到页面上不在 canvas 标签中的东西,所以 canvas 对我不好(想要/需要使用原生 JS)。

我已经(从我发现的东西)写了一个函数来完成我需要的,但问题是一旦出现一行,页面的其他所有内容都会消失。

我发现每次我在 JavaScript 中更改样式时,除了形状之外的所有内容都会消失。

删除“document.write”并没有消失。

function draw(ax, ay, bx, by) {
var n, widthLine, i, x, y;
widthLine = 1;
if (Math.abs(ax - bx) > Math.abs(ay - by)) {
if (ax > bx) {
n = ax;
ax = bx;
bx = n;

n = ay;
ay = by;
by = n;
}
n = (by - ay) / (bx - ax);

for (i = ax; i <= bx; i++) {
x = i;
y = Math.round(ay + m * (x - ax));
document.write("<div style='height:" + lineWidth + "px;width:" + widthLine + "px;background-color:black;position:absolute;top:" + y + "px;left:" + x + "px;'></div>");
}
} else {
if (ay > by) {
n = ax;
ax = bx;
bx = n;

n = ay;
ay = by;
by = n;
}
n = (bx - ax) / (by - ay);

for (i = ay; i <= by; i++) {
y = i;
x = Math.round(ax + n * (y - ay));
document.write("<div style='height:" + lineWidth + "px;width:" + lineWidth + "px;background-color:black;position:absolute;top:" + y + "px;left:" + x + "px;'></div>");
}
}
}

最佳答案

快速修复。

下面的函数获取线的坐标然后绘制它。

它通过使用细长的 div 元素来工作。计算旋转 Angular 和长度。

应该适用于所有浏览器(希望甚至是 IE)。

function linedraw(ax,ay,bx,by)
{
if(ay>by)
{
bx=ax+bx;
ax=bx-ax;
bx=bx-ax;
by=ay+by;
ay=by-ay;
by=by-ay;
}
var calc=Math.atan((ay-by)/(bx-ax));
calc=calc*180/Math.PI;
var length=Math.sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by));
document.body.innerHTML += "<div id='line' style='height:" + length + "px;width:1px;background-color:black;position:absolute;top:" + (ay) + "px;left:" + (ax) + "px;transform:rotate(" + calc + "deg);-ms-transform:rotate(" + calc + "deg);transform-origin:0% 0%;-moz-transform:rotate(" + calc + "deg);-moz-transform-origin:0% 0%;-webkit-transform:rotate(" + calc + "deg);-webkit-transform-origin:0% 0%;-o-transform:rotate(" + calc + "deg);-o-transform-origin:0% 0%;'></div>"
}

关于javascript - 没有 Canvas 的 HTML 线条图(仅 JS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14560302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com