JavaScript Z-Index ändern per Zeit - Vorlage?

DjangOC

Lt. Commander
Registriert
Sep. 2013
Beiträge
1.636
Hi miteinander

Ich suche eine JS Vorlage um folgendes zu realisieren, dass ich mit den CSS Transformation und Transition Möglichkeiten nicht gebacken bekomme.

Der Z-Index eines divs soll sich nach 2 sekunden von 100 auf - 100 setzen.

Mit CSS und opacity kann ich es zwar ausblenden, aber dann liegt da immer noch ein Layer, zwar transparent, über den anderen Sachen. Denke daher, dass kein Weg an JS vorbeiführt, zumal ich so gleich zwei Fliegen mit einer Klatsche erledigen kann, da der Div bei deaktiviertem JS ja nicht verschwindet, kann ich dort per CSS nen Text nach 3 Sekunden einblenden, der dazu auffordert, das JS aktiviert wird.

Hat mir jemand dazu eine Vorlage?

Und wie kann ich von der Priorität her definieren, dass das als wirklich aller aller erstes geladen wird?

EDIT: Da es nun funktioniert, hier rasch als Vorlage, falls jemand anderes mal das selbe Problem haben sollte:

Der Teil, der in die HTML, PHP, ... Datei kommt.
HTML:
<head>
    .....
    <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> //oder src auf den lokalen Ort, wenn ihr dort die liegen habt.
</head>
<body>
    .....
    <div id="Ladeanimation">
        <img id="Ladeanimation-1" src="[I]Deine Quelle zum Logo[/I]" alt="Webseitenlogo">
        <input type="radio" name="color" id="box" checked /><label for="box"></label>
        <ul class="Ladepunkte">
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </u>
        <p id="Ladeanimation-2">
            Diese Webseite nutzt JavaScript. Bitte aktiviere JavaScript in deinem Browser, um zur Webseite zu gelangen.
        </p>
    </div>
    <script> // [B]wichtig[/B], muss nach dem ID vergebenden Element kommen. 
        (function($) {
            setTimeout(function() {
                $("#Ladeanimation").fadeOut(500); //Zahl gibt Effekt Dauer an.
                }, 8500); // Zahl gibt Zeitpunkt an, wenn der Effekt eintreten soll an.
                })(jQuery);
    </script>
    .....
</body>

Falls wer Interesse hat, dass CSS noch.
CSS:
#Ladeanimation{
    width: 100vw;
    height: 100vh;
    z-index: 200;
    position: fixed;
    background-color: #000000;
    opacity:1;
}
    #Ladeanimation-1{
        position: fixed;
        margin-top: 10%;
        margin-left: 40vw;
        height: 20vw; 
        width: 20vw;
        border-radius: 10vw;
    }
    .Ladepunkte {
      list-style: none;
      height: 5vh;
      width: 20vw;
      position: fixed;
      margin-left: 43.5vw;
      margin-top: 35%;
    }
        .Ladepunkte li {
          position: absolute;
          height: 1vw;
          width: 1vw;
          background-color: black;
          border-radius: 5px;
          margin-left: -3000px; 
          animation-name: loading;
          animation-duration: 6.5s;
          animation-timing-function: ease-in-out;
          animation-iteration-count: 1;
          animation-direction: normal;
        }
            .Ladepunkte li:nth-child(1) {
              left: 0vw;
              animation-delay: 0.4s;
            }
            .Ladepunkte li:nth-child(2) {
              left: 3vw;
              animation-delay: 0.8s;
            }
            .Ladepunkte li:nth-child(3) {
              left: 6vw;
              animation-delay: 1.2s;
            }
            .Ladepunkte li:nth-child(4) {
              left: 9vw;
              animation-delay: 1.6s;
            }
            .Ladepunkte li:nth-child(5) {
              left: 12vw;
              animation-delay: 2.0s;
            }
            @keyframes loading {
                0% { margin-left: -3000px; }
                30%,70% { margin-left: 0px; }
                100% { margin-left: 3000px; }
            }
    #box:checked ~ .Ladepunkte li {
        box-shadow: 0 0 5px rgba(173,255,47,1), 
                    0 0 10px rgba(173,255,47,1), 
                    0 0 15px rgba(173,255,47,1), 
                    0 0 20px rgba(173,255,47,1), 
                    0 0 30px rgba(173,255,47,1), 
                    0 0 40px rgba(173,255,47,1);
    }
    label {
        display: inline-block;
        background-color: #000000;
        padding: 0px 0px;
        cursor: none;
    }
    input {
        display: none;
    }
    input[type="radio"]:checked + label {
        background-color: black;
    }
    #Ladeanimation-2{
        color: white;
        height: 100vh;
        width: 100vw;
        padding-top: 70vh;
        vertical-align: middle;
        text-align: center;
        font-size: 1.5em;
        hyphens: auto;
        animation: jshinweis 10s;
    }
    @keyframes jshinweis {
                0% { opacity: 0; }
                90% { opacity: 0; }
                95% { opacity: 0.5; }
                100% { opacity: 1; }
            }

Vielen Dank dann noch an die User Teisi, Ozzy83 und Lawnmower, welche mir halfen, den (die) Fehler zu finden.
 
Zuletzt bearbeitet:
Und wiso nicht display:none? Dann wird es nicht mehr angezeigt, auch nicht über den anderen Elementen. Das wäre mit CSS zu machen.

Wenn Du jQuery einsetzt, könntest das Element mittels Animation ausblenden (entweder über animation() oder fadeOut() o.ä.) und nachdem diese fertig ist das Element noch mit hide() verschwinden lassen.
 
Zuletzt bearbeitet:
Gerne, wenns da bessere Wege gibt, ich kenne JS eigentlich nur von Vorlagen. Die Verfügbaren Optionen kenne ich nicht.
Eine Animation brauchts dort dann aber keine mehr.

Hast du zufälligerweise eine Virlage dazu?
 
Kannst Du ein ein Beispiel mit dem was Du hast online stellen?
Dann kann man es für das ausrichten.
 
Sicher.

HTML: (nur relevanter Ausschnitt)
Code:
<div id="Ladeanimation">
            <img id="Ladeanimation-1" src="pics/favicon.ico" alt="Webseitenlogo">
            <input type="radio" name="color" id="box" checked /><label for="box"></label>
            <ul class="Ladepunkte">
              <li></li>
              <li></li>
              <li></li>
              <li></li>
              <li></li>
            </ul>
            <p id="Ladeanimation-2">
                Diese Webseite nutzt JavaScript. Bitte aktiviere JavaScript in deinem Browser, um zur Webseite zu gelangen.
            </p>
        </div>

CSS: (nur die spezifische Datei, habe aus einer grossen (ca 130kb) ca 10 kleine gemacht, so dass jede "Funktion" ihre eigene hat.)
Code:
/*
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
*/

#Ladeanimation{
    width: 100vw;
    height: 100vh;
    z-index: 200;
    position: fixed;
    background-color: #000000;
    opacity:1;
}
    #Ladeanimation-1{
        position: fixed;
        margin-top: 10%;
        margin-left: 40vw;
        height: 20vw;
        width: 20vw;
        border-radius: 10vw;
    }
    .Ladepunkte {
      list-style: none;
      height: 5vh;
      width: 20vw;
      position: fixed;
      margin-left: 43.5vw;
      margin-top: 35%;
    }
        .Ladepunkte li {
          position: absolute;
          height: 1vw;
          width: 1vw;
          background-color: black;
          border-radius: 5px;
          margin-left: -3000px;
          animation-name: loading;
          animation-duration: 6.5s;
          animation-timing-function: ease-in-out;
          animation-iteration-count: 1;
          animation-direction: normal;
        }
            .Ladepunkte li:nth-child(1) {
              left: 0vw;
              animation-delay: 0.4s;
            }
            .Ladepunkte li:nth-child(2) {
              left: 3vw;
              animation-delay: 0.8s;
            }
            .Ladepunkte li:nth-child(3) {
              left: 6vw;
              animation-delay: 1.2s;
            }
            .Ladepunkte li:nth-child(4) {
              left: 9vw;
              animation-delay: 1.6s;
            }
            .Ladepunkte li:nth-child(5) {
              left: 12vw;
              animation-delay: 2.0s;
            }
            @keyframes loading {
                0% { margin-left: -3000px; }
                30%,70% { margin-left: 0px; }
                100% { margin-left: 3000px; }
            }
    #box:checked ~ .Ladepunkte li {
        box-shadow: 0 0 5px rgba(173,255,47,1),
                    0 0 10px rgba(173,255,47,1),
                    0 0 15px rgba(173,255,47,1),
                    0 0 20px rgba(173,255,47,1),
                    0 0 30px rgba(173,255,47,1),
                    0 0 40px rgba(173,255,47,1);
    }
    label {
        display: inline-block;
        background-color: #000000;
        padding: 0px 0px;
        cursor: none;
    }
    input {
        display: none;
    }
    input[type="radio"]:checked + label {
        background-color: black;
    }
    #Ladeanimation-2{
        color: white;
        margin-top: 85vh;
        width: 100vw;
        vertical-align: middle;
        text-align: center;
        font-size: 1.5em;
    }

In diesem Fall sollen es einfach 8 Sekunden statt 2 sein.
Das Einfliegen des Textes nach 9 habe ich noch nicht gemacht, mache ich jetzt gerade noch.

Danke schonmal für deine Hilfe.
 
Zuletzt bearbeitet:
Meine eigentlich lauffähig (also gehostet auf einem Webspace) und nicht als Code hier im Forum so dass man es mit direkt im Browser ansehen kann ;)

Und dann müsste man noch wissen welches Element nun wie wann wo aus- bzw eingeblendet werden soll.
 
Es geht um diese Seite:
(noch nicht fertig - und mal nur das nötigste Online)
http://www.djangos-blog.ch/

Das ganze was man da nun sieht, ist ein div, und dieser soll verschwinden, sobald die Animation um ist. Dies wollte ich zuerst mit CSS3 machen, hat aber nicht gefunzt, daher nun gerne mit JS, da ich so direkt den Hinweis verwenden kann, dass man bitte JS aktivieren möge, und sonst ja nicht auf die Seite kommen "kann", da ja das JS, welches regeln soll, dass der Div verschwindet sich ja nicht ausführt.

Edit: Ich weiss dass das gewollte ziemlich gegen das POLS verstösst, aber das ist in dem Fall Teil des Konzepts.
 
Zuletzt bearbeitet:
omg warum immer umständlich wenns auch einfach geht:

(function($) {
setTimeout(function() {
$("div").fadeOut(500);
}, 2000);
})(jQuery);

ABER:
So eine Meldung packst du in <noscript>aktiviere javascript...blablabla</noscript>
Ich mein warum sollte das jeder sehen - wenn ich javascript an habe interessiert mich das doch nicht!
 
Teisi schrieb:
omg warum immer umständlich wenns auch einfach geht:

(function($) {
setTimeout(function() {
$("div").fadeOut(500);
}, 2000);
})(jQuery);

ABER:
So eine Meldung packst du in <noscript>aktiviere javascript...blablabla</noscript>
Ich mein warum sollte das jeder sehen - wenn ich javascript an habe interessiert mich das doch nicht!

Danke, kannst du mir aber bitte rasch erläutern, wozu dass 2000 benötigt wird? Ich nehme mal an, das 500 hinter fadeOut Milisekunden sind, oder?

Zum Aber, die Animation muss so oder so rein (Konzeptbestandteil), und so liess sich das mit dem noscript gerade eben auch einbauen.
 
na du willst es nach 2 sekunden ausblenden? hab ich das falsch verstanden?
 
Ah, ok, danke.

Ist demfall die 500 die Effektdauer, oder?

Jetzt frage ich mich nur, wie ich das einbauen muss, so dass es tut, einfach mit den script-tags in den Header rein und das "div" durch den die div id ersetzen?
 
ja zum beispiel. (wie bei css mit # davor)

schön ist das allerdings nicht - aber ich denke da fehlt es bei dir an grundlagen... :/
 
Hmm, will nicht funktionieren.

So ist es doch schon richtig, oder?

Code:
<script type="text/javascript">
            (function($) {
                setTimeout(function() {
                $("Ladeanimation").fadeOut(500);
                }, 9000);
                })(jQuery);
        </script>
 
Das jQuery Framework musst Du natürlich schon auch einbinden damit das klappt.
Code:
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>

Verwende die F12 Tools in den Browsern, die helfen Dir ungemein beim Fehler suchen.
 
Zuletzt bearbeitet:
Lawnmower schrieb:
Das jQuery Framework musst Du natürlich schon auch einbinden damit das klappt.
Code:
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>

Verwende die F12 Tools in den Browsern, die helfen Dir ungemein beim Fehler suchen.

Wie muss das eingebunden sein? muss ich dort wo JQuery steht auf die JQuery JS datei verlinken, wen ja in welcher form?
Oder oben im Script Tag src= angeben?

Komisch, der Code in deinem Post wird mir gar nicht angezeigt, aber im Zitat schon.
 
Einfach die Linie so komplett in den Head Bereich im HTML Code.
Ausserdem solltest Du keine Beiträge zitieren wenn Du unmittelbar auf die antwortest (nur wenn die schon ein paar Beiträge drüber liegen), das wird hier nicht gerne gesehen.
 
Kannst Du jeweils deine Code Anpassungen auf den Webspace laden? Dann sieht man auch was Du machst und kann besser nachvollziehen warum es nicht gehen könnte.
 
Der Selektor tut nix, da muss noch eine Raute davor für css ID und ein Punkt bei css Class
Code:
$("#Ladeanimation")

Kannst auch im Browser mit F12, Tab "Konsole" direkt eingeben, dann siehst was er ausspuckt.
 
Zurück
Oben