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

标签 javascript html

我正在尝试使用 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/

相关文章:

javascript - 与其他 js 文件共享 MongoDB 连接

javascript - 如何使用AngularJS中的URL下载PDF文件

jquery - Bootstrap 操作下拉列表在表格响应中不起作用

javascript - 错误错误 : Uncaught (in promise): TypeError: Cannot set property 'devices' of undefined in ionic 4 Angular

javascript - React - 无法在 .map 中使用 Try Catch block (从 try catch 中返回 jsx)

Javascript:无法在 HTML 输入中移回

html - anchor 标签底部的空白

javascript - React.js block 元素的双向绑定(bind)

javascript - 无法使用 Google map javascript api v3 在 Google map 上设置多个标记

javascript - 如何在数组中搜索并返回包含搜索值的元素的所有值或键