• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

5 divs nebeneinander (in einem div)

pixartist

Neues Mitglied
ich habe 5 divs, die mit float:left; nebeneinander liegen. die 4 äusseren haben eine fixe breite, nun möchte ich, dass das mittlere div die RESTLICHE verfügbare breite ausfüllt. dabei hat das umliegende div eine variable breite, ich kann also keinen fixen wert angeben...

jmd nen tip ?
 
ich sehe dein problem gerade nicht so.
vorrausgesetzt ich habe dich richtig verstanden.
du gibst den 4 äußeren divs eben deine feste breite. und dem inneren eine breite von 100%
dann sollte der immer den maximalen rest des viewports in anspruch nehmen.
ob um alle 5 noch ein div drum ist oder nicht, das ist in diesem fall egal.

wenn dein problem ein anderes ist, dann erkläre es bitte nochmal ;-)

grüße hokage
 
okay ich machs gleich so:

ich versuche per css folgendes layout hinzubasteln...

layout.jpg

wobei rot= fixe größe und grün = wächst mit der größe des inhalts. Dabei soll das ganz immer möglichst klein sein, und sozusagen immer nur mit dem content wachsen.

ich verzweifel aber leider grad ein wenig, weil ich weder gute tutorials noch irgendwelche sonstigen infos zu derartig komplexen anordnungen von divs finde :(

hilfe bitte :/
 
ok, dann hatte ich dein problem falsch verstanden^^

für das mitwachsen gilt ertmal folgendes.

der mittlere grüne div breite und höhe 100%
die horizontalen grünen divs breite 100% und eben eine feste höhe.
bei den vertikalen grünen divs höhe 100% und eine feste breite.

die roten divs eben alle mit den entsprechenden fixen breiten und höhenangaben versehen.

nun zur positionierung.
ich denke, dass das zauberwort in diesem fall position:relative heißt, denn wie man so eine divkostruktion, gerade bei den roten mit fester breite alleine mit margin und float hinkriegen soll, ist mir ein rätzel.

position:relative positioniert entsprechende elemente an hand des elternelementes. einfach mal googln.

evtl. gehts auch anders, aber im augenblick sehe ich keine andere möglichkeit.

grüße hokage
 
ich hab doch geschrieben, _variable_ größe... also nix mit relative.

wenn das nicht ordentlich in css zu lösen ist, dann werde ich ab jetzt alle auslachen, die mir erzählen man solle auf keinen fall mit tables arbeiten :P
 
Wenn in diese kleinen Ecken nur zur zierde sein sollen würde ich Hintergrundgrafiken verwenden.

Meißtens ergeben sich die nötigen Elemente schon aus dem Inhalt.
Nebeneinanderreihen brauchst du da nichts.
html:
Code:
<div id="inhalt">
<h1>Box flexibel</h1>
<div>
<p>Lorem Ipsum</p>
</div>
</div>

Die Ecken als Grafiken
css:
Code:
#inhalt,
#inhalt h1,
#inhalt div,
#inhalt p {
margin: 0;
padding: 0;
background-repeat: no-repeat;
}
#inhalt
 {
background-image: url(images/ecke-ol.png);
background-position: 0 0;
background-color: #ccffac;
float: left;
}
  #inhalt h1 {
background-image: url(images/ecke-or.png);
background-position: 100% 0;
padding: 40px 40px 0 40px;
}
 #inhalt div {
background-image: url(images/ecke-ul.png);
background-position: 0 100%;
}
 #inhalt div p {
background-image: url(images/ecke-ur.png);
background-position: 100% 100%;
padding: 0 0 40px 40px;
}
Die Grafiken sind in meinem Beispiel 40x40px;
Float verhindert, daß die Box die maximale Breite nutzt.

Die Ecken sollen eine fixe Breite haben. Die Box muß also mindestens so breit sein wie die linken und rechten Grafiken zusammen.
Daran würde eine Tabelle auch nichts ändern.

Auslachen solltest du hier Niemanden.
Ob eine Tabelle hier sinnvoll ist kommt auf den Inhalt an.
Den hast du uns nicht gezeigt.
 
Zuletzt bearbeitet:
joa klar kann man das so machen, das problem ist nur, das der kasten runde ecken hat, und ich möchte nicht unnötig platz für den leeren teil der eckgrafiken verschwenden..(deswegen die 3-geteilten eck-grafiken)

naja habs jetzt anders gelößt:

HTML:
<table align="center" cellpadding="0" cellspacing="0" background="img/itembg.jpg" border="0" height="50">
	<tr>
		<td width="20" height="17" background="img/item_01.png"></td>
		<td background="img/item_03.png">
			<div style="float:left;width:22; height:17; background-image:url(img/item_02.png);"></div>
			<div style="float:right;width:19; height:17; background-image:url(img/item_04.png);"></div>
		</td>
		<td width="19" background="img/item_05.png"></td>
	</tr>
	<tr>
		<td>
			<table height="100%" width="100%" cellspacing="0" cellpadding="0">
				<tr>
					<td height="25" background="img/item_06.png"> &nbsp; </td>
				</tr>
				<tr>
					<td height="*" background="img/item_09.png"> &nbsp; </td>
				</tr>
				<tr>
					<td height="24" background="img/item_11.png"> &nbsp; </td>
				</tr>
			</table>
		</td>
		<td>
				[content]
		<td>
			<table height="100%" width="100%" cellspacing="0" cellpadding="0">
				<tr>
					<td height="25" background="img/item_08.png"> &nbsp; </td>
				</tr>
				<tr>
					<td height="*" background="img/item_10.png"> &nbsp; </td>
				</tr>
				<tr>
					<td height="24" background="img/item_12.png"> &nbsp; </td>
				</tr>
			</table>
		</td>
	</tr>
	<tr>
		<td height="18" background="img/item_13.png"></td>
		<td background="img/item_15.png">
			<div style="float:left;width:22; height:17;background-image:url(img/item_14.png);"></div>
			<div style="float:right;width:19; height:17;background-image:url(img/item_16.png);"></div>
		</td>
		<td background="img/item_17.png"></td>
	</tr>
</table>

ist schon lustig, dass height="100%" nur funktioniert, wenn der container eine definierte höhe hat, AUCH wenn diese durch den content in der finalen ansicht überhaupt keine rolle spielt (siehe height="50" im haupttable)

wen's interessiert..so sieht's jetzt aus:
http://d3base.de/viewitem.php?id=19
 
Zuletzt bearbeitet:
Das sieht anders aus wie in deinem ersten Beispiel.
Ob die Ecken rund, quadratisch oder dreieckig sind spielt aber keine Rolle.
Das Prinziep kannst du trotzdem Übernehmen.
Eine Platzverschwendung kann ich nicht erkennen.
Die Tabellen machen in bei deinem Inhalt keinen Sinn.

...ist schon lustig, dass height="100%" nur funktioniert, wenn der container eine definierte höhe hat..
Das ist so beabsichtigt.

Height in table / td bedeutet Mindesthöhe.
Ansonsten bedeutet im IE<=6 height in Blockelementen immer min-height (lässt sich durch overflow: hidden "abschneiden").
Für dein Beispiel brauchst du weder height noch min-height.
 
Zuletzt bearbeitet:
ich hab doch geschrieben, _variable_ größe... also nix mit relative.

wenn das nicht ordentlich in css zu lösen ist, dann werde ich ab jetzt alle auslachen, die mir erzählen man solle auf keinen fall mit tables arbeiten :P

und ich hab nur geschrieben, dass du zum positionieren position:relative; verwenden sollst.
für die variabilität sorgen logischerweise die prozentualen breiten und höhenangaben.
dein bild auf deiner website sieht übrigens komplett anders aus, als dein beispielbild.
die nutzung von tabellen ist hier völlig fehl am platze.
wo ist dein tabellarischer inhalt?
 
Wenn in diese kleinen Ecken nur zur zierde sein sollen würde ich Hintergrundgrafiken verwenden.

Meißtens ergeben sich die nötigen Elemente schon aus dem Inhalt.
Nebeneinanderreihen brauchst du da nichts.
html:
Code:
<div id="inhalt">
<h1>Box flexibel</h1>
<div>
<p>Lorem Ipsum</p>
</div>
</div>

Die Ecken als Grafiken
css:
Code:
#inhalt,
#inhalt h1,
#inhalt div,
#inhalt p {
margin: 0;
padding: 0;
background-repeat: no-repeat;
}
#inhalt
 {
background-image: url(images/ecke-ol.png);
background-position: 0 0;
background-color: #ccffac;
float: left;
}
  #inhalt h1 {
background-image: url(images/ecke-or.png);
background-position: 100% 0;
padding: 40px 40px 0 40px;
}
 #inhalt div {
background-image: url(images/ecke-ul.png);
background-position: 0 100%;
}
 #inhalt div p {
background-image: url(images/ecke-ur.png);
background-position: 100% 100%;
padding: 0 0 40px 40px;
}
Die Grafiken sind in meinem Beispiel 40x40px;
Float verhindert, daß die Box die maximale Breite nutzt.

Die Ecken sollen eine fixe Breite haben. Die Box muß also mindestens so breit sein wie die linken und rechten Grafiken zusammen.
Daran würde eine Tabelle auch nichts ändern.

Auslachen solltest du hier Niemanden.
Ob eine Tabelle hier sinnvoll ist kommt auf den Inhalt an.
Den hast du uns nicht gezeigt.

nett,dass du inhalt eingefügt hast, hier ich hab das mal ganz fix in ne datei gepackt:

http://d3base.de/test.php

joa
1. der inhalt soll nicht unter den grafiken anfangen, sondern unter dem oberen rand, sprich: 20 pixel höher
2. fehlen die ränder, das hat nur ecken -.-

edit ach so meintest du?
http://d3base.de/test2
naja das löst ja immernoch garnicht das problem, dass der content nicht über den ecken liegen kann -.- das ist doch grade der grund dieses threads
 
Zuletzt bearbeitet:
..
http://d3base.de/test2
naja das löst ja immernoch garnicht das problem, dass der content nicht über den ecken liegen kann -.- das ist doch grade der grund dieses threads
Das kannst du doch durch padding bestimmen.
Ich habe 40px angeben. Wenn du nur 20px willst Schreibe es so ins css.

Du solltest für deine Versuche immer ein vollständiges html-Dukument mit Doctype verwenden.
Die Ergebnisse sind sonst nicht vergleichbar.
 
Zurück
Oben