Beste mede Tweakers,
Ik ben bezig met een grid systeem voor een klant, ik kies hier voor bepaalde reden voor een custom build systeem.
Hiervoor bouw ik een jQuery plugin, waarbij ik een grid initialiseer op basis van een div (de grid) diverse divs daar binnen (tiles) en daar nog een div in (tile-content-wrapper) waar de stijling op komt.
Als opties kan ik opgeven hoe breed te grid is in kolommen, en hoe hoog in rijen.
Dan ga ik door alle 'tegels' heen binnen de grid, en geef ik deze de breedte en hoogte van de grid div gedeeld door de aantal rijen of kolommen hoog, dit stop ik vervolgens in een 'reload' script die ook opgeroepen wordt bij het resizen van het scherm.
Het werkt tot zover allemaal prima, ook met resizen.
Echter wil ik random 1x1 tot 3x3 tegels kunnen weergeven. (Dus ook 1x3, 2x1 2x3 etc.)
Maar de tegels zijn allemaal gepositioneerd als een 'float'. Dit werkt prima doordat het allemaal specifieke breedtes en hoogtes hebben qua de viewport.
Maar stel ik wil een 2x2 tegel hebben, en daar weer een 1x1, en dan wordt er een 3,2 tegel geplaatst, komt daar tussenin niet meer 1 omdat floaten zo gewoon niet werkt.
Heeft iemand enig idee hoe ik dit kan oplossen?
Qua werking, wordt de tegel grootte van 1 tegel vooraf weggeschreven in een var, de 2x1 tegel wordt gewoon met 2*tileWidth en 1*tileHeight bepaald.
Dit staat verder in een loop die door te 'tile' div's heen loopt.
Deze functie wordt bijvoorbeeld aangeroepen vanuit de loop:
De loop zelf (waar tiles een array is met de tegels):
Dit is weer de setting waar ik nu in zit, randx en randy hebben nu gewoon allebei de waarde 1. Hier stond eerst een random waarde in tussen 1-2-3.
Maar ik denk dat ik met een float al op de verkeerde weg zit, en dit al beter een position:absolute; kan zijn, maar ik vind het lastig om dan posities te gaan bepalen en ervoor te zorgen dat de grid mooi volledig ingevuld wordt.
Ik ben bezig met een grid systeem voor een klant, ik kies hier voor bepaalde reden voor een custom build systeem.
Hiervoor bouw ik een jQuery plugin, waarbij ik een grid initialiseer op basis van een div (de grid) diverse divs daar binnen (tiles) en daar nog een div in (tile-content-wrapper) waar de stijling op komt.
Als opties kan ik opgeven hoe breed te grid is in kolommen, en hoe hoog in rijen.
Dan ga ik door alle 'tegels' heen binnen de grid, en geef ik deze de breedte en hoogte van de grid div gedeeld door de aantal rijen of kolommen hoog, dit stop ik vervolgens in een 'reload' script die ook opgeroepen wordt bij het resizen van het scherm.
Het werkt tot zover allemaal prima, ook met resizen.
Echter wil ik random 1x1 tot 3x3 tegels kunnen weergeven. (Dus ook 1x3, 2x1 2x3 etc.)
Maar de tegels zijn allemaal gepositioneerd als een 'float'. Dit werkt prima doordat het allemaal specifieke breedtes en hoogtes hebben qua de viewport.
Maar stel ik wil een 2x2 tegel hebben, en daar weer een 1x1, en dan wordt er een 3,2 tegel geplaatst, komt daar tussenin niet meer 1 omdat floaten zo gewoon niet werkt.
Heeft iemand enig idee hoe ik dit kan oplossen?
Qua werking, wordt de tegel grootte van 1 tegel vooraf weggeschreven in een var, de 2x1 tegel wordt gewoon met 2*tileWidth en 1*tileHeight bepaald.
Dit staat verder in een loop die door te 'tile' div's heen loopt.
Deze functie wordt bijvoorbeeld aangeroepen vanuit de loop:
code:
1
2
3
4
5
| parseTile = function( tileEl, tileId, index ){
// Set tile size
tileEl.css( 'width', ( tileWidth * randx ) + 'px' )
.css( 'height', ( tileHeight * randy ) + 'px' );
} |
De loop zelf (waar tiles een array is met de tegels):
code:
1
2
3
| $.each( tiles, function( index, tile ){
parseTile( tile.el, tile.id, index );
} ); |
Dit is weer de setting waar ik nu in zit, randx en randy hebben nu gewoon allebei de waarde 1. Hier stond eerst een random waarde in tussen 1-2-3.
Maar ik denk dat ik met een float al op de verkeerde weg zit, en dit al beter een position:absolute; kan zijn, maar ik vind het lastig om dan posities te gaan bepalen en ervoor te zorgen dat de grid mooi volledig ingevuld wordt.
