2017-02-24 66 views
2

我正在嘗試創建一張照片網格,您可以將它們懸停在它們上面,並且它們將更改爲其他圖像。我已經嘗試將圖像放在CSS上作爲背景圖片,但是當您將鼠標懸停時,其他圖片看起來並沒有完全相同的大小(實際上是這樣)。如何創建一個照片網格,你可以將它們懸停,他們將更改爲其他照片?

我也嘗試過使用兩種圖像方法(一種在另一種上面),並且它在頁面上只有一個圖像,但使用圖像網格時效果很好,但由於position: absolute不起作用。

我發現「排序」作品的唯一方法是將另一個圖像替換爲另一個圖像,但然後您沒有平滑過渡(淡入另一圖像)。

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

代碼:

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

和代碼片段的東西應該當你將鼠標懸停在圖片的情況發生?現在他們只是靜態圖像。我知道你正在試圖讓它淡入另一個...... – Anthony

+1

@Anthony他一直用於動畫的實際代碼已經在html中註釋掉了。 – RMo

+0

我在下面發佈了一個答案。看看它是否適合你。 – ITWitch

回答

1

好吧,我一直在玩弄你的問題。我想出了這個解決方案:http://codepen.io/anon/pen/Rpwewg。它似乎按照你想要的方式工作。我碰到兩個問題搞清楚了。

第一個是你使用的位置:絕對的圖像。它會將圖像相對於相對定位的最接近的父對象進行放置。因爲在你的例子中,父div是一個引導類,我決定創建一個新的div,其中position:relative指定給它,並給它一類圖像包裝。

現在我只需要將圖像重疊在一起,就像您在示例中一樣。但是...如果我讓兩個圖像的位置:絕對的瀏覽器將不會有一個高度分配給圖像包裝類。因此,我決定給一個圖像一個相對位置,另一個圖像絕對重疊。

希望它有幫助:)。

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; 
} 
在codepen
2

我不知道如果這是你要找的人。

.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

實現這一目標的最佳方式是設置圖像作爲背景和懸停背景,然後設置background-size:cover保持尺寸的圖像顯示「均勻」。根本不需要Javascript代碼。

這裏,I forked your Codepen for a demo。我只將hover效果應用於第一張圖片供您查看。讓我知道它是否有幫助。

對於「平滑過渡」,CSS也爲您照顧它。隨意更改div寬度(和高度)以更好地滿足您的需求:

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'); 
} 
相關問題