2017-01-26 4 views
1

Ich habe ein Layout mit einer Kopfzeile und ein paar Bilder als Inhalt. Ich möchte, wenn ein Bild angeklickt wird, es erweitert, um den Bildschirm mit einem Übergang anzupassen. jQuery und JS sind faires Spiel. Hier ist, was ich habe, ich kann es nur nicht mit Übergang wegen der position Änderungen zu arbeiten. Es sollte auch die Kopfzeile abdecken und nicht.Make Bild Bildschirm füllen auf klicken

$(document).ready(function() { 
 
    $("main img").click(function() { 
 
     $(this).toggleClass("click"); 
 
    }); 
 
});
html, body { 
 
    height:100%; 
 
    margin:0; 
 
    padding:0; 
 
} 
 

 
header { 
 
    height:25%; 
 
    width:100%; 
 
    background-color:blue; 
 
} 
 

 
main { 
 
    display:flex; 
 
    justify-content:space-around; 
 
    flex-wrap:wrap; 
 
} 
 

 
main img { 
 
    padding:1em; 
 
    transition:1s; 
 
} 
 

 
main img.click { 
 
    position:absolute; 
 
    width:100%; 
 
    height:auto; 
 
    padding:0; 
 
    transition:1s; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<header> 
 
</header> 
 
<main> 
 
    <img src="https://placehold.it/100x100"> 
 
    <img src="https://placehold.it/100x100"> 
 
    <img src="https://placehold.it/100x100"> 
 
    <img src="https://placehold.it/100x100"> 
 
    <img src="https://placehold.it/100x100"> 
 
    <img src="https://placehold.it/100x100"> 
 
    <img src="https://placehold.it/100x100"> 
 
    <img src="https://placehold.it/100x100"> 
 
</main>

+0

es über den Kopf zu platzieren hinzufügen 'top: 0;' im 'css' für die Bilder. – NewToJS

Antwort

0

$(document).ready(function() { 
 

 
    $("img").click(function() { 
 
     if($(this).width() == "100") { 
 
      $($(this).clone(true)).insertAfter(this); 
 
      $(this).css({"position" : "fixed", "z-index" : "3"}); 
 
      $(this).animate({"width" : $(window).width()-32, "height" : $(window).height()-32, "top" : "0px"}, 1000); 
 
     } 
 
     else { 
 
      $(this).animate({"width" : "0px", "height" : "0px", "top" : ((($(window).height()-32)/2)-50)}, 500, function() { 
 
       $(this).remove(); 
 
      }); 
 
     } 
 
    }); 
 
});
html, body { 
 
    height:100%; 
 
    margin:0; 
 
    padding:0; 
 
} 
 

 
header { 
 
    height:25%; 
 
    width:100%; 
 
    background-color:blue; 
 
} 
 

 
main { 
 
    display:flex; 
 
    justify-content:space-around; 
 
    flex-wrap:wrap; 
 
} 
 

 
main img { 
 
    padding:1em; 
 
} 
 

 
main { 
 
    position:absolute; 
 
    width:100%; 
 
    height:auto; 
 
    padding:0; 
 
} 
 

 
img { 
 
    width: 100px; 
 
    height: 100px; 
 
    z-index: 2; 
 
    position: relative; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<header> 
 
</header> 
 

 
<main> 
 
    <img src="https://placehold.it/100x100"> 
 
    <img src="https://placehold.it/100x100"> 
 
    <img src="https://placehold.it/100x100"> 
 
    <img src="https://placehold.it/100x100"> 
 
    <img src="https://placehold.it/100x100"> 
 
    <img src="https://placehold.it/100x100"> 
 
    <img src="https://placehold.it/100x100"> 
 
    <img src="https://placehold.it/100x100"> 
 
</main>

+0

Das ist gut, aber ich war auf der Suche nach 2 Dinge anders. 1) Die Animation beginnt in der ursprünglichen Position des Bildes und 2) die anderen Bilder bewegen sich nicht. – thesecretmaster

+0

@thesecretmaster es wäre ein wenig komplizierter zu animieren können wir sagen, das Bild ganz links auf dem Bildschirm zu füllen. (nicht schwierig, aber schwer, diese Animation in der Realität hübsch aussehen zu lassen) Vielleicht beginnt die Animation in der Mitte der Seite? –

+0

@thesecretmaster Ich habe meine Antwort so bearbeitet, dass die Bilder während der Animation nicht verschoben werden und die Animation immer in der Mitte der Seite beginnt. Wenn Sie eine bessere Idee für die Animation beschreiben können, –

Verwandte Themen