2017-02-24 1 views
2

Ich versuche ein Raster aus Fotos zu erstellen, in dem Sie den Mauszeiger darüber bewegen können und sie in andere Bilder wechseln. Ich habe versucht, das Bild auf CSS als Hintergrundbild zu platzieren, aber wenn Sie den Mauszeiger bewegen, scheint das andere Bild nicht genau die gleiche Größe zu haben (wenn es tatsächlich ist).Wie erstellt man ein Raster von Fotos, in denen man sie überfliegen kann und sie sich in andere Fotos verwandeln?

Ich habe auch versucht, zwei Bilder Methode (eine über der anderen) und es funktioniert gut mit nur einem Bild auf der Seite, aber mit einem Raster von Bildern, funktioniert es nicht wegen der position: absolute.

Der einzige Weg, dass ich fand, dass "Art" funktioniert, ist durch Ersetzen eines Bildes für das andere, aber dann haben Sie keinen fließenden Übergang (verblassen in ein anderes Bild).

Here is the access to code pen (seems to work better):

Code:

css:

.pages-content { 
 
    max-width: 400px 
 
} 
 

 
.left { 
 
    padding-left: 5px; 
 
} 
 
.right { 
 
    padding-right: 5px; 
 
} 
 
.bottom { 
 
    padding-bottom: 10px; 
 
} 
 

 
img.a { 
 
\t position: absolute; 
 
\t left: 0; 
 
\t top: 0; 
 
    z-index: 10; 
 
    transition: opacity 1s ease-in-out; 
 
} 
 

 
img.a:hover { 
 
    opacity: 0; 
 
} 
 
img.b { 
 
\t position: absolute; 
 
\t left: 0; 
 
\t top: 0; 
 
} 
 

 
HTML:
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet"/> 
 
<body> 
 
    <section class="container pages-content"> 
 
    <div class="row"> 
 
\t <div class="col-md-12 bottom"> 
 
     <img src="https://d1mwzmktacfw26.cloudfront.net/wp-content/uploads/2016/04/23105511/Frontier-400x200.jpg" alt="" class="img-fluid"/>   
 
     <!-- trying to use hover to change images 
 
\t  <img src="https://d1mwzmktacfw26.cloudfront.net/wp-content/uploads/2016/04/23105511/Frontier-400x200.jpg" alt="" class="img-fluid a"/> 
 
     <img src="http://www.tikbok.com/rahalat/wp-content/uploads/2011/08/1-400x200.jpg" alt="" class="img-fluid b"/> --> 
 
\t </div> 
 
\t </div> 
 
\t <div class="row"> 
 
\t <div class="col-md-6 col-sm-12 right"> 
 
\t \t <img src="http://cheb-room.ru/uploads/cheb/2016/11/w9RC4W-QqXw-200x200.jpg" alt="" class="img-fluid" /> 
 
\t </div> 
 
\t <div class="col-md-6 col-sm-12 bottom left"> 
 
\t \t <img src="http://cheb-room.ru/uploads/cheb/2016/11/w9RC4W-QqXw-200x200.jpg" alt="" class="img-fluid" /> 
 
\t </div> 
 
    </div> 
 

 
\t <!-- Second block --> 
 
\t <div class="row"> 
 
\t <div class="col-md-6 col-sm-12 right "> 
 
\t \t <div class="row"> 
 
\t \t <div class="col-md-6 push-md-6 col-sm-12 bottom left"> 
 
      <img src="http://www.animated-gifs.eu/category_cartoons/avatars-100x100-cartoons-spongebob/0038.gif" alt="" class="img-fluid"/> 
 
\t \t </div> 
 
\t \t <div class="col-md-6 pull-md-6 col-sm-12 bottom right"> 
 
      <img src="http://www.animated-gifs.eu/category_cartoons/avatars-100x100-cartoons-spongebob/0038.gif" alt="" class="img-fluid"/> 
 
\t \t </div> 
 
\t \t <div class="col-md-12 bottom"> 
 
      <img src="http://donsmaps.com/clickphotos/dolnivi200x100.jpg" alt="" class="img-fluid" /> 
 
\t \t </div> 
 
\t \t <div class="col-md-12 bottom"> 
 
      <img src="http://markcarson.com/images/SunBird-7-200x200.png" alt="" class="img-fluid" /> 
 
\t \t </div> 
 
\t \t </div> 
 
\t </div><!--./col-md-6--> 
 
\t <div class="col-md-6 bottom col-sm-12 left project-image"> 
 
\t \t <img src="http://www.bravacasa.rs/wp-content/uploads/2014/03/Odlaganje-stvari-za-decu-slika-7-505x1025.jpg" width="200" class="img-fluid"/> 
 
\t </div> 
 
\t </div><!--./block 2--> 
 
    </section> 
 
</body>

+1

im codepen und der Code-Snippet sollte etwas passieren, wenn Sie über die Bilder schweben? Im Moment sind das nur statische Bilder. Ich weiß, dass du versuchst, es so zu haben, dass einer in den anderen übergeht ... – Anthony

+1

@Anthony Der Code, den er für die Animation benutzt hat, wurde im HTML auskommentiert. – RMo

+0

Ich habe eine Antwort unten gepostet. Sehen Sie, ob es für Sie funktioniert. – ITWitch

Antwort

1

Ok, damit ich um mit Ihrem Problem ein wenig gespielt haben. Ich kam mit dieser Lösung: http://codepen.io/anon/pen/Rpwewg. Es scheint so zu sein, wie Sie es wollen. Ich habe zwei Probleme herausgefunden.

Die erste war, dass Sie die Position verwenden: absolut auf den Bildern. Es platziert das Bild relativ zum nächsten Elternteil, der relativ positioniert ist. Da in Ihrem Beispiel das Eltern-Div eine Bootstrap-Klasse ist, habe ich beschlossen, ein neues div mit position: relative zu erstellen und ihm eine Klasse von images-wrapper zu geben.

Jetzt musste ich nur die Bilder überlappen, genau wie im Beispiel. Aber ... Wenn ich beide Bilder positioniere: absolut hat der Browser keine Höhe der Bilder-Wrapper-Klasse zugewiesen. Deshalb habe ich beschlossen, einem der Bilder eine relative Position zu geben und das andere absolut, damit es sich überschneiden würde.

hoffe es hilft :).

html

<body> 
    <section class="container pages-content"> 

        <div class="row"> 
         <div class="col-md-12 bottom"> 
       <!--img src="https://d1mwzmktacfw26.cloudfront.net/wp-content/uploads/2016/04/23105511/Frontier-400x200.jpg" alt="" class="img-fluid"/-->   
       <!-- trying to use hover to change images--> 
          <div class="images-wrapper"><img src="https://d1mwzmktacfw26.cloudfront.net/wp-content/uploads/2016/04/23105511/Frontier-400x200.jpg" alt="" class="img-fluid a"/> 
       <img src="http://www.tikbok.com/rahalat/wp-content/uploads/2011/08/1-400x200.jpg" alt="" class="img-fluid b"/> <!----> 
       </div> 
         </div> 
        </div> 
        <div class="row"> 
         <div class="col-md-6 col-sm-12"> 
       <div class="images-wrapper"><img src="https://d1mwzmktacfw26.cloudfront.net/wp-content/uploads/2016/04/23105511/Frontier-400x200.jpg" alt="" class="img-fluid a"/> 
       <img src="http://www.tikbok.com/rahalat/wp-content/uploads/2011/08/1-400x200.jpg" alt="" class="img-fluid b"/> 
       </div> 
         </div> 
         <div class="col-md-6 col-sm-12 bottom left"> 
          <img src="http://cheb-room.ru/uploads/cheb/2016/11/w9RC4W-QqXw-200x200.jpg" alt="" class="img-fluid" /> 
         </div> 
        </div> 

        <!-- Second block --> 
        <div class="row"> 
         <div class="col-md-6 col-sm-12 right "> 
          <div class="row"> 
           <div class="col-md-6 push-md-6 col-sm-12 bottom left"> 
        <img src="http://www.animated-gifs.eu/category_cartoons/avatars-100x100-cartoons-spongebob/0038.gif" alt="" class="img-fluid"/> 
           </div> 
           <div class="col-md-6 pull-md-6 col-sm-12 bottom right"> 
        <img src="http://www.animated-gifs.eu/category_cartoons/avatars-100x100-cartoons-spongebob/0038.gif" alt="" class="img-fluid"/> 
           </div> 
           <div class="col-md-12 bottom"> 
        <img src="http://donsmaps.com/clickphotos/dolnivi200x100.jpg" alt="" class="img-fluid" /> 
           </div> 
           <div class="col-md-12 bottom"> 
        <img src="http://markcarson.com/images/SunBird-7-200x200.png" alt="" class="img-fluid" /> 
           </div> 
          </div> 
         </div><!--./col-md-6--> 
         <div class="col-md-6 bottom col-sm-12 left project-image"> 
          <img src="http://www.bravacasa.rs/wp-content/uploads/2014/03/Odlaganje-stvari-za-decu-slika-7-505x1025.jpg" width="200" class="img-fluid"/> 
         </div> 
        </div><!--./block 2--> 
</body> 

css

.pages-content { 
    max-width: 400px 
} 

.left { 
    padding-left: 5px; 
} 
.right { 
    padding-right: 5px; 
} 
.bottom { 
    padding-bottom: 10px; 
} 

img.a { 
    position: absolute; 
    z-index: 10; 
    opacity: 1; 
    transition: opacity 1s ease-in-out; 
} 

img.a:hover { 
    opacity: 0; 
} 
img.b { 
    z-index: 9; 
    opacity: 1; 
    position: relative; 
    } 
.images-wrapper{ 
    position: relative; 
} 
2

Ich bin nicht sicher, ob dies ist, was Sie suchen.

.row { 
 
    display: flex; 
 
    flex-direction: row; 
 
} 
 

 
.flex-item { 
 
    min-width: 200px; 
 
    min-height: 200px; 
 
} 
 

 
.hover-img { 
 
    transition: background-image 1s ease-in-out; 
 
    background-size: cover; 
 
} 
 

 
.img-1 { 
 
    background-image: url(https://d1mwzmktacfw26.cloudfront.net/wp-content/uploads/2016/04/23105511/Frontier-400x200.jpg); 
 
    width: 400px; 
 
    /* 
 
    height: 200px;*/ 
 
    flex-grow: 2; 
 
} 
 

 
.img-1:hover { 
 
    background-image: url(http://www.tikbok.com/rahalat/wp-content/uploads/2011/08/1-400x200.jpg); 
 
} 
 

 
.img-2 { 
 
    background-image: url(http://cheb-room.ru/uploads/cheb/2016/11/w9RC4W-QqXw-200x200.jpg); 
 
    /* width: 200px; 
 
    height: 200px;*/ 
 
    flex-grow: 1; 
 
} 
 

 
.img-2:hover { 
 
    background-image: url(http://www.animated-gifs.eu/category_cartoons/avatars-100x100-cartoons-spongebob/0038.gif); 
 
} 
 

 
.img-3 { 
 
    background-image: url(http://donsmaps.com/clickphotos/dolnivi200x100.jpg); 
 
    /*width: 200px; 
 
    height: 200px;*/ 
 
    flex-grow: 1; 
 
} 
 

 
.img-3:hover { 
 
    background-image: url(http://markcarson.com/images/SunBird-7-200x200.png); 
 
} 
 

 
.img-4 { 
 
    /*max-width:400px;*/ 
 
    flex-grow: 2; 
 
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet" /> 
 

 
<body> 
 
    <section class="container pages-content"> 
 
    <div class="row"> 
 

 
     <div class="flex-item hover-img img-1"></div> 
 
     <div class="flex-item hover-img img-2"></div> 
 
     <div class="flex-item hover-img img-3"></div> 
 
     <img src="http://www.bravacasa.rs/wp-content/uploads/2014/03/Odlaganje-stvari-za-decu-slika-7-505x1025.jpg" class="flex-item img-4" /> 
 

 
    </div> 
 
    </section> 
 
</body>

0

Der beste Weg, dies zu erreichen ist es, die Bilder als Hintergrund einstellen und Hintergrund schwebt, dann setzen Sie background-size:cover die Bildanzeige „Uniform“ in der Größe zu halten. Keine Notwendigkeit für Javascript-Code überhaupt.

Hier, I forked your Codepen for a demo. Ich habe den Effekt nur auf das erste Bild angewendet, damit Sie es auschecken können. Lass es mich wissen, wenn es hilft.

Für den "reibungslosen Übergang" kümmert sich CSS auch darum. Fühlen Sie sich frei, die div Breite (und Höhe) zu ändern, um Ihre Bedürfnisse besser zu dienen:

div.row div { 
    cursor: pointer; 
    transition: ease 0.5s all; 
} 

div.row .col-md-12:first-child { 
    background-image: url('https://d1mwzmktacfw26.cloudfront.net/wp-content/uploads/2016/04/23105511/Frontier-400x200.jpg'); 
    background-size: cover; 
    height: 200px; 
    margin-bottom: 10px; 
} 

div.row .col-md-12:first-child:hover { 
    background-image: url('http://donsmaps.com/clickphotos/dolnivi200x100.jpg'); 
} 
Verwandte Themen