Willkommen im #Neuland
Login wie bei quake.ingame.de zuvor, die Passwörter aus der alten Datenbank wurden aber gelöscht - einmal hier neu anfordern.
Wer seine E-Mail-Adresse nicht mehr hat oder kennt, bitte eine Nachricht mit Infos schicken o. im Discord melden.

PQ Discord Server: #planetquake                                                                                                                                         Spenden? Hier entlang!

CSS Layout - wie am besten ansetzen?

Forum für alles rund ums Coden und web.design - HTML, XHTML, XML, CSS, PHP, ASP, Zugriffsrechten, Mods uvm.
Antworten
EviLsEyE
Administrator
Administrator
Beiträge: 23012
Registriert: Jan 2000
Wohnort: NRW
Kontaktdaten:

CSS Layout - wie am besten ansetzen?

Beitrag von EviLsEyE »

Hello, hello,

ich bastle grad an 'ner kleinen Sache und stelle mir die Frage, wie man folgendes Layout mit CSS umsetzen würde..
Bild

Mit Tabellen könnte ich das problemlos in 5 Minuten bauen, aber ich will das gerne in CSS umsetzen - da hapert's jedoch an meinen Fähigkeiten ;>

Wie geht man an sowas heran? Intuitiv hätte ich jetzt ein Container-DIV mit fester Breite und Höhe gebaut und darin dann 3x DIVs mit float:right und clear:right.. das haut aber irgendwie vorne und hinten nicht hin, mal davon abgesehen, dass ich nicht weiß, wie ich dann noch das rote DIV da unterbringen müsste..

Wäre dankbar, wenn mir jemand 'nen Tipp bzw. irgend ein Stichwort geben könnte, wonach man suchen könnte..
Bild
Nomschta
Rampage
Rampage
Beiträge: 14303
Registriert: Jun 2001
Steam: TomHonks

Beitrag von Nomschta »

kommt drauf an was der inhalt sein soll :) mal angenommen, die drei blöcke rechts sollen immer da bleiben und der block links soll scrollbar sein.

dann machst du 4 divs mit eindeutiger ID, wobei die drei linken alle fixe positionierungen bekommen.

sinngemaess wuerde das dann so lauten:

.oberer block
{
position: fixed
top: 0px
bottom: abstand zum mittleren block
right: 0px
width: gewuenschter breite, alternativ abstand nach links angeben:
left: ...
}

.mittlerer block
{
position: fixed
top: abstand zum oberen block
width: gewuenschter breite, alternativ abstand nach links angeben:
left: ...
}

.unterer block ist aehnlich.

fixed heisst, dass die abstaende immer fest sind, egal welches das div in der naechst groesseren hierarchiestufe ist.

.grosser block links
{
position: relative
left: 0px
top: 0px
bottom: 0px
right: auto
overflow: auto wenn zu viel inhalt da ist, scrollbalken anzeigen, ansonsten nicht.
}

relative ist hier noetig, da der scrollbalken sonst nicht funktionieren wuerde. das parent div ist quasi der browser bzw. 'body'

es gibt im internet einige interaktive css "designer". das hat mir sehr geholfen. habe nach "multi column layout" gesucht.

wichtig am anfang ist eigentlich nur: position, overflow, margin, padding

€: die seite ist zB ganz gut: http://www.pagecolumn.com
BildBild Danke an Drasora für ihr Wichtelgeschenk!
MAR hat geschrieben:Führt der durch den Terrence-Hill? :ugly:
EviLsEyE
Administrator
Administrator
Beiträge: 23012
Registriert: Jan 2000
Wohnort: NRW
Kontaktdaten:

Beitrag von EviLsEyE »

Danke für den ausführlichen Post! Werde das später mal versuchen..

Wie gewünscht, paar Details zu den geplanten Inhalten..
In den kleinen Blöcken rechts hätte ich gerne Bilder (horizontal und vertikal zentriert) und in dem großen roten Block stehen gemischte Inhalte (Text, Bilder, ggf. eingebettete Objekte, z.B. YouTube..)..

Mal sehen, ob ich das endlich mal so hinkriege, wie ich will :ugly:
Bild
Nomschta
Rampage
Rampage
Beiträge: 14303
Registriert: Jun 2001
Steam: TomHonks

Beitrag von Nomschta »

gerne :)

mit welcher IDE arbeitest du? empfehlenswert ist auf jeden fall visual studio web developer express. dort gibt es eine vorschau und man sieht recht schnell was sich ändert wenn man an schraube xy dreht.
BildBild Danke an Drasora für ihr Wichtelgeschenk!
MAR hat geschrieben:Führt der durch den Terrence-Hill? :ugly:
acid
Humilation
Humilation
Beiträge: 10614
Registriert: Aug 2001

Beitrag von acid »

Kannst auch 1 Gesamtdiv machen und 2 für links und rechts. Die Inhalte/Divs im rechten Container brechen automatisch um, wenn Du eine feste Breite angibst.

Oder probierst das linke Div normal zu positionieren und die rechten drei floaten zu lassen.
Bild
zeeno
Uriel
Uriel
Beiträge: 2793
Registriert: Nov 2002
Kontaktdaten:

Beitrag von zeeno »

Schau dir mal Grids an. Gibt verschiedene und damit lässt sich wunderbar leicht arbeiten.

960 Grid System z.B.
Bild

Drum & Bass: Hartes oder Weiches

"Demokratie ist, wenn man sich aussuchen kann wer verarscht." - Hagen Rether
[/CENTER]
EviLsEyE
Administrator
Administrator
Beiträge: 23012
Registriert: Jan 2000
Wohnort: NRW
Kontaktdaten:

Beitrag von EviLsEyE »

Ich missbrauche meinen alten Thread einfach mal wieder, da die Frage sich jetzt nur etwas verlagert hat ;)

Folgendes möchte ich erreichen:
Bild

Das große Div hat eine feste Breite und Höhe und darin möchte ich das rote Div so positionieren, dass es horizontal zentriert und vertikal an der unteren Kante ausgerichtet ist..

So von der Theorie müsste ich ja einfach nur das rote Div ins große Div reinpacken und "relativ" an der Unterkante ausrichten.. klappt nur leider nicht, bzw. ich weiß nicht wie das richtig geht..

Als Workaround habe ich jetzt erstmal absolute Werte genommen und es eben über die gesamte Seite zentriert und 400px von der Oberkante entfernt.. passt zwar in diesem Beispiel gerade so eben, aber einerseits könnte es mit anderen Browsers wieder anders aussehen (die unterscheiden ja gern mal Koordinaten um 2-3 Pixel und schon sieht alles anders aus) bzw. andererseits kann es das nächste mal sein, dass das nicht so einfach klappt..

Daher würde mich interessieren, wie ich sowas umsetzen kann.. dürfte doch gar nicht so schwer sein eigentlich?


edit: okay, hab jetzt herausgefunden, dass ich dem großen Div die Eigenschaft "position:relative" geben muss, dann kann ich dem roten Div "position:absolute" angeben, dann bezieht sich das auf das übergeordnete Div.. nur jetzt krieg ich's irgendwie nicht zentriert, es hängt unten links in der Ecke :ugly:
Bild
acid
Humilation
Humilation
Beiträge: 10614
Registriert: Aug 2001

Beitrag von acid »

#großes div
{
text-align: center;
vertical-align: bottom;
}
Bild
EviLsEyE
Administrator
Administrator
Beiträge: 23012
Registriert: Jan 2000
Wohnort: NRW
Kontaktdaten:

Beitrag von EviLsEyE »

Danke für den Versuch, sowas in der Art habe ich jedoch schon ausprobiert ;)
Ich dachte vertical-align funktioniert nicht bei divs, weil es keine Blockelemente sind?
Mal davon abgesehen, ich will ja nicht den gesamten Inhalt des großen Divs unten ausrichten, sondern nur das zusätzliche rote Div..
Bild
acid
Humilation
Humilation
Beiträge: 10614
Registriert: Aug 2001

Beitrag von acid »

Dann würde ichs mit relativer Positionierung und negativen margin-Werten probieren.
Bild
Johanson
Sorlag
Sorlag
Beiträge: 3845
Registriert: Jul 2002
Kontaktdaten:

Beitrag von Johanson »

Oder mit %-Werten.
CSS: DIV zentrieren - ulf-theis.de

Musst Dir halt nur für die horizontale Zentrierung umbasteln.
xxx
Bones
Bones
Beiträge: 3074
Registriert: Aug 2003
Kontaktdaten:

Beitrag von xxx »

Hier mal mein Vorschlag (die wichtigen Elemente hervorgehoben)

Code: Alles auswählen

<html>
<head>
<style type="text/css">
#outer {
    background: #EBE7B8;
    width: 500px;
    height: 500px;
    [i]position: relative;[/i] /* gewährleistet, dass die Position in #inner relativ zum äußeren Div sind */
}

#inner {
    [i]position: absolute;
    width: 100%;
    bottom: 0;[/i] /* Bringt Div nach unten */
}

#innest {
    background: #FF0013;
    width: 300px;
    height: 50px;
    [i]margin: 0 auto;[/i] /* zentriert das rote Div */
}
</style>
</head>
<body>

<div id="outer">
 <div id="inner">
   <div id="innest">
   </div>
 </div>
</div>
Bild
h4zz4rd
Patriot
Patriot
Beiträge: 1287
Registriert: Jun 2001

Beitrag von h4zz4rd »

EviLsEyE hat geschrieben:edit: okay, hab jetzt herausgefunden, dass ich dem großen Div die Eigenschaft "position:relative" geben muss, dann kann ich dem roten Div "position:absolute" angeben, dann bezieht sich das auf das übergeordnete Div..
Allgemein formuliert: Eine position:absolute Angabe bezieht sich immer auf das nächsthöhere Blocklevel-Element, welches nicht static(default) ist. Ansonsten auf den body...
EviLsEyE hat geschrieben:Ich dachte vertical-align funktioniert nicht bei divs, weil es keine Blockelemente sind?
Genau genommen, eben weil es Blockelemente sind. :p


Zu Deiner Fragestellung gibt es mehrere Möglichkeiten:
Die Möglichkeit 1 hat xxx beschrieben und das wäre auch die von mir favorisierte Lösung. Ich habs mir nicht genauer angesehen, aber die Idee mit margin:auto ist gut.
margin:0 auto sorgt für die horizontale Zentrierung und wenn das äußere Div <= dem roten Div wird, dann klebt es links und rechts am Rand.

Möglichkeit 2:
Statt margin:auto ein Hilfselement unten einsetzen, welches padding: 0 50px oder sowas hat und da das rote Div ohne Breitenangabe hineinlegen. Dann hast Du rechts und links immer einen festen Abstand, was allerdings bei kleineren Fenstern, wie z.B. bei Mobilbrowsern aus Platzgründen blöd wäre. Bei sehr großen Fenster sähe es vielleicht cooler aus, wenn das rote mitwachsen würde.

Generell abraten würde ich von acids Vorschlag so etwas wie left:50% und margin-left: -halbe Breite zu verwenden. Da wandert es bei kleinen Fenster links raus. margin:auto ist einfacher und in meinen Augen auch viel praktischer. Eine Win-Win-Situation... :D

Aber wie so oft ist hier vieles Geschmackssache...

€dith: Habe mir die Fragestellung gerade nochmal (hilft manchmal *g*) durchgelesen. Wenn das äußere auch eine feste Breite hat, ist es wirklich nur noch Geschmackssache. Ich dachte zunächst das weiße wäre der Body...
Bild
EviLsEyE
Administrator
Administrator
Beiträge: 23012
Registriert: Jan 2000
Wohnort: NRW
Kontaktdaten:

Beitrag von EviLsEyE »

Großen Dank Euch für die Codebeispiele und ausführlichen Erklärungen :daumen:
Die ein oder andere Sache ist mir dadurch zumindest klarer geworden (auch wenn ich mich im CSS-Dschungel immer noch nicht heimisch fühle) :D

Sowas wie "margin:0 auto;" kannte ich z.B. bisher gar nicht.. im Prinzip aber das, was ich schon lange suche.. :ugly:
Bild
EviLsEyE
Administrator
Administrator
Beiträge: 23012
Registriert: Jan 2000
Wohnort: NRW
Kontaktdaten:

Beitrag von EviLsEyE »

Eine Frage hätte ich noch.. wie habt Ihr gelernt, mit CSS umzugehen?
Einfach drauflos und sich bei jedem Problem durch die Doku und Blogs wühlen oder habt Ihr strukturiert (z.B. mit Hilfe eines Buches) gelernt?

Ich hab mir alles bisher selbst mittels "learning by doing" beigebracht, merke aber oft, dass das wohl nicht der richtige Weg ist/war, da man viele Sachen entweder falsch verstanden oder gar nicht erst angeschaut hat und einem dann bei der Entwicklung solche banalen Problemstellungen eine Hürde sind..

Hätte eigentlich gerne eine Lektüre, die das Thema CSS strukturiert und halbwegs verständlich rüber bringt - habt Ihr da besondere Empfehlungen?
Bild
acid
Humilation
Humilation
Beiträge: 10614
Registriert: Aug 2001

Beitrag von acid »

html-world.de und cha0s im IRC nerven :ugly:
Bild
Warzenschwan
Assist
Assist
Beiträge: 5169
Registriert: Feb 2007

Beitrag von Warzenschwan »

learning by doing. wie eigentlich alles. und ja, cha0s war/ist immer eine gute hilfe :ugly:
Bild

Was soll denn daran zu groß sein?
Anapäst
Biker
Biker
Beiträge: 1248
Registriert: Jul 2000
Kontaktdaten:

Beitrag von Anapäst »

um html/css "neu" zu lernen bot sich damals Einführung in XHTML, CSS und Webdesign - Michael Jendryschik an. inzwischen hat der das umgestaltet und mehr in buchform aufgebaut, sollte aber immernoch gut sein.
Bild
Antworten