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

3 divs wollen nicht nebeneinander + letzte ausfüllen

Frederik-Stahmer.de

Neues Mitglied
Hallo
ich habe ein Problem mit meinem neuen Design... ein Teil besteht aus 3 divs die wie folgt aufgebaut sein sollen:

Spalte 1 - Gewissen abstand zum rand damit Spalte 2 recht mittig ist dazu kommt noch ein hintergrundbild
Spalte 2 - 1024 px breit
Spalte 3 - soll mit dem hintergrundbild das auch in Spalte 1 ist den rest in richtung rechtem rand ausfüllen

HIER DIE URL: || Miss-Selena.de || Your source for Selena Gomez ||

Mein HTML Code:
Code:
<body class="thrColHyb">

<div id="container">
  <div id="sidebar1">
    <h3>&nbsp;</h3>
    <!-- end #sidebar1 --></div>
  <div id="sidebar2">
    <h3>&nbsp;</h3>
    <!-- end #sidebar2 --></div>
  <div id="mainContent">
  <div class="style31" id="sidebar1215">Willkommen auf unserem Portal rund um Selena Gomez. Wir bieten euch nicht nur die aktuellsten News sondern auch vieles mehr... Entdeckt selbst</div>
    <div style="margin-top:265px; height:500px; background-repeat: repeat-x; float: left; width: 210px; margin-left: 120px;">
      <div class="style32" style="padding-left:20px"><a href="/index.php">01. News </a><br />
        <a href="/index.php?option=com_content&amp;task=view&amp;id=17">02. Selena Gomez</a><br />
        <a href="/index.php?option=com_content&amp;task=view&amp;id=30">03. Fanstuff</a><br />
        <a href="/index.php?option=com_content&amp;task=view&amp;id=25">04. Videogallery</a><br />
        <a href="/index.php?option=com_content&amp;task=view&amp;id=12">05. Website</a></div>
   <div ><img src="/images/shoutbox.jpg" width="209" height="34" /></div>
   <div class="style10" id="sidebar12" style="height:350px; text-align: center;">
        <div align="left"><jdoc:include type="modules" name="user8" style="none" /></div>
    </div>
    </div>
    
    <div style="width: 540px; margin-top:265px; background-repeat: repeat-x; margin-left: 400px;">
    <jdoc:include type="component" /></div>
    <!-- end #mainContent --></div>
	<p>
	  <!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
  <div class="clearfloat"> </div>
      <!-- end #container -->
  </p>

	<p>&nbsp;</p>
	<p>&nbsp;</p>
	<p>&nbsp; </p>
</div>  {......}


und mein CSS:
Code:
<style type="text/css"> 
<!-- 
body  {
	font: 100% Verdana, Arial, Helvetica, sans-serif;
	background: #ffffff;
	margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
	padding: 0;
	text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
	color: #000000;
	background-image:/images/back.jpg;
	background-repeat: repeat-x;
	
}

/* Tips for this Hybrid layout
1. Since the side columns em-based sizing is based on the user's default font size, you will want to be sure that background graphics in the columns take that into account. Built correctly, this is more accessible for those that need larger font sizes, since the width of the columns remains proportionate. If this is undesirable with your design, simply change the width to a pixel size and be sure to change the margins on the #mainContent div accordingly.
2. Since the sizing of side columns in this layout are based on the 100% font size in the body element, if you decrease the text size overall by using a font-size: 80% on the body element or the #container, remember that the column widths will downsize proportionately. You may want to increase their widths, and the size of the #mainContent div's side margins, to compensate for this.
3. If font sizing is changed in differing amounts on each div instead of on the overall design (ie: #sidebar1 is given a 70% font size and #mainContent is given an 85% font size), this will proportionately change each of the divs overall size. You may want to adjust based on your final font sizing.
4. The #container div is not necessary for this layout at the 100% width. You may want to use it to create faux columns or limit the width of the layout.
5. It is not neccessary to have the 100% width on the #container div since, by nature, a div takes up 100% of the available space. It is here so that if you want to decrease the size of the overall container - perhaps leaving a bit of margin on each side - this will already be available for adjustment.
*/
.thrColHyb #container {
	/*margin: 0 auto;  the auto margins (in conjunction with a width) center the page if needed */
	text-align: left; /* this overrides the text-align: center on the body element. */
} 

/* Tips for sidebar1:
1. Be aware that if you set a font-size value on this div, the overall width of the div will be adjusted accordingly.
2. Since we are working in ems, it's best not to use padding on the sidebar itself. It will be added to the width for standards compliant browsers creating an unknown actual width. 
3. Space between the side of the div and the elements within it can be created by placing a left and right margin on those elements as seen in the ".thrColHyb #sidebar1 p" rule.
*/
.thrColHyb #sidebar1 {
	float: left;
	width: 259px; /* top and bottom padding create visual space within this div */
	background-image: url(/images/back.jpg);
	height: 890px;
	background-repeat: repeat-x;
}
.thrColHyb #sidebar2 {
	float: right; /* top and bottom padding create visual space within this div */
	background-image: url(/images/back.jpg);
	height: 890px;
	background-repeat: repeat-x;
	width: 100px;
	left: 1274px;
}
.thrColHyb #sidebar1 h3, .thrColHyb #sidebar1 p, .thrColHyb #sidebar2 p, .thrColHyb #sidebar2 h3 {
	margin-left: 10px; /* the left and right margin should be given to every element that will be placed in the side columns */
	margin-right: 10px;
	background-repeat: repeat-x;
}

/* Tips for mainContent:
1. If you give this #mainContent div a font-size value different than the #sidebar1 div, the margins of the #mainContent div will be based on its font-size and the width of the #sidebar1 div will be based on its font-size. You may wish to adjust the values of these divs.
2. The space between the mainContent and sidebar1 is created with the left margin on the mainContent div.  No matter how much content the sidebar1 div contains, the column space will remain. You can remove this left margin if you want the #mainContent div's text to fill the #sidebar1 space when the content in #sidebar1 ends.
3. To avoid float drop, you may need to test to determine the approximate maximum image/element size since this layout is based on the user's font sizing combined with the values you set. However, if the user has their browser font size set lower than normal, less space will be available in the #mainContent div than you may see on testing.
4. In the Internet Explorer Conditional Comment below, the zoom property is used to give the mainContent "hasLayout." This avoids several IE-specific bugs that may occur.
*/
.thrColHyb #mainContent {
	padding: 0 2em 0 2em; /* padding here creates white space "inside the box." */
	background-image: url(/images/Miss-Selena%20Kopie.jpg);
	background-repeat: repeat-x;
	width: 1024px;
	margin-left: 259px;
	height: 890px;
	float: right;
} 
.thrColHyb #mainContent h1 { 
	/*margin-top: 0;  Though unnecessary while there's a border on the #mainContent div, you may need to uncomment this rule if the borders are removed. This will zero the margins of the first element in the #mainContent div, avoiding margin collapse - a space between divs - in this case it will create unwanted whitespace above the layout. */
}

/* Miscellaneous classes for reuse */
.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
	float: right;
	margin-left: 8px;
}
.fltlft { /* this class can be used to float an element left in your page */
	float: left;
	margin-right: 8px;
}
.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
	clear:both;
	height:0;
}
.style31 {
	font-size: 9px;
	margin-right: 900px;
}
.style32 {
	font-family: Geneva, Arial, Helvetica, sans-serif;
	font-size: 12px;
}
--> 
</style>
 
wofür das trColHyb. Dein Css ist sehr durcheinander finde ich. auserdem hast du auch schon an die gedacht die keinen Bildschirm über 1000px haben. DAs sind noch eine ganze Menge.
 
ich wäre mit einer Lösung glücklicher :grin: Das Problem der nicht 1000pxler möchte ich hier jetzt eig nicht lösen, ist aber ein Punkt über den nachgedacht werden muss danke dafür.
 
Räum am besten erst einmal den code auf. Der css Code ist eine reine Katastrophe, irgentwie sind da noch anweisungen kommentare. Keine Ahnung, aber räum erstmal auf.
 
thrColHyb ist weil das Dreamweaver automatisch macht (war ne Vorlage)

Code:
<style type="text/css"> 
<!-- 
body  {
	font: 100% Verdana, Arial, Helvetica, sans-serif;
	background: #ffffff;
	margin: 0; 
	padding: 0;
	text-align: center;
	color: #000000;
	background-image:/images/back.jpg;
	background-repeat: repeat-x;
	
}


.thrColHyb #container {
text-align: left; 
} 

.thrColHyb #sidebar1 {
	float: left;
	width: 259px; 
	background-image: url(/images/back.jpg);
	height: 890px;
	background-repeat: repeat-x;
}
.thrColHyb #sidebar2 {
	float: right; 
	background-image: url(/images/back.jpg);
	height: 890px;
	background-repeat: repeat-x;
	width: 100px;
	left: 1274px;
}
.thrColHyb #sidebar1 h3, .thrColHyb #sidebar1 p, .thrColHyb #sidebar2 p, .thrColHyb #sidebar2 h3 {
	margin-left: 10px; 
	margin-right: 10px;
	background-repeat: repeat-x;
}

.thrColHyb #mainContent {
	padding: 0 2em 0 2em;
	background-image: url(/images/Miss-Selena%20Kopie.jpg);
	background-repeat: repeat-x;
	width: 1024px;
	margin-left: 259px;
	height: 890px;
	float: right;
} 
.thrColHyb #mainContent h1 { 
}

.fltrt { 
	float: right;
	margin-left: 8px;
}
.fltlft { 
	float: left;
	margin-right: 8px;
}
.clearfloat { 
	height:0;
}
.style31 {
	font-size: 9px;
	margin-right: 900px;
}
.style32 {
	font-family: Geneva, Arial, Helvetica, sans-serif;
	font-size: 12px;
}
--> 
</style>
 
@xXxPeterPanxXx: Du musst hier nichts beitragen, wenn du gerade keine Lösung zum Problem siehst. Wenn deine Beiträge in der Summe nur sagen "Ich kann dir nicht helfen, weil dein Code mich verwirrt und ich nicht durchblicke", dann ist das in diesem Fall zwar nachvollziehbar, aber du solltest überlegen, ob es wirklich notwendig ist, es auch zu schreiben.

@Frederik-Stahmer.de: Der Code auf der von dir verlinkten Seite stimmt nicht mit dem hier reingestellten überein. Das ist besonders deswegen sehr schlecht, weil z.B. deine Sidebar1 überhaupt nicht zu finden ist und man so das Problem nicht sehen kann. Ich gehe jetzt mal von dem Code aus, der hier im Forum steht. Bitte gleiche aber beides ab, weil man dir so nicht richtig helfen kann.

Was ich erst mal feststellen konnte:
Du hast einige Ungereimtheiten in deinem CSS-Code. Da steht:
Code:
.thrColHyb #sidebar2 {
	float: right; 
	...
	left: 1274px;
	...
}
Das ist ziemlicher Unsinn. float: right; bedeutet effektiv, dass du das Element aus dem Textfluss nimmst und ganz an den rechten Rand klatschst. left: 1274px; hingegen bewirkt überhaupt nichts, weil diese Angabe nur für Elemente gedacht ist, denen position zugewiesen wurde. Du meinst wahrscheinlich margin-left. Wenn du das aber verwendest, wäre float: left; sinnvoller, weil du ja anscheinend einen Abstand zum linken Rand haben willst.
Die Angabe 1274px ergibt in meinen Augen auch keinen Sinn. Wenn deine erste Spalte (also sidebar1) 259px breit ist und der Inhalt 1024px, dann müsste es, wenn überhaupt margin-left: 1283px; heißen (denn 259+1024=1238, wenn ich mich nicht verrechnet habe ;))
Das funktioniert aber auch alles nicht, weil du das hier definiert hast:
Code:
.thrColHyb #mainContent {
	padding: 0 2em 0 2em;
	...
}
Das bedeutet, dass deine Inhaltsspalte (mainContent) zusätzlich zu den 1024px noch um je 2em auf jeder Seite breiter wird. px und em kann man aber nicht einfach so addieren. Du müsstest also statt 2em eine Angabe in px machen. Dann addierst du die Breiten der linken Spalte und der Inhaltsspalte plus deren padding-Werte. Das ist dann dein margin-left für die dritte Spalte.

Das alles wäre wesentlich weniger kompliziert, wenn du nicht so kompliziert angefangen hättest. xXxPeterPanxXx hat schon Recht, ein wenig chaotisch ist der Code schon. Wenn du das Ganze noch einmal neu aufbauen möchtest, wird dir hier gerne geholfen. :)
 
Also damit mir geholfen werden kann hab ich nochmal ne kleine Skizze für euch:
scaled.php

Erklärung:
1 - soll einen ca 200 px rand nach links haben, Hintergrund ist ein Bild (welch wunder^^)das sich dementsprechend wiederholt
2 - ein großes Bild (1024px x 600px) als Hintergrund, 2 div tabellen (kann ich selbst anpassen), das (die, ^^kp) DIV sollte recht mittig sein
3 - gleiche Grafik wie 1 im Hintergrund nur soll diese DIV den rest des Browers auffüllen.

Wäre nett wenn mir jmd da helfen könnte. Für die einzelnen Hintergründe können Platzhalter eingetragen werden.
 
Warum so umständlich?
  1. sollte der Header als <h1> ausgezeichnet werden (erste Überschrift der Seite).
  2. brauchst du deine <div>'s und Tabellen nicht, gib dem <h1> deine Hintergrundgrafik und als Inhalt das <img>.
  3. Per CSS gibst du dem <h1> eine Breite, per margin definierst du den Abstand zum Rand und mit text-align: center kannst du das <img> zentrieren.
HTML:
<h1><img src="" alt="" /></h1>
 
Ach, jetzt sehe ich das erst, das ist eine große Grafik. Das ist nicht gut. Besser wäre es, wenn der Teil mit dem Farbverlauf eine Grafik wäre und das Menü und der Content davon getrennt wäre. Denn so, wie du das versuchst, musst du mit negativen Margins oder absoluten Positionierungen arbeiten und das geht nicht immer gut.

Abgesehen davon, halte ich so ein Layout für das Web als ungeeignet, da es sich nicht der Schriftgröße anpassen kann.

Überschriften wie Menü und Content sollten nicht als Grafik eingebunden werden, da bei abgeschalteten Grafiken oder Screenreadern wichtige Informationen verloren gehen.

Die bessere Vorgehensweise wäre es, deinen Inhalt semantisch korrekt auszuzeichnen, Überschriften als <h1> bis <h6>, Menüs als <ul>, Listen als <ul>, <ol> oder <dl>, Text als <p> usw.

Erst danach kommt das Layout per CSS.
 
divs haben nichts mit Bildern zu tun.
Du vermischst Semantik mit Layout/Design.

Ansonsten schließe ich mich _Thor_ an. Was Du vor hast, wird so nicht funktionieren, auch nicht, wenn Du auf den Boden stampfst und dreimal wiederholst, dass die Site morgen fertig sein soll.

Mit dem was da ist, kann man nicht vernünftig arbeiten.
 
ich hab jetzt ne "not" lösung gemacht. nur wie bekomm cih jetzt die beiden Divs unten drunter immer passend unter die Punkte im Bild? (BITTE KEINE ANTWORTEN VON WEGEN DIVS^^)
 
Auf Deine Weise gar nicht.

Das Problem ist, dass Du oben mit Deinem Bild Layout definieren willst. Und unten machst Du das Layout dann wieder mit CSS (und mit Tabellen, das ist viel schlimmer als irgendwelche Antworten von wegen divs :-)).

Bei Verändern der Schriftgröße und/oder Viewport-Größe werden Deine Bereiche nicht mehr unter die entsprechenden Stellen in der Grafik sitzen. Das ist nicht möglich.

Du wirst Dein Bild bearbeiten und den Inhalt aus dem Bild entfernen müssen.
Das musst Du ja sowieso tun, weil wenn jemand keine Grafiken aktiviert hat (wie z.B. Suchmaschinen), dann sieht man die Überschriften sowieso nicht, zumal auch der Alternativtext zu dem Bild für die Katz ist.
Außerdem besteht kein inhaltlicher Zusammenhang zwischen den Überschriften im Bild und dem dazugehörigen Inhalt.

Du musst also am Ende zwei Bereiche haben, wo Du für jeden Bereich eine Überschrift definierst (<h1> ff.), als Überschrift-Text "menu" und "site content" verwendest und als Hintergrundbild diese Punkte einbaust.

Dann kann das ganze funktionieren.

Code:
<h1><img src="/images/Miss%20SelenaV5.jpg" alt="Miss-Selena.de - Your source for Selena Gomez" /></h1>
<div id="MenuColumn" style="float:left; width:10em; ...">
  <h2 style="background-image:url(punkte1.jpg); background-position:4em;">menu</h2>
  <p>Willkommen auf...</p>
  ...
</div>
<div id="ContentColumn" style="margin-left: 11em; ...">
  <h2 style="background-image:url(punkte2.jpg); background-position:7em;">site content</h2>
  <h3>Neues Design!</h3>
  ...
</div>
So sollte es funktionieren.

Übrigens...diese Mischung aus Deutsch und Englisch ist grauenvoll.
 
Zurück
Oben