mmofacts.com

Ermitteln der Bildschirmauflösung == Problem

gepostet vor 19 Jahre, 7 Monate von Grewo
ich habe eine Hintergrundgrafik als Galaxiebild und die Systemlinks sind als div elemente gesetzt. Da ich nciht möchte das bei einer auflösung zb
>1024x768 die oberfläche statisch bleibt und der restliche teil des bildschirms einfach nur hintergrundfarbe hat, habe ich alle tabellen auf witdh=100% gesetzt.

Problem:
Dadurch verschiebt sich die Galaxiekarte um ~100px nach rechts, damit die proportion stimmig bleibt. Die Systemlinks sind aber fest in px werten angegeben also bleiben die wo sie sind.Dadurch kann die Galaxieansicht ja nur bei 1024x768 richtig angezeigt werden.

Mein Lösungsansatz war...
JS Funktion zur ermittelung der Auflösung und übergabe an ein formular, anschliessend über $_REQUEST und einem switch für die auflösungsbreiten -> je nachdem werden dann die richtigen px werte an die systemlinks weitergegeben.

Nun das Problem wo ich mich im Kreis drehe...
durch den document.form.submit() wird die seite immerwiedergeladen da ich die function über OnLoad starten lasse. Momentan hab ich als übergangslösung ein button gesetzt mit OnClick...

Gibt es ne möglichkeit den Onload befehl nur 1x ausführen zu lassen oder sonstiges?

schonmal danke im vorraus
gepostet vor 19 Jahre, 7 Monate von neit
Ich würd das PHP-Script JS-Variablen in die Datei schreiben lassen für die aktuelle Fenstergröße. Die Onload-Funktion überprüft diese dann und schickt das Formular nur ab wenn die tatsächliche Fenstergröße abweicht.

Abgesehen davon scheint mir der ganze Lösungsansatz ein wenig "unschön". Mir fällt auf anhieb zwar nichts ein aber ich bin mir relativ sicher das es da ne elegantere Lösung gibt.
gepostet vor 19 Jahre, 7 Monate von Grewo
im endeffekt würde das glaube ich aber auf das selbe hinauslaufen...

wenn es abweicht schickt er das formular los und das ganze beginnt wieder... oder verstehe ich das falsch?

hab überlegt über ne weiterleitung und ner zwischenseite das ist mir aber wirklich zu unschön...

für php gibt es kein befehl oder function um die auflösung zu ermitteln?
gepostet vor 19 Jahre, 7 Monate von BLUESCREEN
Original von Grewo
für php gibt es kein befehl oder function um die auflösung zu ermitteln?

PHP ist serverseitig - also nein.

Nicht jeder hat JavaScript aktiviert - was machst du, wenn du die Auflösung nicht rausfinden kannst?

Gestalte die Seite lieber auflösungsunabhängig!
gepostet vor 19 Jahre, 7 Monate von TheUndeadable
> wenn es abweicht schickt er das formular los und das ganze beginnt wieder... oder verstehe ich das falsch?

Du verstehst was falsch.
Ansonsten würde ich dir das DURCHARBEITEN von selfhtml empfehlen, ansonsten können wir hier bei jedem kleineren Problem deinerseits helfen, wofür dieser private Bereich eigentlich nicht gedacht wurde. Diese Frage lässt sich auch ohne weiteres im öffentlichen klären. (Meine Meinung)
gepostet vor 19 Jahre, 7 Monate von HSINC
eventuell wäre es auch besser das design so anzupassen das es "auflösungsunabhängig" ist (zumindest in den gängigen auflösungen funktioniert) da auf javascript nicht unbedingt verlass ist (aktiv/nicht aktiv/sachen von irgend nem wirren proggi geblockt/etc)
gepostet vor 19 Jahre, 6 Monate von Chojin
Also hab ich das richtig verstanden? deine Layout-tabelle ist 100% der bildschirmauflösung und dein galaxybild ist mittig in der tabelle?
dadurch kannst du keine div's mit absoluter position benutzen wenn sich die bildschirmauflösung ändert?

da gibt es jetzt mehrere möglichkeiten. zum beispiel kannst du dein galaxy bild als hintergrund von einem div machen und dann die kleinen punkte oder was auch immer relativ darin anordnen.

wesentlich schneller wirst du es aber warscheinlich umsetzten können wenn du dein bild mit deiner karte einfach in ein Iframe mit einer festen größe in der mitte deiner tabelle steckst. dadurch können die punkte ruhig relativ zur seite bleiben >_<

reg4rds
chojin

ps: warum wollt ihr den irgendwas rumprogrammieren in javascript etc. wenn es einfach nur am aufbau des designs liegt?
gepostet vor 19 Jahre, 6 Monate von knalli
Prinzipiell sollte man solche Spielereien weglassen.. denn für irgendeinen Nutzer mit einer Auflösuung hat das doch einen Nachteil.. oder warum muss der Entwickler respektive das Dokument/Script die Auflösung wissen? :roll:
gepostet vor 19 Jahre, 6 Monate von Grewo
chojin du hast es richtig verstanden...

wollte es auch mit iframes lösen, habe das ganze nun aber doch anders gelöst... bei der registrierung muss man die auflösung einfach angeben und kann sie in den einstellungen später noch ändern... somit hab ich kein fehlerquelle drin und den spielern tuts auch nicht weh...

@knalli , wieso ich das ganze auflösungsabhängig gemacht habe...
ich hab mal das spiel Conquer-Space gern gespielt. Da ist das ganze design auf 1024x768 angepasst. hat man wie ich durch den flatscreen 1280x1024 passiert was? ... das ganze design bleibt gleich und der überbleibende bildschirmplatz bleibt leer. finde das sieht unschön aus und ist natürlich auch a bissl schlechter zu lesen...
das möchte ich verhindern.

wollte das ursprünglich mit javascript machen da mir das am einfachsten mit screen.width schien und ich die px werte der div elemente sowieso schon in 2 (x/y-achse) arrays gespeichert hab da ich die werte auch für die dynamische flugzeit brauche...
gepostet vor 19 Jahre, 6 Monate von knalli
Hm? Verstehe ich nicht.. entweder du generiest die Seite so, dass sie Statisch ist (Box), oder sie wird dynamisch angepasst, was im Höchstenmaße an der Relativät hängt

Frage: Wie verhält sich die Seite, wenn keine Auflösung angegeben werden kann? Wie sieht sie bei 800x600/1024x768 oder bei 1200x1204 aus?
gepostet vor 19 Jahre, 6 Monate von Chojin
Ich verstehs auch nicht, dein spielfeld vergroßert oder verkleinert sich doch nicht mit der auflösung...
warum machst du nicht die punkte relativ zu dem wo das spielfeld grade ist? ob jetzt oben unten links rechts in der mitte auf deinem kopf... die punkte liegen immer in und auf dem spielfeld. mit ner festen position vom linken und oberen rand des spielfelds gemessen...

grüße
chojin

Auf diese Diskussion antworten