/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
"Mosaik"
Fra : Jonas Schmeltz Aaber~


Dato : 18-12-03 15:59

Jeg har brug for at kunne sætte en masse billeder ind ved siden
af og under hinanden, så det danner "mosaik"..
Det er dog ikke kvadratiske billeder, men seks-kanter [1] på
(h*b) 7*12pixels, og skal sættes "tæt" sammen - næsten som en
bikube [2].

Nu vil jeg gerne dynamisk kunne ændre udseendet af denne
"collage" udfra 2 variabler, altså højde og bredde, dvs. hvor
mange enkelte billeder, collagen skal bestå af hhv. i bredden og
i højden.

[1]: se [http://frip.dk/3m/gfld.gif]
[2]: se [http://frip.dk/3m/bfld.gif]

Hvordan skal jeg lave det?

MVH Jonas

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Lasse Reichstein Nie~ (18-12-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 18-12-03 21:26

Jonas Schmeltz Aaberg <julledyret@e-mail.dk> writes:

> Jeg har brug for at kunne sætte en masse billeder ind ved siden
> af og under hinanden, så det danner "mosaik"..
> Det er dog ikke kvadratiske billeder, men seks-kanter [1] på
> (h*b) 7*12pixels, og skal sættes "tæt" sammen - næsten som en
> bikube [2].

> Nu vil jeg gerne dynamisk kunne ændre udseendet af denne
> "collage" udfra 2 variabler, altså højde og bredde, dvs. hvor
> mange enkelte billeder, collagen skal bestå af hhv. i bredden og
> i højden.

hvad mener du med "dynamisk"? Efter at siden er loadet, eller mens
siden loader? Det gør en forskel. Det sidste kan klares med
document.write, som understøttes af alle browsere der forstår
Javascript, mens det første kræver en browser hvor man kan tilføje
elementer efter at siden er loadet.

> [1]: se [http://frip.dk/3m/gfld.gif]
> [2]: se [http://frip.dk/3m/bfld.gif]
>
> Hvordan skal jeg lave det?

Billedet er allerede gennemsigtigt, det er godt.

Jeg ville placere billederne absolut i forhold til en kasse omkring
dem.

Forslag: Put følgende i head-elementet:
---
<style type="text/css">
.hive {
border:1px dotted black;
position:relative;
}
.cell {
position:absolute;
width:12px;
height:7px;
}
</style>
<script type="text/javascript">

function writeHive(x,y) {
var hiveWidth = x * 8 + 3;
var hiveHeight = y * 6 + 4;
document.write("<div class=\"hive\" style=\"width:",
hiveWidth,"px",
";height:",
hiveHeight,"px",
"\">");
for (var yi = 0; yi<y; yi++) {
for (var xi = 0; xi<x; xi++) {
document.write("<img src=\"http://frip.dk/3m/gfld.gif\" ",
"class=\"cell\" style=\"",
"left:",xi*8,"px;",
"top:",yi*6 + (xi%2==1?3:0),"px",
"\">");
}
}
document.write("<\/div>");
}
</script>
----
Så kan der indsættes en bikube på siden med
---
<script type="text/javascript">
writeHive(8,7);
</script>
---
Husk at bruge en DOCTYPE der sætter browseren i standards mode, ellers
passer tallene ikke helt.


Hvis du vil indsætte cellerne senere, så skal du bruge en anden metode:
---
<script type="text/javascript">
function insertCells(hive,x,y) {
// tøm indhold.
while(hive.hasChildNodes()) {hive.removeChild(hive.lastChild);}

hive.style.width = (x * 8 + 3) + "px";
hive.style.height = (y * 6 + 4) + "px";

for (var yi = 0; yi<y; yi++) {
for (var xi = 0; xi<x; xi++) {
var img = document.createElement("img");
img.src = "http://frip.dk/3m/gfld.gif";
img.className = "cell";
img.style.left = (xi*8) + "px";
img.style.top = (yi*6 + (xi%2==1?3:0)) + "px";
hive.appendChild(img);
}
}
}
</script>
---
Du kan fx bruge den sådan:
---
X:<input id="cellsX">
Y:<input id="cellsY">
<input type="button" value="update"
onclick="insertCells(document.getElementById('hiveElem'),
+document.getElementById('cellsX').value,
+document.getElementById('cellsY').value);">
<div class="hive" id="hiveElem">X</div>
---
(brug samme style sheet som det første eksempel).

Held og lykke :)
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

Jonas Schmeltz Aaber~ (19-12-2003)
Kommentar
Fra : Jonas Schmeltz Aaber~


Dato : 19-12-03 16:16

Det hele virker fejlfrit - dejligt!
Tusind tak!

Nu har jeg for hver "celle" sat et tilfældigt billede ind (jeg har 15
forskellige; hver med egen fyldfarve), så jeg hver gang siden loader, danner
nye mønstre.
- Veldig dekorativt

Alt er upåklageligt!

[klip]
> var hiveWidth = x * 8 + 3;
> var hiveHeight = y * 6 + 4;
[klip]

- Men hvad står hhv. 8, 3, 6 og 4 for?

MVH Jonas (aka Juke)


--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (19-12-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-12-03 16:34

Jonas Schmeltz Aaberg skrev:

> Det hele virker fejlfrit - dejligt!

Må vi se - det lyder spændende.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jonas Schmeltz Aaber~ (19-12-2003)
Kommentar
Fra : Jonas Schmeltz Aaber~


Dato : 19-12-03 18:19

> Må vi se - det lyder spændende.

Sågerne...!
http://frip.dk/3m/gfx/map/m.htm

Jeg har yderligere tilføjet en funktion til hver enkelt celle,
der så der kommer en blinkende "krans" rundt om cellen, når man
trykker på den (onClick-event)...

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Lasse Reichstein Nie~ (19-12-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 19-12-03 19:37

Jonas Schmeltz Aaberg <julledyret@e-mail.dk> writes:

> [klip]
>> var hiveWidth = x * 8 + 3;
>> var hiveHeight = y * 6 + 4;
> [klip]
>
> - Men hvad står hhv. 8, 3, 6 og 4 for?

Billederne er 12 pixels bredde og 7 pixels høje. Den måde de bliver
placeret på betyder dog at den næste hexagon ikke bliver placeret ved
siden af, men så en af kanterne overlapper. Eksempel med tre "hex"'er
(*skal* ses med fast-bredde-font):

o XXXXXX 1 (linjer i en hex)
X X 2
X X 3
X o XXXXXX 4
X X X 5
X X X 6
o XXXXXX X + 1 (ny hex, overlapper med den ovenfor)
X X X 2
X X X 3
X o XXXXXX 4
X X X 5
X X X 6
XXXXXX X 7 (sidste hex overlappes ikke)
X X + 1 (for forskydningen)
X X 2
XXXXXX 3

De små o'er repræsenterer øverste venstre hjørne i et billede. Du kan
se at afstanden mellem to der er oven på hinanden er 6, så højden er
6*(antallet i højden - 1) + 7 (for den sidste bliver ikke overlappet)
+ 3 (forskydning af hver anden søjle). Det er det samme som
antal * 6 + 4

På samme måde er den vandrette afstand mellem to hexer også otte.
Den samlede bredde er så (antallet i bredden - 1) * 8 + 12 (fuld bredde
for den sidste, fordi der ikke er nogen at overlappe med). Eller
antal * 8 + 4

Derfor :)
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

Jonas Schmeltz Aaber~ (19-12-2003)
Kommentar
Fra : Jonas Schmeltz Aaber~


Dato : 19-12-03 23:23

> Derfor :)

- Smart!

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste