Zur Navigation

CSS : relative und absolute Positionierung kombinieren?

1 lava

Hallo, ich möchte meinen Hauptinhalt im Bodybereich mittig ausrichten und rechts und links ein wenig Rand lassen. Ich halte prozentuale Angaben grundsätzlich für besser als absolute Zahlenwerte und hab mich daher für
<div style="position:absolute; left:20%; width:60%"> 
entschieden - das wäre ja dann so, wie wenn ich in einer Frames-Lösung einen Frame mit 20%, den Hauptframe mit 60% und den nächsten Randframe wieder mit 20% anlege. Soweit, sogut. In den linken Rand soll noch das Logo, und solang die Fensterbreite weit genug ist, paßt es ja auch. Wenn aber die 20% nicht ausreichen, dann haben wir ein Problem, und das Logo überlappt sich mit dem Hauptframe. Für den Fall würde ich also die 20% durch den Mindestwert "Logo-Breite" ersetzen. Gibt es dafür noch eine andere Lösung als mit PHP? (Ich arbeite auf einem anderen System als sonst, mit JSP, PHP steht mir diesmal nicht zur Verfügung....) VG, Lava


P.S. Hatte dann noch eine Idee, nicht prozentual den Rand festzulegen, sondern einfach den Rand fest auf 200px zu setzen (das Logo ist 170px breit) und nur die Breite der Main-Area flexibel zu halten. Dazu war meine Idee wie folgt:


<div style="position:absolute; left=200px; right=100%-200px">
für den Mittelteil, aber die Kombination von % und px in der Angabe für "right" scheint auch nicht zu funktionieren....

25.06.2007 10:49 | geändert: 25.06.2007 11:14

2 Jörg

Hallo lava,

mit JavaScript kannst du die Breite des Anzeigebereiches ermitteln - in diesem Thread hattest du schon einmal solch ein Script gepostet:

https://joergs-forum.de/frames-durch-tabellen-ersetzen-t-1653-1#p4

Aus der Breite kannst du dann errechnen, ob 20% für das Logo ausreichen. Andernfalls überschreibst du diesen Wert, z.B.:

if (x < 1000) {
   document.getElementById("content").style.right = 200 + "px";
}
(das betreffende div muss in diesem Fall die ID "content" erhalten)

25.06.2007 13:23 | geändert: 25.06.2007 13:24

3 lava

Hm, geht es auch direkt mit Java-Einschüben in <% %>- Tags? Bin jetzt nicht daheim, sondern in der Firma und soll eigentlich nur Java Server Pages verwenden....

25.06.2007 15:02

4 Jörg

Ich sehe nicht, wie man dies serverseitig (ob PHP oder JSP) lösen könnte. Um die Breite des Anzeigebereiches zu messen, benötigst du JavaScript. Und was spricht dagegen, JavaScript zu verwenden - das läuft doch wie HTML im Browser, nicht auf dem Server

25.06.2007 15:10

5 lava


Zitat von Jörg
Aus der Breite kannst du dann errechnen, ob 20% für das Logo ausreichen. Andernfalls überschreibst du diesen Wert, z.B.:

if (x < 1000) {
   document.getElementById("content").style.right = 200 + "px";
}
(das betreffende div muss in diesem Fall die ID "content" erhalten)

Wenn ich die styles für die id's in einer extra css-Datei festlege, wo muß ich dann das o.g. Java-Script hinschreiben? In die css-Datei UNTER

 content{ 
}


?

28.06.2007 18:05

6 Jörg

Du erstellst einfach eine Funktion, die du in einen Script-Bereich im Head der HTML-Datei aufführst. Die Funktion lädst du dann über onload in body. Das JavaScript überschreibt dann die CSS-Definitionen - unabhängig davon, ob sie in der HTML-Datei oder in einer externen CSS-Datei definiert wurden

<html>
<head>

<!-- andre Bestandteile des Head -->

<script type="text/javascript">
function  setRight()
{

  /* Berechnung von x */

  if (x < 1000) {
    document.getElementById("content").style.right = 200 + "px";
  }

}
</script>
</head>
<body onload="setRight();">

<!-- Inhalt von body -->

</body>
</html>

28.06.2007 18:14 | geändert: 28.06.2007 18:15

Beitrag schreiben (als Gast)





[BBCode-Hilfe]