2017-02-24 5 views
2

私はあなたがそれらの上に置くことができる写真のグリッドを作成しようとしている、彼らは他の画像に変更されます。私は背景画像としてCSSに画像を配置しようとしましたが、ホバーすると、他の画像は正確に同じサイズではないように見えます(実際にはそうです)。写真のグリッドをどのようにしてホバーすることができますか?他の写真に変わりますか?

私はまた、2つの画像の方法(もう一方の上に)を使用してみましたが、ページ上の1つの画像でうまく動作しますが、画像のグリッドでは、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

何かがあなたが画像上にカーソルを移動するときに発生することになっていますか?今は静的な画像に過ぎません。私はあなたがそれを持っていることを知っているので、1つは他のものにフェードアウトします... – Anthony

+1

@Anthony彼がアニメーションのために使用している実際のコードはhtmlでコメントアウトされています。 – RMo

+0

私は以下の回答を掲載しました。それがあなたのために働くかどうか見てください。 – ITWitch

答えて

1

私はちょっとあなたの問題に取り組んでいます。だから、あなたのニーズに合わせてdivの幅と高さを自由に変えてください。私はこの解決策を思いついた:http://codepen.io/anon/pen/Rpwewg。それはあなたがそれを望むように働いているようです。私はそれを理解する2つの問題に遭遇した。

最初のものは、画像上の絶対位置を使用していたということでした。相対位置にある最も近い親に相対的な画像を配置します。あなたの例では、親divがブートストラップクラスだったので、position:relativeで新しいdivを作成し、images-wrapperのクラスを割り当てました。

この例で行ったように、画像を重ね合わせるだけで済むようになりました。しかし...もし私が両方の画像を位置づけるならば、ブラウザは絶対に画像ラッパークラスに割り当てられた高さを持たないでしょう。そこで私は、イメージの1つに相対的な位置を与え、もう1つは絶対的に重なるようにすることにしました。

希望します:)。codepenとコードスニペットで

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

私は、これはあなたが探していたものであるかどうかわからないです。

.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.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'); 
} 
関連する問題