2016-04-25 17 views
1

Ich versuche einen Übergangseffekt zwischen dem Moment zu erstellen, in dem ein Bild gelöscht und ein neues Bild angezeigt wird.Übergang von Weiß auf Weiß zwischen zwei Bildern

Ich habe ein Bild <img src="..."/> in einem div, und irgendwann in meinem Skript Javascript löscht dieses Bild und ersetzt es durch ein anderes. Meine JS das Bild zu ersetzen ist:

document.getElementById("avatar-drop").innerHTML = '<img src="/core/script/blueimp/server/php/files/'+file.name+'" width="150" height="150" alt=""/>'; 

Und hier ist das, was mein div mit einem Bild wie folgt aussieht:

.avatar { 
 
\t width: 152px; 
 
\t height: 152px; 
 
\t border: 1px solid #888; 
 
\t border-radius: 50%; 
 
\t overflow: hidden; 
 
\t margin: 0; 
 
}
<div id="avatar-drop" class="avatar"> 
 
\t <img src="https://tracker.moodle.org/secure/attachment/30912/f3.png" width="150" height="150" alt=""/> 
 
</div>

Ich mag gerne wissen, ob es Art und Weise ist, mit JS oder CSS, um eine Überblendung zwischen weißem und neuem Bild zu erhalten. Ich dachte über die css opacity -Eigenschaft nach, aber ich brauche die Ränder meines div, um sichtbar zu bleiben (nur der Inhalt/das Bild würde zu weiß verblassen).

Gibt es einen Weg, dies zu erreichen?

+0

Ich werde versuchen, etwas aufzuarbeiten später, Ihnen zu zeigen - ich bin heute überschwemmt. Aber um loszulegen ... Als ich das tun musste, legte ich einen weißen div über den Bildbetrachter, der genau so groß wie der Bildbetrachter war. Ich versteckte das weiße div und während der Funktion, die ein Bild ausblendete und im nächsten Bild verblasste, verblasste ich schnell und verblaßte dann das weiße div. Ein wenig noodling mit setTimeout und ich hatte es. – Miles

+0

Bitte stellen Sie zusammen, und zeigen Sie, genug von Ihrem Code (denke: "[MCVE]"), um Ihr Problem zu demonstrieren. Idealerweise erstellen Sie ein Snippet in Ihrer Frage (das wir einfach zu unseren Antworten kopieren können) oder veröffentlichen den Code * hier *, verlinken aber zu einer externen Demo (gehostet zum Beispiel auf [JS Fiddle] (http: // jsfiddle .net /). Die externen Demos sind nicht notwendig oder obligatorisch, aber sie sind eine definitive Hilfe. Was den Code betrifft, um Ihr Problem zu reproduzieren, das * notwendig * ist. –

+0

Danke für Ihre Antwort, tatsächlich scheint das was zu sein Ich suche, und absolut, wenn Sie etwas Zeit haben, sich später darauf zu entwickeln, zögern Sie nicht! Ich werde auf meiner Seite versuchen, jedoch wie Sie die Animation so einstellen, dass der JS, der das neue Bild anzeigt, richtig vorkommt Wie FadeToWhite -> DeleteImage -> DisplayNewImage -> FadeToNormal – apatik

Antwort

2

könnten Sie fadeIn und fadeOut jQuery-Technik verwenden, um diesen Effekt zu erstellen. Das neue Bild kann dann durch die

Skript hinzugefügt werden

$(document).ready(function() { 
 
    $('#button').click(function() { 
 
    $('div img').fadeOut("slow", function() {/*fade out old image*/ 
 
     $('div').append('<img src="http://placehold.it/500/500"/>'); /*Add image*/ 
 
     $('div img').hide().fadeIn("slow"); 
 
     $('div img:first-child').remove();/*remove old image now*/ 
 
    }); 
 
    }); 
 
});
div { 
 
    border-radius: 50%; 
 
    height: 200px; 
 
    width: 200px; 
 
    position: relative; 
 
    border: 10px solid tomato; 
 
    overflow: hidden; 
 
    box-sizing:border-box; 
 
} 
 
div img { 
 
    position: absolute; 
 
    top: 0; 
 
    left: 0; 
 
    height: 100%; 
 
    width: 100%; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <img src="https://tracker.moodle.org/secure/attachment/30912/f3.png" /> 
 

 
</div> 
 
<button id="button">Change Image!</button>

+0

Danke für Ihre Antwort, das sieht so aus, als wäre es ein sehr sauberer und einfacher Weg, dies zum Funktionieren zu bringen. Ich werde versuchen, dies sofort zu implementieren und dieses Update zu aktualisieren, wenn es fertig ist/oder wenn ich Probleme habe. Vielen Dank ! – apatik

+0

Kein Problem!Es ist die Art, wie ich diesen Effekt erzielen würde, wenn das Bild durch JS trotzdem dynamisch hinzugefügt wird! :) – jbutler483

+0

Ja, es ist sehr sauber, danke nochmal! :) Ich habe ein kleines Problem tho, Um das Bild in der kreisförmigen div zu halten, verwende ich die border-box CSS-Eigenschaft. Wenn jedoch das erste Bild ausgeblendet wird, scheint es die Rahmenbox zu "durchbrechen" und das Bild überläuft für die Dauer der FadeOut-Animation außerhalb des Kreises. Es scheint nicht, dieses Problem in Bezug auf die FadeIn-Animation zu sein, ich vermute der Grund könnte sein, dass der eigentliche HTML-Code am Anfang der Animation hinzugefügt/gelöscht wird. Haben Sie sich jemals damit beschäftigt? (lassen Sie mich wissen, ist dies unklar, ich werde bearbeiten) – apatik

1

Sie können die Opazität Technik tun, aber Sie haben ein Zwischenelement zu schaffen, so dass Sie nicht über die Grenze auf die Änderung Opazität verlieren:

<div id="avatar-drop" class="avatar"> 
    <div class="avatar-wrapper"> 
      <img src="https://tracker.moodle.org/secure/attachment/30912/f3.png" width="150" height="150" alt=""/> 
    </div> 
</div> 

Und dann die Opazität ändern auf .avatar-wrapper

EDIT Demo - https://jsfiddle.net/7ugc6va1/50/

+0

Danke für Ihre an Ja, das scheint das Einzige zu sein, um die Grenzen zu bewahren. Jedoch muss ich herausfinden, wie man die Animation macht. Vielen Dank ! – apatik

+0

Ich werde die Antwort aktualisieren, um Ihnen eine Idee zu geben – Ozrix