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

zweispaltiges Testlayout

Xeno

Mitglied
Liebe Community

Ich habe zu meiner Webseite Michael Ritter ein zweispaltiges Testlayout erstellt, da ich die Webseite ausbauen möchte. Dieses Testlayout gibt's hier Michael Ritter . Ich möchte nun fragen, ob das CSS so tragfähig ist. Valide ist es, und der Effekt entspricht dem Gewünschten. Manches in meinem Code finde ich etwas eigenartig bzw. funktioniert eher zu meiner Verwunderung, zum Beispiel die komischerweise nötige Angabe
Code:
margin-top: 38px;
zu #rechts. Hier der Code:

Code:
*                        { 

                        margin:0; 

                        padding:0;

                        }



html                    {

                        background-color:#B4DC00;

                        height:100%; 

                        }

                                

body                     { 

                        background-color:#FFFFFF; 

                        font-family:Verdana, sans-serif;

                        margin:20px auto; 

                        width:960px;  

                        min-height:95%; 

                                        }                            

                                    

p                       { 

                        margin:0 20px 20px 20px;

                        padding-bottom:10px;  

                        }



table                    { 

                        margin:0 20px 20px 20px;

                        border:none;

                        border-collapse:collapse;   

                        }

            

td                        {

                        padding:4px;

                        padding-right:10px; 

                        text-align:left;  

                        }

                        

th                        {

                        text-align:left;

                        padding:4px; 

                        }



h1, h2, h3             { 

                        margin:0 20px 10px 20px; 

                                        }

                                

h1                     { 

                        font-size:120%; 

                                        }

                                

h2                     { 

                        font-size: 115%; 

                                        }

                                

h3                     { 

                        font-size: 110%; 

                                        }

                                        

ul                        {    

                        padding-bottom:20px;                         

                        }

                                

a, span                 { 

                        text-decoration:none; 

                                        }

                                        

img                    {

                        text-align:center;

                        border:0;        

                                        }

                                        

a:link                 { 

                        color:#0000FF; 

                                        }

                                

a:visited             { 

                        color:#FF4B4B; 

                                        }

                                

a:hover                 { color:#FF0000; 

                                        }

                                

span                     { 

                        color:#0000FF; 

                                        }

                                

.linkliste li         { 

                        margin:0 0 0 37.5px; 

                                        }

                                        

.linkliste             {

                        margin:0 0 20px 0;

                        }

                                        


#navi                 { 

                        list-style-type:none;

                        padding:0;   

                        float:left; 

                        width:100%;  

                        background-color:#EAF7A8;

                        margin:0 0 15px 0;

                        border-radius:10px;

                        box-shadow:3px 3px 8px #777777;

                                        }

                                

#navi li             {

                        float:left;                        

                        position:relative;  

                        display:block;

                        line-height:1.5;  

                        width:110px;

                        text-align:center;

                        font-size:15px;

                                        }



#navi span             { 

                        background-color:#FFFF00;

                                        }

                                                                                            

#navi li a, span     { 

                        padding:10px;

                        display:block; 

                        background-color:#EAF7A8;

                        border-radius:10px;    

                                        }



#navi li a:hover     { 

                        color:#FF0000;

                        background-color:#FFD700;

                        border-radius:0;   

                                        }

                                        

#navi li:first-child a:hover {

                        border-radius:10px 0 0 10px;

                        }

                                        

#navi li ul         { 

                        position:absolute; 

                        left:-999999px; 

                        top:auto;

                                        }

                                        

#navi li:hover ul { 

                        left:0; 

                                        }

                                        

#navi li ul li     { 

                        display:block;

                        text-align:left; 

                        width:100%;

                        font-size:11.5px;

                        border-radius:0;

                                        }                                        

                                        

#navi li ul li a    {

                        border-radius:0;     

                        }

                        

#navi li ul li:last-child a {

                        border-radius:0 0 10px 10px;

                        }

                        

#navi li ul li:first-child a:hover {

                        border-radius:0;

                        }                                

                                        

#hauptbild            {

                        float:left;

                        margin-bottom:5px;  

                        }                                        

                                

#anfang                {

                        margin-bottom:20px;

                        font-size:200%;    

                        }

                        
                                
#header                {

                        padding:20px 0 20px 0;

                        margin-bottom:10px;                         

                        background-color:#B4DC00;

                        }


#inhalt                {                
                         margin-bottom: 10px;
                         background-color:#B4DC00;
                        }                
        
#links                 {      
                         width:700px;
                         min-height:960px;
                         background-color:#FFFFFF; 
                         float:left;
                        }

#rechts                { 
                        min-height:960px;                          
                         background:#F6FF68;                
                         margin-left:700px;
                         margin-top: 38px;
                        }

#rechts:after         {  
                         content:"";
                         display:block;
                         clear:both;
                        }

#footer                {

                        padding:10px 0 0 0;

                        background-color:#B4DC00;

                        }

                    

#footer p            {

                        background-color:#EAF7A8;

                        height: 35px;

                        margin:0 0 20px 0;

                        padding-left: 20px;

                        line-height:280%; 

                        font-size:15px;

                        border-radius:10px;

                        box-shadow:3px 3px 8px #777777;

                        }


Wird das was? Ich danke für das kritische Feedback.

Lg Xeno
 
Werbung:
Wo genau das Margin herkommt, da bin ich grad überfragt.

Aber dein Aufbau ist ja folgender:

Code:
<div id="inhalt">
<div id="header"></div>
<div id="links"></div>
<div id="rechts"></div>
<div id="footer"></div>
</div>

Du umschließt den ganzen Ihnalt der Seite einschließlich header und footer. Logischer wäre für mich folgender Aufbau.

Code:
<div id="header"></div>
<div id="inhalt">
<div id="links"></div>
<div id="rechts"></div>
</div>
<div id="footer"></div>


Durch den Inhalt Tag kannst du dann das Margin von div#rechts und div#links schön abstimmen.
 
Zuletzt bearbeitet:
Wo genau das Margin herkommt, da bin ich grad überfragt.

Schon gut. Ich habe das nur zur Diskussion gestellt, weil es irgendwie nicht ganz koscher sein kann (finde ich), ein völlig willkürliches margin-top von 38px für nur die rechte Spalte verwenden zu müssen. Lässt man's weg oder verwendet ein kleineres, dann verrutscht nämlich die rechte Spalte kurios nach oben Richtung Navigation.

Aber dein Aufbau ist ja folgender:

<div id="inhalt"><div id="header">

<div id="links">

<div id="rechts">

<div id="footer">


</div>

Du umschließt den ganzen Ihnalt der Seite einschließlich header und footer. Logischer wäre für mich folgender Aufbau.

<div id="header">
<div id="inhalt">
<div id="links">


<div id="rechts">
<div id="inhalt">
<div id="footer">



</div>


Durch den Inhalt Tag kannst du dann das Margin von div#rechts und div#links schön abstimmen.


Interessanter Einwand, dass muss ich mal nächstens gegentesten (wohl erst morgen).

Lg Xeno
 
Werbung:
Ja, du bist ja schnell mit der Antwort, ich hab oben noch mal die Divs richtig geschlossen. und auch wo das Inhalt Div wieder geschlossen wird. In deinem Zitat ist es noch etwas unausgereift. (hihi)
 
Zuletzt bearbeitet:
Noch ein Tip, beim Browser Firefox gibts ein Add-on welches Firebug heißt, da kann man schön Margin usw. ein- und ausblenden, um zu sehen, wie sich Div-Container und Tags verhalten.
 
Hallo,

also das margin-top:38px; kommt da her das im header mit padding: 20px 0; arbeitest.

Zu deinem 2Spaltigen, das ist so absolut nichts.
ersten machst die Seite extrem lang wenn nur 1 Satz schreibst und wenn viel schreibst past nichts mehr.

Hast aber schon bei der alten version ein fehler drin den erst beheben soltest bevor das zweispaltige machts.
body hat bei dir eine breite und wird dann per margin zentriert. das ist unlogisch, mein bildschirm oder browserfenster schrumpft nicht nur weil du möchtest das der body width: 960px; sein soll :O)
mach ein <div id="wrapper"> um alles und mach das width: 960px; und margin: 20px auto;.
damit braucht das #inhalt nicht mehr aus dem neuen.


Cheffchen
 
Werbung:
Ja, du bist ja schnell mit der Antwort, ich hab oben noch mal die Divs richtig geschlossen. und auch wo das Inhalt Div wieder geschlossen wird. In deinem Zitat ist es noch etwas unausgereift. (hihi)

Lieber Zejo

Aufgrund des Postings von Cheffchen weiter unten möchte ich mich zuerst um die Bereingung des bestehenden (einspaltigen) Layouts kümmern. Ich komme später auf Dein Feedback zurück.

Lg Xeno
 
Noch ein Tip, beim Browser Firefox gibts ein Add-on welches Firebug heißt, da kann man schön Margin usw. ein- und ausblenden, um zu sehen, wie sich Div-Container und Tags verhalten.

Lieber Zejo

Richtig, ich benutze Firebug schon lange. Ich konnte schon viele Fehler damnit ausbügeln. Hier ist es etwas seltsamer als sonst, aber um diesen Nebenschauplatz kümmere ich mich später (siehe obiges Posting).

Lg Xeno
 
Hallo,...

Hast aber schon bei der alten version ein fehler drin den erst beheben soltest bevor das zweispaltige machts.
body hat bei dir eine breite und wird dann per margin zentriert. das ist unlogisch, mein bildschirm oder browserfenster schrumpft nicht nur weil du möchtest das der body width: 960px; sein soll :O)
mach ein <div id="wrapper"> um alles und mach das width: 960px; und margin: 20px auto;.

Ich habe es (hoffentlich) so geflickt, wie Du vorschlägst, nämlich ein <div> mit der id "wrapper" um alles gelegt und dem das CSS zugewiesen, das vorher <body> hatte. Tatsächlich funktioniert so das Layout weiterhin. Der Test ist hier Michael Ritter

Ich habe aber ehrlich gesagt nicht ganz verstanden, was denn dadurch besser wird. Ich hätte spontan gesagt, dass sich nicht <body> auf den Viewport bezieht, sondern <html>. Dann würde es ja eigentlich keine Rolle spielen, ob jetzt <body> oder ein alles im <body> umfassendes <div> die CSS-Anweisungen bekommt. Oder ist es aus anderen Gründen nicht so opportun <body> solche CSS-Anweisungen zu geben? Wäre schon möglich.

Den letzten Halbsatz verstehe ich nicht:

damit braucht das #inhalt nicht mehr aus dem neuen.


Wenn Du magst, kannst Du mir gerne nochmals kurz Feedback zum Thema "Korrektur des bestehenden Layouts" geben. Danach werde ich es für alle Unterseiten so umbauen. Erst danach steuere ich dann wieder Richtung "zweispaltiges Layout".

Danke wie immer für Deine Hilfe!

Lg Xeno
 
Werbung:
Ich habe jetzt wie vorgeschlagen <div id="wrapper> in allen Seiten eingeführt und die CSS-Anweisung von <body> darauf bezogen. Es ist soweit ersichtlich alles in Ordnung ( Michael Ritter ).

Auch das zweispaltige Testlayout, das am Anfang des Freds steht, habe ich so angepasst ( Michael Ritter ).

Ich wende mich jetzt als Nächstes dem kuriosen Abstandsproblem zu, das ich mit margin-top: 38px geflickt habe.

Lg Xeno
 
Hallo,

also zu dem body:
Optisch hat sich nichts geändert da die Browser mit denken oder es einfach nicht schaffen mein bildschirm auf 960px zu schrumpfen :O)
Body eine breite geben führt bei anderen sachen zu fehlverhalten. Wenn zb ein zoom effekt mal nutzt, viele orientieren sich am body und gehen davon aus das dies ganzer view ist, was es bei dir ja nicht war und so falsch zentriert wird oder effekte flasch positioniert werden.

zu dem anderen fehler:
hast jetzt #wrapper background-color: #FFFFFF;, das geht nicht das gehört zum #content, #wrapper ist nur für die mittige ausrichtung da und sonst nichts.
Dann gebe mal dein #header ein höhe, vielleicht height: 60px; und hau das padding komplett raus. verzichte am besten immer auf padding, wenn es geht, macht nur ärger zum anfang.
Damit dürften die groben fehler raus sein ohne jetzt zu genauch geschaut zu haben.

machst das alles hart, ohne CMS? dann sind ja solche kleinen sachen doch echt umständlich aber wenigstens machst das vernünftig mit css.

Cheffchen
 
Hallo,

also zu dem body:
Optisch hat sich nichts geändert da die Browser mit denken oder es einfach nicht schaffen mein bildschirm auf 960px zu schrumpfen :O)
Body eine breite geben führt bei anderen sachen zu fehlverhalten. Wenn zb ein zoom effekt mal nutzt, viele orientieren sich am body und gehen davon aus das dies ganzer view ist, was es bei dir ja nicht war und so falsch zentriert wird oder effekte flasch positioniert werden.

Einleuchtend. Kam mir immer etwas komisch vor, das mit den CSS-Zuweisungen an <body>. Valide ist es allerdings, und es kam ja auch so ungefähr das heraus, was ich wollte. Aber irgendwie kann es ja nicht sein, dass die professionell programmierten Seiten alle "zufälligerweise" mit einem Wrapper gemacht sind, hat vermutlich eben seine Gründe! Danke für den Input.

Ich bearbeite gleich anschliessend Deine weiteren Inputs. Nur noch kurz zum komischen 38-Pixel-Abstand Problem (Du musst mir das nicht etwa ausanalysieren, ich zeig's Dir nur, falls es Dich interessiert, und ich hab's auch gerade scharf geschaltet):

Testlayout mit der komischen CSS-Angabe "margin-top: 38px" zu #rechts, optisch richtig: Michael Ritter

Testlayout ohne diese komische Angabe mit bizarrem Darstellungsfehler der rechten Spalte: Michael Ritter

Ich hab' auch mit Firebug nicht herausgefunden, wie so etwas zustandekommt. Tatsache ist, dass im zweiten Fall die rechte Spalte 988px hoch ist statt 960, ohne dass es dafür einen plausiblen Grund gibt (bzw. ohne dass die "Inhaltsmenge" das erzwingt). Auch sehr interessant: Weist man der rechten Spalte eine fixe Hight von 960px zu (habe ich aber nur im Firebug gemacht, nicht scharf geschaltet), bricht die Hölle los: Dann werden die 28px nämlich unten abgeschnitten, und ob es der Faxen nicht genug wäre, verschiebt sich auch noch die linke Spalte in den Footer hinein! Mein vorläufiger Verdacht: Das von mir nicht ganz bis zur letzten Konsequenz verstandene #rechts:after macht diese Faxen. Ich muss bei Zeit mal nachlesen, was dieses Pseudoelement eigentlich ganz genau macht. Auch die Anweisung "content:"" ist mir nicht restlos geheuer.

Lg Xeno
 
Werbung:
zu dem anderen fehler:
hast jetzt #wrapper background-color: #FFFFFF;, das geht nicht das gehört zum #content, #wrapper ist nur für die mittige ausrichtung da und sonst nichts.

Soweit einverstanden, aber das führt zum unerwünschten optischen Effekt, dass die Navi nicht mehr per Hintergrundfarbe hellgrün vom Rest abgetrennt ist:

Michael Ritter

Da zudem noch die linke Spalte weissen Hintergrund hat wie (jetzt) der #inhalt, sieht das ziemlich doof aus. Müsste man #content nur um #links und #rechts herum machen, nicht auch noch um #header herum?

Lg Xeno
 
Hallo,

machst das alles hart, ohne CMS?

Ja. Nur die Harten kommen in den Garten. Spass beiseite: Ich mach's nicht gerade auf Notepad, aber fast (Bluefish, ein Editor mit Syntax Highlightening). Der Grund ist, dass ich mit einem CMS eh nix lerne.

dann sind ja solche kleinen sachen doch echt umständlich

Ja. Zwingt aber auch zum Überdecken von schnell mal nicht mehr brauchbaren Lösungen. Den Header inkludiere ich mit PHP. Du kannst Dir sicher vage vorstellen, wie ich herumgewütet habe, bis ich das begriff!

aber wenigstens machst das vernünftig mit css.

Ich nehm' das als Kompliment.

Lg Xeno
 
Hallo,

mach mei einfach bei deiner letzten version in #header ein
rein. Damit funzt zumindest der inhalt.

Das zweispaltige selber ist so eine sache in css. so wie das jetzt hast kann es zu problemen kommen wenn zuviel inhalt hast.
In css macht mann das teilweise nur optisch und da zu nimmst dein #inhalt und gibst dem ein hintergrundbild das zb 1px hoch ist und 960px breit. 700px weiß und der rest 260px gelb.
Dein links und rechts löscht die hintergrundfarbe und schon hast 2 spalten und kannst die mindest höhe löschen oder geringer mahen.

Cheffchen
 
Werbung:
Wo genau das Margin herkommt, da bin ich grad überfragt.

Aber dein Aufbau ist ja folgender:

Code:
<div id="inhalt">
<div id="header"></div>
<div id="links"></div>
<div id="rechts"></div>
<div id="footer"></div>
</div>

Du umschließt den ganzen Ihnalt der Seite einschließlich header und footer. Logischer wäre für mich folgender Aufbau.

Code:
<div id="header"></div>
<div id="inhalt">
<div id="links"></div>
<div id="rechts"></div>
</div>
<div id="footer"></div>


Durch den Inhalt Tag kannst du dann das Margin von div#rechts und div#links schön abstimmen.

Hallo Zejo

Ich habe jetzt vereinfacht folgenden Aufbau:

HTML:
<div id="wrapper">
<div id="header"> </div>
<div id="inhalt">
<div id="links"> </div>
<div id="rechts" </div>
</div>
<div id="footer" </div>
</div>

Wenn ich es richtig sehe, entspricht das Deinem Vorschlag, ausser dass ich auf Rat von Cheffchen noch einen Wrapper um alles (inkl. Header und Footer) geschlossen habe.

Entspricht das Deiner Idee?

Scharf geschaltet ist es hier: Michael Ritter

Liebe Grüsse

Xeno
 
Hallo,

mach mei einfach bei deiner letzten version in #header ein rein. Damit funzt zumindest der inhalt.

Ja richtig, und zudem löste sich auch noch das 38px-Problem in Luft auf. Ich habe dann noch eine margin beim header gelösch, jetzt sieht's so aus:

Michael Ritter

Echt cool, danke!

Jetzt kann ich mich noch um Grundsätzlichesw zum zweispaltigen Layout kümmern. Ich schaue mir gerade ein Tutorial dazu an bei Youtube von htmlworld ( HTML & CSS Tutorial: moderne Webseite erstellen mit CSS | deutsch - YouTube ). Der Mensch dort weist übrigens <body> frischfröhlich eine Hintergrundfarbe zu... Aber ich bin mir sicher, dass Du da mehr drauf hast. Ich werde nicht einfach alles so machen wie x ein Tutorial vorschlägt, sondern immer durchtesten und recherchieren.

Lg X.
 
Hallo,

also erst mal danke und schau dir bloss nicht das video, wenn schon hast trink ganz viel das dies gleich wieder vergisst.

Es gibt 2 Versionen das 2Spaltig zu machen.
1. man weiß zu 100% das immer ein Spalte Länger ist
2. man weiß es halt nicht :O)

Ich würde das 2 nehmen.
verschiebe dein #inhalt vor #links und ende nach #rechts, so hast den inhalt umschlossen.
Optisch dürfte sich nichts geändert haben.
Jetzt gibt #inhalt nur ein hintergrund bild das sich senkrecht wiederholt 1px hoch 960breit wo bei linke 600px weiß und die rechten 260px gelb sind.
jetzt noch von #links und #rechts die hintergrundfarbe löschen und die min-height: 960px; auch tiefe machen auf max 400px, mehr macht doch kein sind.

Fertig

Cheffchen
 
Werbung:
Hallo,

also erst mal danke und schau dir bloss nicht das video, wenn schon hast trink ganz viel das dies gleich wieder vergisst.

Ja leider richtig. Dort wird echt viel Käse erzählt und die Konzentration aufs Wichtige fehlt völlig, dafür Ausführungen welche Browserpräfixe man einsetzen soll für abgerundete Ecken... Unbedingt verpassen, das Ding.

Es gibt 2 Versionen das 2Spaltig zu machen.
1. man weiß zu 100% das immer ein Spalte Länger ist
2. man weiß es halt nicht :O)

Ich würde das 2 nehmen.

Ja, ich auch.

verschiebe dein #inhalt vor #links und ende nach #rechts, so hast den inhalt umschlossen.
Optisch dürfte sich nichts geändert haben.

Bis hierher klar (Resultat: Michael Ritter ). Der #inhalt hatte (wohl eher versehentlich) auch noch #footer eingeschlossen.

Jetzt gibt #inhalt nur ein hintergrund bild das sich senkrecht wiederholt 1px hoch 960breit wo bei linke 600px weiß und die rechten 260px gelb sind.
jetzt noch von #links und #rechts die hintergrundfarbe löschen und die min-height: 960px; auch tiefe machen auf max 400px, mehr macht doch kein sind.

Fertig

Cheffchen

Ok, das ist die Faux-Columns-Lösung, oder? Ich baue die (vielleicht erst morgen) gerne nach.

Lg Xeno
 
Lieber Cheffchen

Voilà:

http://www.michaelritter.ch/indextest6.php

Es funktioniert einwandfrei.

Es ist übrigens richtig, dass die frühere Lösung (ohne faux columns) nicht richtig funktioniert. Das Layou kollabriert, sobald nur genau eine Spalte eine Länge über der min-height hat, weil dann die andere nur die Höhe von min-height annimmt. Das erfordert ein (theoretisch unendlich) groisses min-height, was natürlich zu unsinnger Scrollerei führt. Oder so ähnlich. Jedenfalls ist es keine tragfähige Lösung, wie Du richtig erkannt hast.

Eine rein CSS-basierte Lösung ohne Verwendung einer Hintergrundgrafik gibt es offenbar nicht.

Lg Xeno
 
Zurück
Oben