当前位置:  开发笔记 > 编程语言 > 正文

JS画线,虽然很原始,但是兼容所有浏览器

用Javascript画线的方法很多,有SVG,VML、canvas等,但是在现阶段,貌似这些方法都不能兼容所有浏览器。所以我还是用最原始的办法法写了一个画线方法。思路也很简单,就是用一个像素的DIV拼成一条线。Js代码 functionline(startX Synta
用Javascript画线的方法很多,有SVG,VML、canvas等,但是在现阶段,貌似这些方法都不能兼容所有浏览器。所以我还是用最原始的办法法写了一个画线方法。思路也很简单,就是用一个像素的DIV拼成一条线。
Js代码 
function line(startX, startY, endX, endY, container) { 
    if (startX == endX) { 
        if (startY > endY) { 
            var tempY = startY; 
            startY = endY; 
            endY = tempY; 
        } 
        for (var k = startY; k < endY; k++) { 
            createPoint(container, startX, k); 
        } 
    } 
    // y = ax + b 
    var a = (startY - endY) / (startX - endX); 
    var b = startY - ((startY - endY) / (startX - endX)) * startX; 
    if (Math.abs(startX - endX) > Math.abs(startY - endY)) { 
        if (startX > endX) { 
            var tempX = endX; 
            endX = startX; 
            startX = tempX; 
        } 
        var left = container.style.left; 
        var top = container.style.top; 
        for (var i = startX; i <= endX; i++) { 
            createPoint(container, i, a * i + b); 
        } 
    } else { 
        if (startY > endY) { 
            var tempY = startY; 
            startY = endY; 
            endY = tempY; 
        } 
        for (var j = startY; j <= endY; j++) { 
            createPoint(container, (j - b) / a, j); 
        } 
    } 
     

 
function createPoint(container, x, y) { 
    var node = document.createElement(div); 
    node.className = line; 
    node.style.marginTop = y; 
    node.style.marginLeft = x; 
    container.appendChild(node); 

 
当然还需要一段CSS来控制样式:
Css代码 
div.line { 
    position:absolute; 
    z-index:2; 
    width:1px; 
    height:1px; 
    font-size:1px; 
    background-color:#0000FF; 
    overflow:hidden; 

 
来一段HTML测试一下
Html代码 
<html
 
 
 
 
 
   
 
     
 
 
推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有