Beiträge von MrMurphy

    Hallo

    Zitat

    flexbox und display:table waren ja alles falsche ansätze.

    Flexbox war schon der richtige Ansatz, die konntest es nur noch nicht richtig verwenden.

    Zitat

    gibt es zu dem thema ein tutorial, dass ich dass besser verstehe und später dann auch selbst bauen kann?

    Ich kenne leider kein gutes. In den meisten werden nur die Grundeigenschaften von Flexbox erklärt. Da werden dann mehrere gleichgroße flex-items oder flex-items mit genau dem selben Inhalt / Text angeordnet. Also viel Theorie, wenig Praxis.

    Zitat

    p.s. kann ich eigentlich sagen: z. b. "div 1" ist ein parent und "div 2" (kind) soll die gleiche höhe haben wie "div 1"? geht sowas auch?

    So wie ich deine Frage grade verstehe - nein. div 2 kann div 1 natürlich voll ausfüllen, aber das wirst du nicht meinen.

    Ich habe mal eine Seite mit meiner Flexbox-Linksammlung erstellt. Das ist für mich einfacher als alle Links einzeln hier ins Forum zu klatschen. Wenn du dich etwas in Flexbox reingearbeitet hast und des englischen nicht so mächtig bist, sind trotzdem viele der englischsprachigen Videos interessant, da meist der Quelltext und das Ergebnis gezeigt werden:

    Gruss

    MrMurphy

    Hallo

    Zitat

    Die Frage ist, kann ich denn innerhalb von 2 flex divs, eine solche Anordnung machen, oder muss ich jetzt mehrere display-flex divs untereinander anlegen?

    So wie ich deinen Text verstanden habe: weder - noch.

    Flexbox erstellt reine Eltern-Kinder-Beziehungen. Eltern = flex-container, Kinder = flex-items

    "2 flex-divs", also wahrscheinlich zwei flex-container, sind Geschwister und können nicht aufeinander reagieren.

    Mit "mehreren display-flex-divs", also mehreren flex-containern, meinst du wohl, dass der Quelltext zersplittert wird. Also in den ersten flex-container die beiden Überschriften und der erste Absatz. In den zweiten flex-container die beiden farblich hinterlegten Texte. Und so weiter. Damit könntest du zwar das von dir gewünschte Layout erreichen. Sachlich wäre der Quelltext aber totaler Unsinn - sowas geht gar nicht.

    Die Lösung ist einen flex-container zu erstellen. In den flex-container kommen für jede Spalte gleich viele div als flex-items. In die flex-items kommt dann der eigentliche Inhalt.

    In dem folgenden Beispiel ging es mir darum die Technik aufzuzeigen. Die Farben, Abstände, Rahmen, Schriften, Media Queries ... kannst / musst du dann deinen Vorstellungen anpassen.

    Das Beispiel ist für 4 flex-items in jeder Spalte ausgelegt. Weniger ist kein Problem, bei mehr muss das CSS erweitert werden.

    Korrektur: Das Beispiel funktioniert nur mit 4 flex-items in jeder Spalte. Bei weniger oder mehr muss das CSS angepasst / erweitert werden. Es können aber leere flex-items verwendet werden. Wenn dabei zwei "nebeneinanderstehende" (also zum Beispiel das 3. und das 7.) leer bleiben, werden sie nicht angezeigt.

    Bei width/height, padding, border, margin habe ich das Border-Box-Modell verwendet (box-sizing: border-box). Beim klassischen Content-Box-Modell müssen die Werte im CSS angepasst werden.

    Ich habe wie heutzutage üblich nur einen Klassennamen "zweispalten" verwendet und den Inhalt des flex-items mit Selektoren gestaltet. Den Klassennamen kannst du natürlich anpassen. Durch dieses Vorgehen wird der HTML-Quelltext übersichtlicher. Ein weiterer Vorteil ist, dass das CSS auch einfacher für andere Seiten verwendet werden kann.

    HTML:

    CSS:

    Ein Beispielquelltext für eine gesamte Seite:

    Und der Link zu einer Beispielseite zum direkten Ausprobieren:

    http://boratb.bplaced.net/index12.html

    Gruss

    MrMurphy

    Hallo

    Zitat

    Leider sieht das nicht so aus wie es sollte.

    Es wäre hilfreicher wenn du scheiben würdest wie es aussehen und funktionieren soll.

    Zitat

    Kann mir evtl. jemand einen Tipp geben vorauf man hierbei achten muss?

    Grundlagen von HTML und CSS lernen. Wenn du Bootstrap verwenden willst zusätzlich noch die Anwendung von Bootstrap.

    Außerdem werden offensichtlich CSS-Dateien eingebunden, die nicht zu Bootstrap gehören und die uns nicht vorliegen.

    Bislang können wir dich nur auf offensichtliche Fehler hinweisen.

    HTML
    <html lang="de"> 
    <head>

    Die beiden Zeilen sollten dierekt hinter dem Doctype stehen, also als Zeilen 2 und 3.

    Code
    p1 {

    Es gibt kein p1-Element.

    Code
    <div id="main"> 
    <div id="header">

    Bei Verwendung von HTML5 sind div-Container zwar nicht verboten. Die HTML-Regeln besagen aber, dass sie nur noch verwendet werden dürfen, wenn es keine geeigneteren beziehungsweise speziellere Container wie main, header, footer u.s.w. gibt.

    Code
    <table style="width: 80%;">

    Da die Tabelle keine Tabellendaten enthält wird sie hier sachlich falsch verwendet. Zugleich werden die Layoutmöglichkeiten massiv eingeschränkt, was grade bei Layouts für Smartphones und Tablets Nachteile hat und bestimmte Verhalten unmöglich macht.

    Code
    <div class="container">

    Die Klasse "container" ist bei Bootstrap nur die halbe Miete. Um ein responsive Design zu erlangen sind noch weitere Container und Klassen erforderlich, siehe auf dem folgenden Link unter "Raster System":

    http://holdirbootstrap.de/css/#grid

    Für das Javascript sehe ich auch keinen Sinn. Wenn Lösungen mit CSS oder JavaScript möglich sind, sollten die CSS-Lösungen bevorzugt werden.

    Gruss

    MrMurphy

    Hallo

    Zitat

    Kann ich nicht ganz nachvollziehen, warum Hover-Dropdown-Menus so verwerflich sein sollten.

    Weil sie Besuchern Informationen vorenthalten. Oder erstellst du gerne zeit- und arbeitsaufwändig Webseiten, die deine Besucher überhaupt nicht finden?

    Deshalb gehört es sich zumindest auf die Nachteile von bestimmen Lösungen, hier Dropdown-Menüs, hinzuweisen.

    Aber ich habe auch eindeutig geschrieben:

    Zitat

    Deine Webseite - deine Entscheidung.

    Mir steht es überhaupt nicht zu Dropdown-Menüs generell zu verbieten.

    Es würde mich aber freuen mal ein benutzerfreundliches Dropdown-Menü in der Praxis anzutreffen. Ich habe nämlich noch keines gefunden und selbst Dropdown-Menü-Befürworter haben die bislang vor mir verheimlicht. Darunter verstehe ich:

    1. Das Menü muss folgendermaßen bedienbar sein:
    a) mit der Mouse
    b) mit der Tastaur
    c) mit Touchscreens

    2. Es muss optisch hinreichend erkennbar sein welcher Link grade aktiv ist.

    3. Das Menü muss responsive und bei Fensterbreiten von 350px bis mindestens 1200px bedienbar sein, besser natürlich auch bei breiteren Fenstern.

    4. Das Menü muss auch ohne JavaScript funktionieren. Zumindest als einfaches Fallback.

    Es würde mich freuen wenn du mir eine Seite mit so einem Dropdown-Menü zeigen würdest.

    Gruss

    MrMurphy

    Hallo

    Zitat

    Das Skript erzeugt persönliche Daten (Briefe an Mitglieder eines Vereins) und das kann ich nicht in einem öffentlichen Forum zeigen.

    Du hast aber schon gelesen

    Zitat

    Die Inhalte kannst du anonymisieren.

    Es sollten halt nur alle HTML-Elemente vorkommen (z. B. table), die in der Praxis auch vorkommen und der Inhalt sollte einen ähnlichen Umfang haben.

    Dabei war es mir eigentlich schon peinlich extra darauf hinzuweisen.

    Zitat

    Das muss doch irgendwie möglich sein.

    Allgemein habe ich die Frage bereits beantwortet. Für eine konkrete Lösung benötigen wir konkrete Beispiele.

    Bei HTML / CSS spielen viele Faktoren zusammen. Es ist halt auch nervig korrekte Lösungen zu nennen und die Rückmeldung zu erhalten, die Lösung sei falsch und funktioniere nicht. Meist stellt sich dann heraus, das der Fragende einfach damit überfordert war, die Lösung in seine Seite zu integrieren.

    Gruss

    MrMurphy

    Hallo

    Du musst dich halt entscheiden:

    Machst du die Seite für dich oder für deine Besucher?

    Deine Webseite - deine Entscheidung.

    Zitat

    aber diese sehen doch viel schöner aus

    Findest du. Deinen Besuchern ist das egal.

    Zitat

    benutzt Herr Pratzner auf seiner Seite doch auch mehrere dropdownmenus mit dem Pfeil

    Nur weil viele Webseitenersteller Unsinn verzapfen ist der weder sinnvoll noch benutzerfreundlich. Schlechte Beispiele finden sich im Web zu Millionen.

    Zitat

    Ich denke es kommt auf die Darstellung an.

    Genau - du. Deine Besucher freuen sich eher an Übersichtlichkeit und einfacher, klar strukturierter Bedienung.

    Zitat

    Wie soll man denn die Unterpunkte einer Navigation sonst machen ?

    Das hängt von deiner Website ab. Aus wie vielen Unterseiten besteht die? Welche Informationen können zusammengefasst werden? Und noch so eniges mehr.

    Zitat

    Es ist doch oft unpassend alle Unterpunkte auf einer Seite zu erstellen.

    Dann werden sie halt verteilt.

    Zitat

    Zu wenig platz,

    Auf einer Webseite? Webseiten haben keine Größen, die sind theoretisch unendlich groß.

    Gruss

    MrMurphy

    Hallo

    Zitat

    Wenn ihr irgendwelche Verbesserungen sieht,...

    Ja klar.

    Verzichte auf Dropdown-Menüs.

    Zunächst sind die extrem benutzerunfreundlich. Darauf können alle Besucher verzichten.

    Zusätzlich sind die auf Touchscreens in der Regel nicht zu benutzen, da die keinen Hover-Effekt kennen. Viele Seiten sind von Touchscreen-Benutzern bei Dropdown-Menüs überhaupt nicht zu erreichen. Und Touchscreen-Geräte sind bei Usern längst in der Mehrheit.

    Grundsatz: Alle versteckten Inhalte sind benutzerunfreunlich und sollten (und können) vermieden werden. Es nervt, wenn die erst sichtbar gemacht werden müssen, viele User erkennen versteckte Inhalte überhaupt nicht und hover-Effekte funktionieren auf Touchscreen-Geräte nicht.

    Gruss

    MrMurphy

    Hallo

    Ein Link zu deiner Seite wäre besser als die paar Quellcodeschnipsel.

    Insgesamt ist die Unterstützung der Browser für page-break leider noch sehr durchwachsen.

    http://caniuse.com/#search=page-break

    In der Praxis sollte diese CSS-Anweisung also nicht verwendet werden. Und du solltest deine Seite in möglichst vielen Browsern testen.

    ID dürfen auf einer Webseite nur einmal verwendet werden. In der Regel hat die Mehrfachverwendung zwar keine negativen Auswirkungen, einige Browser können sich daran aber stören und Layoutprobleme bereiten.

    Gruss

    MrMurphy

    Hallo

    Ohne den HTML-Quelltext werden wir dir kaum weiterhelfen können. Am besten wäre ein Link zu der Seite.

    Mein erster Verdacht: Die Fenstergröße der Browser ist unterschiedlich und / oder der Zoomfaktor ist unterschiedlich.

    Gruss

    MrMurphy
    Hallo

    Ich habe mir die Seite angeschaut.

    Die wird bei mir in allen Browsern (Firefox, IE11, Chrome, Opera) gleich angezeigt. Wobei ich den Safari nicht habe.

    Der Inhalt hat eine feste Breite. Wie schon vermutet können unterschiedliche Abstände zum Fensterrand deshalb nur von unterschiedlichen Fensterbreiten oder Zoomfaktoren der Browser stammen.

    Insgesamt sollten aber trotzdem die Fehler im Quelltext beseitigt werden. Der Validator

    https://validator.w3.org/

    zeigt aktuell über 160 Fehler an. Darunter auch heftige wie nicht geschlossene Elemente.

    Code
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <!DOCTYPE html>

    Die meisten Browser erkennen zudem den Doctype nicht, wenn er nicht in der ersten Zeile steht. Sie schalten dann in den Quirks-Modus oder wählen zur Anzeige eine ältere HTML-Version. Dadurch können unterschiedlichen Anzeigen entstehen.

    Zudem sollte auf in HTML5 gestrichene, und damit verbotene, Elemente (zum Beispiel center) und Attribute (zum Beispiel align=center) verzichtet werden.

    Die meisten Browser sind zwar abwärtskompatibel und zeigen die Seite trotzdem korrekt an. Dass muss aber nicht sein und kann sich in Zukunft auch mal ändern.

    Gruss

    MrMurphy

    Hallo

    Zitat

    Geht sowas mit CSS3 ?

    Das Aussehen und das Layout - Ja.

    Die dahinterstehende Technik erfordert aber Programme wie JavaScript und PHP sowie eine Datenbank. Mit HTML5 und CSS kannst du also eine leere Hülle erstellen.

    Gruss

    MrMurphy

    Hallo

    Wenn bei linear-gradient zwei Farben angegeben werden laufen sie weich ineinander über.

    Bei

    transparent, transparent 30px, white 30px, ...

    sind hingegen zunächst die ersten 30px transparent, danach erfolgt ein harter Wechsel zur weißen Farbe.

    Zitat

    wenn man nur eins angibt dann ist alles weg

    Dann hast du wahrscheinlich die CSS-Anweisung kaputt gemacht, indem du entweder zuviel oder zuwenig gelöscht hast.

    Gruss

    MrMurphy

    Hallo

    Jetzt lichtet sich der Nebel.

    Als grundsätzliches Problem steht über allem: Kein funktionierendes Layout ohne sauberen korrekten HTML-Quellcode.

    Darüber habe ich bereits einiges geschrieben und dir konkrete Beispiele genannt.

    Konkret zu deinen Problemen: Du hast drei Baustellen.

    1. Breite auf 100% bringen

    main benötigt zunächst eine Breite von 100% und die Anweisung display: block. Ohne CSS-Angaben ist main bereits ein Block-Element und hat eine Breite von 100%.

    Zusätzlich hat dein main ein seitliches padding von 120px (2 x 60px) und ein seitliches border von 2px (2 x 1px). Da du als Box-Modell die Vorgabe (Content-Modell) belassen hast werden die 122px der Breite hinzugefügt. Das main-Element ist also 100% + 122px breit und kann damit nicht mehr in das Fenster passen. Du musst also entweder ein anderes Box-Modell wählen oder die Breite so ändern, dass width, padding und border sowie gegebenenfalls margin zusammen nicht mehr als 100% ergeben.

    2. Elemente nebeneinander anordnen

    Zum Nebeneinanderstellen der beiden inneren Container hast du dich für float entschieden, ohne dich über die korrekte Anwendung und damit die Nebenwirkungen zu informieren.

    Der wichtigste Grundsatz lautet: Kein float ohne clear.

    Wobei es verschiedene Möglichkeiten des Clearens gibt, das ist eine Wissenschaft für sich. Informationen dazu findest du zum Beispiel unter

    http://www.andreas-kalt.de/webdesign/tutorials/float-theorie

    Für deine Seite ist dabei ein sogenannter Clearfix sinnvoll. Wobei das wiederum ein Oberbegriff für verschiedene Lösungen ist.

    Eine technisch einwandfreie und bewährte Anweisung lautet:

    Code
    .clearfix::before,
          .clearfix::after {
             content: " "; /*Leerstelle ist wichtig*/
             display: table;
          }
          .clearfix::after {
             clear: both;
          }

    Das kannst du deinem CSS hinzufügen und dem main-Element die Klasse clearfix zuweisen.

    Auf großen Bildschirmen sollten die beiden Container jetzt nebeneinander angezeigt werden. Wobei dein fröhliches hin- und herfloaten (left, right) zusätzliche Probleme erzeugen kann, auf die ich aber nicht weiter eingehe, das ist nur ein Hinweis für die Zukunft.

    3. Breitenangaben mit unterschiedlichen Einheiten

    Eher wird das Layout dir in den Rücken fallen, wenn du das Browser-Fenster schmaler ziehst. Dann rutschen die beiden Container nämlich relativ schnell untereinander. Und zwar bei einem Zoom von 100% bei etwa 710px Fensterbreite.

    Das wiederum liegt an deinen Breitenangaben von width in Prozent und margin in px. Sobald die in Summe breiter als 100 Prozent wird passen die beiden Container nicht mehr nebeneinander. Das ähnelt also deinem ersten Problem.

    Gruss

    MrMurphy

    Edith: Ich habe meinen Beitrag nachträglich ergänzt.

    Hallo

    Zitat

    Oder MUSS das so sein?

    Nein.

    Zitat

    Kennt jemand von hier das Problem?

    Darüber gab es meiner Erinnerung nach bereits eine Diskussion. Das Problem wurde erkannt, aber die Lösung nicht in das Beispiel eingebaut.

    Zitat

    Wurde es gelöst?

    Ja.

    Zitat


    Was mir aufgefallen ist, mit dem setzen des folgenden CSS-Befehls - weit unten - wird die Über-Breite ausgelöst:

    Code
    #bereichlogo
    {
    width: 100%;
    }

    Nicht so ganz. header und section sind beide für sich zu breit. Das liegt in beiden Fällen an der Ignorierung des Box-Modells.

    Die einfachste Lösung ist das Box-Modell zu ändern. Dazu kann die Anweisung

    Code
    * {
    	margin: 0;
    	padding: 0;
    	font-family: Arial, sans-serif;
    }

    ergänzt werden zu

    Code
    * {
    	margin: 0;
    	padding: 0;
    	font-family: Arial, sans-serif;
            box-sizing: border-box;
    }

    Nebeninformation:

    margin, padding und font-family haben im *-Selektor eigentlich nichts verloren. Das war vor 15 Jahren mal Up-to-Date, gilt aber bereits seit mehreren Jahren als veraltet.

    Gruss

    MrMurphy

    Hallo

    Zitat

    Hast du noch eine Lösung?

    Sobald ich dein Problem kenne - ja.

    Bislang hast du nur geschrieben, dass der main-Bereich rechts über einen (offensichtlich gar nicht vorhandenen) header-Bereich herausragt.

    Was willst du erreichen? Soll der main-Bereich zum Beispiel 80 Prozent breit und zentriert sein, was ich allmählich vermute?

    Dann gib ihm eine Breite von 80%, ein display: block und seitliche margin: auto. Also zum Beispiel

    Code
    main {
        display: block;
        width: 80%;
        margin: 1rem auto;
    }

    Ansonsten musst du dein Problem etwas verständlicher beschreiben.

    Gruss

    MrMurphy

    Hallo

    Bitte zukünftig keine Texte als Grafiken mehr. Für uns ist es leichter wenn wir den Quelltext zum Testen kopieren und bearbeiten können.

    Eventuell hast du dich nur vertippt. Auf dem Bild lese ich

    Code
    img scr

    Korrekt ist aber

    Code
    img src

    Gruss

    MrMurphy