2016-07-06 26 views
0

我想在用戶輸入行號和列號之後在圖像上添加網格線。但我對HTML JS CSS太新了。在圖像上創建一個用戶輸入大小的網格

例如:

<img src="web-image/preview.jpg"> 
<input type="number" name="row"> 
<input type="number" name="column"> 

如果用戶輸入行= 2和列= 3 會有橫跨中間的一個水平行和2行垂直地跨一個第三和兩個第三「預覽的.jpg「。網格只需要繪圖,我不需要將圖像分成幾部分或使它們可點擊。

回答

1

您可以使用jQuery .on()啓動和使用append(),看看這個簡單的代碼:

$('button').on('click', function() { 
 
    $('.grid table').html(''); 
 
    var rows = $('input[name="row"]').val(), 
 
    cols = $('input[name="column"]').val(); 
 
    for (i = 0; i < rows; i++) { 
 
    $('.grid table').append('<tr></tr>') 
 
    } 
 
    for (t = 0; t < cols; t++) { 
 
    $('.grid table tr').each(function() { 
 
     $(this).append('<td></td>') 
 
    }) 
 
    } 
 
})
.grid { 
 
    position: relative; 
 
    display: inline-block; 
 
    height:300px; 
 
} 
 
.grid table { 
 
    border-collapse: collapse; 
 
    position: absolute; 
 
    left: 0; 
 
    top: 0; 
 
    width: 100%; 
 
    height: 100%; 
 
} 
 
.grid table td { 
 
    border:1px solid red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="grid"> 
 
    <table></table> 
 
    <img src="http://lorempixel.com/300/300"> 
 
</div> 
 
<br> 
 
<input type="number" name="row"> 
 
<input type="number" name="column"> 
 
<button>Create Grid</button>

+0

謝謝你的幫助! – mctang719

+0

很高興幫助U @ mctang719 – DaniP

0

在你的JS中,你可以使用blur或者keyup來檢測用戶何時完成了該字段。我不確定你需要什麼網格線,但這只是增加了水平線。您可以用您需要的任何東西替換


$('input[name="row"]').blur(function(){ 
    if($(this).val() == 2){ 
    //add your bars 
    $('body').append('<hr><hr>'); 
    } 
}); 
+0

我所試圖做的是這樣的:https://docs.gimp.org/en/plug-in-grid.html,相反,我希望用戶鍵入在行數和列數中,然後單擊一個按鈕使網格顯示在圖像上。 – mctang719

0

我敢肯定有更好的方法來做到這一點,但是這應該是相當容易遵循。這很有趣!

// Reference used elements 
 
var wrapper = document.getElementById('wrapper'); 
 
var btn = document.getElementById('update'); 
 
var rows = document.getElementById('rows'); 
 
var cols = document.getElementById('cols'); 
 

 
btn.addEventListener("click", drawLines); 
 

 
function drawLines() { 
 
    // Clean up 
 
    removeLines(); 
 

 
    var rowCount = rows.value; 
 
    var colCount = cols.value; 
 
    var wrapperHeight = wrapper.clientHeight; 
 

 
    // Create rows 
 
    for (var i = 1; i < rowCount; i++) { 
 
    var line = document.createElement('div'); 
 
    line.className = 'line row'; 
 
    line.style.top = (wrapperHeight/rowCount) * i + 'px'; 
 

 
    wrapper.appendChild(line); 
 
    } 
 

 
    // Create columns 
 
    for (var i = 1; i < colCount; i++) { 
 
    var line = document.createElement('div'); 
 
    line.className = 'line column'; 
 
    line.style.left = (wrapperHeight/colCount) * i + 'px'; 
 

 
    wrapper.appendChild(line); 
 
    } 
 
} 
 

 
function removeLines() { 
 
    var lines = document.getElementsByClassName('line'); 
 
    while (lines.length > 0) { 
 
    lines[0].parentNode.removeChild(lines[0]); 
 
    } 
 
}
#wrapper { 
 
    width: 300px; 
 
    height: 300px; 
 
    position: relative; 
 
} 
 
.line { 
 
    background: white; 
 
    position: absolute; 
 
} 
 
.row { 
 
    height: 1px; 
 
    left: 0; 
 
    right: 0; 
 
} 
 
.column { 
 
    width: 1px; 
 
    top: 0; 
 
    bottom: 0; 
 
}
<div id="wrapper"> 
 
    <img id="img" src="http://placehold.it/300x300"> 
 
</div> 
 

 
<input id="rows" type="number" name="row" placeholder="Rows"> 
 
<input id="cols" type="number" name="column" placeholder="Columns"> 
 
<button id="update">Update</button>

+0

非常感謝!它工作得很好! – mctang719

相關問題