JS畫線,雖然很原始,但是相容所有瀏覽器

來源:互聯網
上載者:User

用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> 
<head> 
<script type="text/javascript" src="../js/jsline.js"></script> 
<script type="text/javascript"> 
function testLine() { 
    line(1, 2, 88, 88, document.getElementById(container)); 

</script> 
</head> 
<body> 
    <div id="container" style="width:400px;height:400px;border:1px solid #000000;margin-left:50px"></div> 
    <input type="button" value="line" onclick="testLine();"></input> 
</body> 
</html> 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.