Ich arbeite an einem Projekt zu versuchen, etwas wie eine Etch-a-Skizze zu machen. Ich habe ein 780x780px Quadrat und ich versuche ein 16x16 Raster zu erhalten, indem ich eine Reihe kleinerer quadratischer divs verwende.Erstellen Sie benutzerdefinierte quadratische Raster mit Jquery
Auf diesem Raster habe ich den Hover-Effekt. Ich bekomme immer ein 15x17 Raster von quadratischen Divs, weil das letzte Quadrat der Reihe nicht passt. Ich habe Ränder auf 1px und Padding auf 0 gesetzt, also dachte ich mir, dass ich, um 16 Quadrate auf einer 780px breiten Reihe zu passen, die Ränder (15 1px Ränder) berücksichtigen müsste und von dort könnte ich teilen (780-15) um 16, die Anzahl der Quadrate, die ich will.
, das nicht funktioniert, und der nächste Schritt dieses Projekts ist es, eine Taste haben, wo die Benutzereingabe könnte eine beliebige Anzahl von Feldern für die Zeile/Spalte, und entweder eine größere oder kleinere squared grid STILL ON haben die 780x780 Quadrat. Hat jemand irgendwelche Ideen? Ich bin ziemlich ratlos.
$(document).ready(function() {
var original = 16;
for (var y = 0; y < original * original; y++) {
$(".squares").width((780 - 15)/original);
$(".squares").height((780 - 17)/original);
$("<div class='squares'></div>").appendTo('#main');
}
$('.squares').hover(
function() {
$(this).addClass('hover');
}
)
});
function gridq() {
$('.squares').removeClass('hover');
$('div').remove('.squares');
var newgrid = prompt("How many squares on each side?");
var widthscreen = 192;
if (newgrid > 0) {
for (var x = 0; x < newgrid * newgrid; x++) {
$(".squares").width(widthscreen/newgrid);
$(".squares").height(widthscreen/newgrid);
$("<div class='squares'></div>").appendTo('#main');
}
$('.squares').hover(
function() {
$(this).addClass('hover');
}
)
}
}
#main {
height: 780px;
width: 780px;
background-color: antiquewhite;
position: relative;
}
.squares {
margin: 1px;
padding: 0;
background-color: aquamarine;
display: inline-block;
float: left;
}
.hover {
background-color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div id=main>
</div>
<button onclick="gridq()">Go Again!</button>
ich diese folgen, und Ich mag, wie sauber es ist. Ich werde jedoch von '$ (" .quadrats ") geworfen. Width ((780/columnWidthCount) - 2); $ (". Quadrate"). Height ((780/columnHeightCount) - 2); '. Können Sie die Logik hinter der Berechnung erklären? Ich kann nicht herausfinden, warum "-2" funktioniert und möchte es wissen. Vielen Dank! – jswebb
Ich bin froh, dass es hilft. Dieser Code legt die Breite und Höhe jedes Quadrats fest. Es nimmt die Gesamtbreite des Containers, teilt sie auf, wie viele Quadrate in dieser Richtung sind. Es subtrahiert 2, weil wir den Rand auf allen Seiten auf 1px eingestellt haben. Welches ist 2px für die Breite und 2px für die Höhe. Wir subtrahieren es also die Boxen und der Rand entspricht der Breite und Höhe des Containers ... macht Sinn? –
Macht viel Sinn. Wenn ich das CSS ändere, werde ich sicher sein, den Code zu ändern, um zu kompensieren. Vielen Dank! – jswebb