2017-04-18 3 views
1

イメージのサムネールを2行並べて表示しようとしていますが、それぞれのイメージをホバリングしてウィンドウの全幅にズームしたいと考えています。私はイメージが下方に成長したい。私はこれまですでにこれを得た:javacriptでフルウィンドウ幅にズーム

https://jsfiddle.net/jimhoyle/tfkgcxx7/

div { 
    transition: all 0.2s ease-in-out; 
} 
div:hover { 
    width: 95%; 
} 

私が探しているいくつかの仕様: - サムネイルの高さ:5vw(または200pxの) - 常に元の縦横比を 保つ - 隣人のサムネイルが滞在する必要があります - ズームした画像が次の行にジャンプしないようにする - ズームしたときに画像がフルサイズで表示される - デスクトップとモバイルの両方で合理的に動作する必要があります(=ホバーの代わりにクリックします)

これを達成するには?

答えて

0

javascriptは必要ありません。

flexを使用して純粋なCSSでこれを達成できます。

イメージはすべての場合(display: flex)、ターゲットイメージコンテナを他のものよりも10倍大きくなるように強制することができます(通常の場合はflex: 1、アクティブの場合はflex: 10)。

モバイル版には、アンカーと:target CSSセレクタを使用して設定できます。

ここでは、このソリューションの実装について説明します。

.container { 
 
    display: flex; 
 
    width: 100%; 
 
    max-height: 220px; 
 
} 
 

 
.container > a { 
 
    flex: 1; 
 
    align-items: center; 
 
    text-align: center; 
 
    transition: flex 0.2s; 
 
    line-height: 0; 
 
} 
 

 
.container > a:hover, .container > a:target { 
 
    flex: 10; 
 
} 
 

 
img { 
 
    max-width: 100%; 
 
    max-height: 100%; 
 
}
<div class="container"> 
 
    <a href="#1" id="1"> 
 
    <img src="https://s-media-cache-ak0.pinimg.com/736x/1a/31/59/1a3159e4c899e2fd71b5fe58d0c2b5a9.jpg"/> 
 
    </a> 
 
    <a href="#2" id="2"> 
 
    <img src="https://ivymosquito.files.wordpress.com/2013/09/fox-eyes.jpg" /> 
 
    </a> 
 
    <a href="#3" id="3"> 
 
    <img src="http://static.boredpanda.com/blog/wp-content/uploads/2016/07/fox-faces-roeselien-raimond-red-fox.jpg"/> 
 
    </a> 
 
</div>

+0

ありがとうございます! Flexは非常に使いやすいようです。しかし、それは私が探していたものではありません。私はサムネイルがすべて特定の高さである間、(水平)フルスクリーンに拡大するソリューションを探しています。または、実際には90%幅が良いですが、フレックスが生成する縮小されたサムネイルを残しても問題ありません。ボーナスとして、高さがウィンドウのサイズ(フィット幅/高さのいずれかが最初に最大になる)に制限されていれば素晴らしいでしょう。 –

+0

これは基本的な実装です。フレックスと私のコードを出発点としてこれを達成することができます。 – gaelgillard

関連する問題