Mit CSS Seite ordnen

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Mit CSS Seite ordnen

Beitrag von Franky »

Hi Leute, ich mach`s kurz, ich hab da ein kleines Problem mit CSS und zwar:

1.)Ich möchte eine Seite in zwei div-Bereiche aufteilen (untereinander).
Der erste Bereich hat eine feste höhe in Pixeln, der untere soll als Mindesthöhe die Gesamthöhe der Seite haben. Sprich, ich will eine Seite, die falls es nicht nötig ist keine Scrollbars hat, aber doch die ganze Seite ausfüllt.
Was kann ich aber als MinHeight angeben, wenn ich von den 100% einen festen Pixel-Wert abziehe?

2.)Da ich die untere Seite zentrieren will, mach ich das über margin:auto;, da ich dann aber ne Breite angeben muss, würd ich gerne die Breite so angeben, dass ich kein Horizontalen Scrollbalken kriege, falls nicht nötig, auch, wenn ich einen vertikalen Scrollbalken habe. width=100% klappt nicht, da die Scrollbalken ja die Seite verschmalern


Danke im Vorraus
Franky
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Benutzeravatar
Thalius
Beiträge: 476
Registriert: 17.02.2005 16:17
Wohnort: Basel / Schweiz

Beitrag von Thalius »

Paar Anmerkungen: Min-Height funzt im IE nicht richtig und equals height.

Wegen den scrollbars probier mal:

Code: Alles auswählen

border-collapse: collapse;
dann nimm 100% für die höhe und setze das ganze mit margin und padding in ein offset. So stimmts mit allen gängigen Browsern.
und als tip bau dir ein Rahmen-div, somit hast du zum positionieren und zentrieren ein paar mehr optionen.

Cheers,
Thalius
"...smoking hash-tables until until you run out of memory." :P
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Mach eine Tabelle mit zwei Zeilen ... in jede machst dein div und die
gesamte Tabelle machst als 100%. Dem ersten div kannst so dann den
festen Wert zuweisen und der rest wird vom Browser ermittelt.

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag von TomS »

Wozu dann noch div's einfügen, wenn man eine Tabelle erstellt?

Wie ist das?
Mit mehr Text?
Benutzeravatar
Thalius
Beiträge: 476
Registriert: 17.02.2005 16:17
Wohnort: Basel / Schweiz

Beitrag von Thalius »

geht alles auch ohne tables.

Ist schneller, kompatibler und sauberer ;)

XHTML + CSS + JSDOM = Sauberste Implementation imo.
"...smoking hash-tables until until you run out of memory." :P
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

stimmt, ich nutz das ja auch garnicht mehr so fällt mir grad auf ... :oops:

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag von Franky »

So, erstmal sorry, dass ich mich so spät erst melde, aber ich muss immer alles alleine machen, das denk ich zumindest.

@TomS:
Danke, aber das hilft mir nicht viel weiter, denn die Sache mit dem top funktionierte ja schon ("funktioniert" heißt hier Firefox, an den IE geh ich noch garnicht dran)
Interessant wär für mich, wenn du es schaffen würdest, im ersten Beispiel den Text "fringil" ganz nach unten auf die Seite zu packen.
Da liegt nämlich mein Hauptproblem.


Also, ich muss ganz ehrlich sagen, bei CSS ist es wie ich das sehe mit der Logik nicht so weit her. Oder ich rall da einfach was nicht, was ich mir natürlich eher wünsche :lol:


Nehmen wir mal folgende Beispielseite

Dort ist dieser Quelltext zu sehen:

Code: Alles auswählen

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
        "http://www.w3.org/TR/REC-html40/strict.dtd">
<html>
 <head>
  <title> Test</title>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
  <style type="text/css">
html,body{
         margin:0px;
         padding:0px;
         margin-top:25px;
         background-color:#000000;
         }
     div.main{
             background-color:#FFFF00;
             position:relative;
             height:100%;
             width:100%;
             }
     div.topbar{
             background-color:#0000FF;

             position:fixed;
               top:0px;
               width:100%;
               height:25px;

             }
    div.footer{
              position:relative;
              bottom:0px;
              width:100%;
              height:20px;
             }
  </style>
 </head>

 <body>
      <div class="main">
           Ein Text so mal
           <div class="Footer">
                      der Footer
           </div>
      </div>
      <div class="topbar">
           Die Titelleiste
      </div>
 </body>

</html>
Vorhandene Fehler:
Der schlaue Mensch entdeckt bei Betrachtung der Seite:

1.)Nach der Titelleiste ist für 25px die Hauptseite zu sehen. Eigentlich sollte dort aber der "main"-div direkt anschließen, denn der "topbar"-div wird erst nachher erzeugt, hat also keine relative Bedeutung.
Zudem kann man auch an Zeile 11 des Quelltextes rumspielen und wird sehen: CSS multipliziert den angegebenen Wert mit 2
Man kann diesen Fehler zwar umgehen, indem man 13px angibt, aber ich frag mal ganz unverblümt: Woher kommt das und was soll so ein Darmprodukt?

2.)Die Seite hat Scrollbalken, was ich ja nu garnicht will, wenn`s nicht nötig ist.


Ich weiß mit dieser scheiß Sprache einfach nicht mehr weiter

Danke für Eure Hilfe schonmal im Vorraus. :cry:

Franky
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Benutzeravatar
Thalius
Beiträge: 476
Registriert: 17.02.2005 16:17
Wohnort: Basel / Schweiz

Beitrag von Thalius »

Genrelle CSS Regeln:

Wird von oben nach unten und links nach rechts geparsed.

Elemente haben verschiedene Gewichtungen und werden in einem DOM dargestellt ( Baumstruktur ).

Desto mehr verweise ein Element besitzt desto höher ist seine Gewichtung - somit lassen sich auch klassen und IDs ( die dinger mit dem # davor ) überschreiben. IDs wiegen schwerer als Klassen.

und um ein element zt auf die dyn seitengrösse zu verschieben kannst du das auch mit einem JS machen ( zt nötig da IE die min-height nicht richtig interpretiert ).

Wenns bis nächste woche ned gelöst hast fix ich dir ein beispiel - am weekend hab ich sowas von keine lust mehr auf php/css - da ich schon seit geraumer zeit an einem riesigen projekt damit involviert bin ... Weekend code ich lieber ALLES andere *gg*

Hier das JS um ein class element auf die seitengrösse zu resizen ( mit oberem element von margin 250px ).


Code: Alles auswählen

<script type="text/javascript" language="JavaScript">
<!--
window.onresize=function(){
		//sleep(10);
		resizeWin();
	}
var stopit = 0
function resizeWin () {
	var h;
	// all except Explorer
	if (self.innerHeight) { h = self.innerHeight; }
	// Explorer 6 Strict Mode
	else if (document.documentElement && document.documentElement.clientHeight) {
			h = document.documentElement.clientHeight;
	}
	// other Explorers
	else if (document.body) { 
		h = document.body.clientHeight; 
	}
	
	var newHeight = h-192;
	// limit min
	if (newHeight<250) {
	newHeight = 250;
	}
	var obj1=document.getElementById("page_content_classname");
	obj1.style.height = newHeight+"px";
}
//-->
	</script>
Cheers,
Thalius
"...smoking hash-tables until until you run out of memory." :P
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag von TomS »

@Franky
Ok, hatte dich dann falsch verstanden, aber jetzt weiß ich glaub ich, was du meinst. Ich schau mal ob ich's hinkrieg.

Ansonsten würde ich doch eher zu Tabellen raten. Es ist ja dann ein fixes Layout, dass nicht floaten muss (Floatverhalten: Bei geringer Browserbreite ordnen sich Elemente untereinander an, bei großer Breite nebeneinander).

Alt und missbraucht hin oder her. Es ist immer noch besser als alles gleich mit JS lösen zu wollen. Barrierefreiheit und so. :roll:
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

CSS

Beitrag von PMV »

ich weis ja nicht, wie gut du dich jetzt damit auskennst, aber das
Problem, eine Fußleiste zu erstellen hatte ich auch schon ... allerdings
hatte ich eine Vorlage der ich nachgeeifert bin ... das Ergebnis ist
unteranderem das hier:

http://pmv.pytalhost.com/FPPS/R3_Markts ... g_1968.htm

Da das ganze keine Bilder verwendet und automatisch erzeugt wird, ist
das für dich jetzt natürlich total unübersichtlich, aber wenn du z.B. den
oberen Hintergrund raus machst bzw. alles einrückst, hilft es dir bestimmt :D

MFG PMV
Zuletzt geändert von PMV am 30.01.2009 15:03, insgesamt 2-mal geändert.
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Antworten