Beiträge von Sempervivum

    Das Skript macht nur das was hinein programmiert ist und an diesen Fall hatte ich nicht gedacht. Lässt sich aber sehr leicht hinzu fügen:

    In der Console getestet auf miflo.de und hat dort funktioniert.

    Wie Du jetzt miflo.de hast, ist genau so wie ich es verstanden hatte und wie ich es auch auf dieser Musterseite gesehen hatte, die Du ganz am Anfang gepostet hattest: #welcome überdeckt das Bild beim Scrollen aber verschwindet hinter der Navigation mit dem Logo links. Da fehlt jetzt nur noch das Logo über #welcome. Es sei denn, das Verhalten beim Scrollen, das Du dir vorstellt, ist ein anderes.

    PS: Jetzt dem Bild ein position:fixed geben und einen negativen z-index, damit es beim Scrollen vom Container #welcome überdeckt wird:

    Code
    .bild {
        z-index: -1;
        position: fixed;
    }

    Aber damit das Bild vor dem Scrollen sichtbar ist, musst Du dem #welcome noch ein margin-top geben:

    Code
    #welcome {
        height: 100vh;
        background-color: #b1d4e0;
        margin-top: 360px;
    }

    Dann funktioniert das schon in etwa. Fehlt nur noch das position:sticky für den Header.

    Die gängigen Kandidaten:

    CSS Layout - The position Property
    W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript,…
    www.w3schools.com

    An dem Beispiel für "sticky" kannst Du sehr gut erkennen, wie es funktioniert.

    position: sticky; | CSS-Tricks
    Better position: sticky; support is on the horizon. WebKit dropped in 2013, Firefox in 2014, and now Blink in (probably) 2016.
    css-tricks.com

    Ich habe aber auf die Schnelle keine Quelle gefunden, die einen ganz wichtigen Aspekt heraus stellt: Durch "sticky" Positionierung wird ein Element nicht aus dem Fluss genommen, d. h. die Elemente danach verschwinden nicht wie bei "fixed" darunter. Sondern erst beim Scrollen.

    Ich meinte, dass Du das Bild aus dem Header löschst und außerhalb darunter anordnest, also so:

    Und jetzt den Header sticky und das Bild fixed positionieren.

    Die Seite lässt sich nicht scrollen weil für html overflow: hidden; gesetzt ist. Ein Überbleibsel aus einem Onepager?

    BTW, es fehlt das öffnende <html>.

    position: fixed; verwendest Du ja schon für die Nav. Mach dich auch mit postition: sticky; vertraut. Den Header sticky machen und das Bild heraus ziehen und darunter anordnen. Dann das Bild fixed positionieren. Für den Content darunter wirst Du ein margin-top brauchen, damit er sich nicht mit dem Bild überlappt. Und dann das Bild mit einem negativen z-index versehen, so dass es vom Content überdeckt wird.

    Versuche dieses, so explodiert das Bild von der Mitte aus und verschwindet, wenn man drauf klickt:

    ... hier eine einfache Lösung mit Javascript und Klick. Das ist noch stark verbesserungsfähig, denn so verschwindet das Bild an seiner ursprünglichen Position und die anderen verschieben sich.

    Das Geflacker wundert mich nicht, es ist so zu erklären:

    Wenn das Bild vergrößert wird, bewegt es sich auch in die Mitte und dann liegt die Maus nicht mehr drauf --> :hover trifft nicht mehr zu und das Bild wird wieder kleiner usw.

    Ein typisches Problem bei Hover-Effekten. Es gibt noch einen anderen Nachteil beim Hover: Heute ist die Mehrzahl der Benutzer mit Touch-Geräten unterwegs und dabei gibt es kein Hover. Daher empfehle ich, statt des :hover in CSS das Klick-Event in Javascript zu verwenden. Dann wird das Bild stabil an seiner Position stehen bleiben bis ein Close-Button gedrückt wird oder außerhalb des Bildes geklickt wird, z. B.

    Ein Bild kannst Du so zentrieren:

    Ungetestet, aber so habe ich es schon häufig gemacht.

    Dies ist zunächst mal eine sehr einfache Lösung. Wenn Du erreichen möchtest, dass das Bild von der alten, kleinen Positon ausgehend an die neue, vergrößerte, explodiert, wird es ein wenig komplizierter.

    Zitat

    Ich aber weiß überhaupt nicht was das Script macht und wie ich da mit der CSS gegensteuern könnte.

    Das ist eine typische Konsequenz, wenn man eine Fundsache aus dem Web einsetzt ohne sie zu verstehen ;)

    Ich bin ja nicht unbedingt ein Freund von jQuery und hier bestätigt sich das: Es liegt ein undurchsichtiges Mischmasch von Animation der Höhe und Umschalten von display vor, das es schwer macht, die Dinge zu durchschauen und nach den eigenen Vorstellungen umzuändern.

    Zitat

    Was muss ich in die CSS schreiben?

    Wie nextuser schon schrieb, hat der Inlinestyle, den jQuery setzt, eine hohe Priorität. Du kannst jedoch dafür sorgen, dass sich dein CSS dennoch durchsetzt, indem Du "!important" hinzu setzt. Auch davon bin ich kein Freund weil man es i. allg. nur braucht, wenn man sein CSS nicht im Griff hat, aber hier kommt man wohl nicht daran vorbei.

    Da kein Freund von jQuery, habe ich mal das Menü aus deinem Codepen hergenommen und mit Vanilla-JS realisiert einschl. Animation.

    Das Javascript am Ende des Body:

    Ist doch recht kompakt und einfach, nicht wahr?

    Am CSS musste ich nicht viel verändern, siehe meine Kommentare:

    Ich würde versuchen, das ohne absolute Positionierung zu machen, dann bekommst Du keine Probleme mit Überlappungen.

    Code
    .item-first .caption a {
        /* Damit das Bild nicht zu groß sondern in seiner
        natürlichen Größe angezeigt wird: */
        align-self: center;
    }

    Das mit dem Farbverlauf wird hier bei Stackoverflow diskutiert:

    How do you apply a gradient from outer to inner, only to borders, in CSS?
    Based on the MDN documentation this doesn't seem to be explicitly supported. So I tried it as follows in the linked code pen below. I know the nested…
    stackoverflow.com

    Kann man so zusammen fassen, dass es keine richtig gute Lösung gibt. Besser mit SVG machen, wie früher empfohlen oder, wie Du selbst schreibst, mit Canvas.