Scrolling in einen anderen Frame "auslagern"/Dynamische Framegröße

Status
Nicht offen für weitere Antworten.

Frodo-Neo

Grünschnabel
Hallo!

So, dies ist mein erster Beitrag hier. Ich werde mir mal alle Mühe geben, mit meiner Fomulierung den Forenregeln gerecht zu werden. Ich kann das nämlich nur gutheißen, dass hier diese Kindersprache oder Leet oder wie man's auch immer nennt verboten ist, das liest sich doch dann gleich viel besser :)

Aber nun zu meinem Problem:

Ich habe eine Framesetkonstruktion, die etwa so aussieht:
Code:
<frameset rows="*,50">
      <frameset cols="*,750,*">
    	<frame name="RandLinks" src="links.htm">
    	<frameset rows="120,*">
    	  <frame name="Navigation" src="navi.htm">
    	  <frame name="Inhalt" src="start.htm">  
    	</frameset>
    	<frame name="RandRechts" src="rechts.htm">
      </frameset>
      <frame name="Fusszeile" src="unten.htm">
    </frameset>

Es gibt also einen variablen rechten und linken Rand, damit bei den gängigen Auflösungen kein horizontales Scrolling nötig ist. In der Mitte oben befindet sich die Navigation, da drunter der Frame für den Seiteninhalt.
Ganz unten ist eine kleine Fußzeile vorgesehen, deren Zweck ich mir noch überlegen muss ;)

Jetzt kommt meine Frage ins Spiel:
Wenn der Inhalt des Inhaltsframes dessen Größe übersteigt, erscheint die Scrolleiste ja bei dieser Lösung direkt im Frame. Das finde ich aber eine "optisch eher weniger ansprechende" Lösung.
Deswegen hätte ich das Scrolling gerne "global", also ganz rechts am Browserrand. Dazu könnte ich einerseits den Frame "Inhalt" so groß machen, dass innerhalb dieses Frames alle vorgesehenen Inhalte ohne Scrolling möglich sind. Dann hätte ich aber bei weniger Inhalt viel Leerraum, das möchte ich auch vermeiden.
Mein Ansatz zu einer Idee wäre, dass sich die Höhe des Frames dem Inhalt anpasst. Dann könnte man für sämtliche Frames das Scrolling deaktivieren, und es würde nur noch ggf. eine Scrolleiste am rechten Rand des Browsers erscheinen.
Ist so etwas möglich, und wenn ja, wie?

Vielen Dank im Vorraus, Chris
 
Es gibt kein "frameübergreifendes Scrollen". Frames musst du dir in etwa (naja, eigentlich ziemlich genau gleich) vorstellen wie separate Browserfenster. Und du kannst auch nicht in Browserfenster 1 und gleichzeitig in Fenster 2 scrollen. Das geht halt nicht.

Ich würde dir empfehlen, mit Divs zu arbeiten. Du kannst divs auch fix positionieren, so dass sie beim scrollen "mitfahren" (das W3C macht das z. B. auch so). Ist viel praktischer und ausserdem werden Browser, die Frames nicht verstehen (z. B. Nur-Text-Browser wie Lynx), nicht benachteiligt.
 
Hmm, dass das so einfach nicht geht, habe ich mir schon gedacht, deswegen ja die Idee mit der variablen Framehöhe. Denn wenn man per Javascript ein neues Fenster macht, kann man das doch auch an den Inhalt anpassen, oder täusche ich mich da?

Kann ich denn einem <div>-container eine absolute Breite zuweisen?
 
Denn wenn man per Javascript ein neues Fenster macht, kann man das doch auch an den Inhalt anpassen, oder täusche ich mich da?
Ja, das geht schon, nur das Problem bei Frames ist halt, dass du die nur maximal so hoch machen kannst, wie der Bildschirm bzw. der anzeigbare Bereich des Browsers ist (bei dir noch minus die Höhe der Navigation und des Footers).

Klar kannst du einem div eine absolute Breite zuweisen:
HTML:
<div style="width:800px;">
Ein kleines Beispiel. ;)
 
Aha, danke, vielleicht sollte ich mich mal ein bisschen über die möglichkeiten von <div> informieren...

Bei den Framesets hatte ich wohl eine falsche Vorstellung, was das Scrolling angeht. Deswegen wäre es toll, wenn mir das jemand noch mal kurz erklärt ;)
Was geht zum Beispiel vor sich, wenn man sich jetzt genau diese Seite anguckt, da ist doch auch der Scrollbalken ganz rechts, und wenn ich auf einen anderen Punkt in der Navigation klicke, wird doch nur der Bereich hier in der Mitte verändert. Es kann sich doch also auch nicht nur um einen einzigen Frame handeln, oder?
 
Aha, danke, vielleicht sollte ich mich mal ein bisschen über die möglichkeiten von <div> informieren...
Eine sehr gute Idee - divs gehört die Zukunft. Irgendwann wird es (hoffentlich) keine Frames und Layout-Tabellen mehr geben.

Übrigens gibt es hier bei Tutorials.de (glücklicherweise) keine Frames. Die Navigation und der Rest werden dynamisch mit PHP eingebunden. Wenn dich das Thema interessiert, dann gibt's hier zwei Links:

http://www.schattenbaum.net/php
[phpf]include[/phpf]
 
SilentWarrior hat gesagt.:
Eine sehr gute Idee - divs gehört die Zukunft. Irgendwann wird es (hoffentlich) keine Frames und Layout-Tabellen mehr geben.

Sehr schön, ich mache nämlich momentan "nur" eine Privathomepage, um meine HTML-Kenntnisse mal auf einen "modernen" Stand zu bringen, damit ich in der toten Zeit nach dem Abi evtl. Mal die Homepage der Firma meines Vaters neu aufsetzen kann.

Aber zurück zum Thema:
Ich habe beim googeln das hier gefunden:
<div>-layer zentrieren
Das funktioniert aber nicht, kann ich diese Idee verwerfen? Es kommt mit ohnehin ziemlich gepfuscht vor.

Ich möchte hier keine Grundsatzdebatte anfangen, ich habe auch schon mitbekommen, das Layouts mit Frames eigentlich nicht mehr zum "sauberen Stil" gehören. Ich sehe die Vorteile ein.
Die beiden Hauptvorteile von Frames sind jedoch meiner Ansicht nach, dass man eben so etwas wie eine Navigation nicht ständig neu laden muss, und man außerdem keine unübersichtlich langen Quellcodes bekommt, da man einige Inhalte in eben die Sources der Frames auslagern kann.
Letzteres lässt sich ja mit dem von dir erwähnten php-Befehl include lösen, aber wie kann ich denn auf einzelne <div>s verlinken, analog zum target="framename" für Frames?
 
Status
Nicht offen für weitere Antworten.
Zurück