2017-03-15 7 views
0

これはおそらく非常に簡単なことですが、わかりません。私は時々画像が肖像画の中に、時には風景モードであるイメージギャラリーに取り組んでいます。ギャラリーが均一に見えるようにするには、サムネイルを同じサイズにする必要があります。クリックするとサムネイル全体が表示されます。私はZurb FoundationとSCSSを使用しています。 これは、現時点では私のコードです:イメージの中心をサムネイルに表示する方法

<div class="img-single column column-block"> 
    <a data-open="galleryModal"> 
    <img src="assets/img-01.jpg" class="thumbnail" alt=""> 
    </a> 
</div> 

.img-single { 
    width: 300px; 
    height: 300px; 

    img { 
     width: 100%; 
     height: 100%; 
    } 
} 

現時点では、画像は300ピクセルで300ピクセルであることを広がっています。画像のサムネイルを表示するだけで、画像の中心が表示され、歪まないようにする必要があります。私もvertical-align: middle;を追加しようとし、最大幅と最大高さの値で試しましたが、何もしませんでした。どのようにそれを行うことができますか?

答えて

0

background-imagedivに設定して、より小さなコンテナに画像をセンタリングすることができます。

<div class="thumbnail" style="background: url("assets/img-01.jpg") no-repeat;"></div> 

.thumbnail { 
    background-position: center; 
    width: 50px; 
    height: 50px; 
} 
+0

しかし、私は複数のクラスを作成して、背景画像を使用する必要がありますので、私はそこに多くの画像を持っています各クラス、ない? CSSの代わりに、自分のhtmlに画像を持っているときにそれを行う方法はありませんか? – Newbie

+0

あなたができることは、すべて同じクラスを適用し、HTMLの 'style'プロパティを使って要素自体に' background-image' URLを適用することです。 – nashcheez

0

新しいobject-fit CSSプロパティを利用して、必要に応じて画像を表示することができます。ここで

は、画像との差分を示す、あなたのためにいくつかのサンプルコードですobject-fitを使用して配置し、デフォルトの画像:あなたがしてimg-single内違った画像を位置決めすることができる

.img-single { 
 
    display: inline-block; 
 
    width: 300px; 
 
    height: 300px; 
 
    overflow: hidden; 
 
} 
 
.img-single img { 
 
    width: 100%; 
 
    height: 100%; 
 
    object-fit: cover; 
 
}
<div class="img-single column column-block"> 
 
    <a data-open="galleryModal"> 
 
    <img src="https://unsplash.it/458/354?image=0" class="thumbnail" alt="Image with object-fit"> 
 
    </a> 
 
</div> 
 

 
<img src="https://unsplash.it/458/354?image=0" alt="Just the image">

あなたが望むならばobject-positionも。

希望しました。

PS:ブリードアウトを防ぐためにもoverflowプロパティを使用しました。ありがとう。

+0

ありがとうございました!私はオブジェクトの位置を調べて報告します。 – Newbie

+0

確かに、時間をかけてください。 –

0

Foundationのthumbnailクラスを削除すると、これが機能するはずです。

HTML(例)

<div class="img-grid row small-up-2 medium-up-3 large-up-4"> 
    <div class="img-single column column-block"> 
     <a data-open="galleryModal"> 
     <img src="https://placeimg.com/620/580/animals" class="" alt=""> 
     </a> 
    </div> 
    <div class="img-single column column-block"> 
     <a data-open="galleryModal"> 
     <img src="https://placeimg.com/440/780/animals" class="" alt=""> 
     </a> 
    </div> 
    <div class="img-single column column-block"> 
     <a data-open="galleryModal"> 
     <img src="https://placeimg.com/460/640/animals" class="" alt=""> 
     </a> 
    </div> 
    <div class="img-single column column-block"> 
     <a data-open="galleryModal"> 
     <img src="https://placeimg.com/720/420/animals" class="" alt=""> 
     </a> 
    </div> 
    <div class="img-single column column-block"> 
     <a data-open="galleryModal"> 
     <img src="https://placeimg.com/660/400/animals" class="" alt=""> 
     </a> 
    </div> 
    <div class="img-single column column-block"> 
     <a data-open="galleryModal"> 
     <img src="https://placeimg.com/480/840/animals" class="" alt=""> 
     </a> 
    </div> 
    <div class="img-single column column-block"> 
     <a data-open="galleryModal"> 
     <img src="https://placeimg.com/400/640/animals" class="" alt=""> 
     </a> 
    </div> 
    <div class="img-single column column-block"> 
     <a data-open="galleryModal"> 
     <img src="https://placeimg.com/440/780/animals" class="" alt=""> 
     </a> 
    </div> 
</div> 

SCSS

.img-single { 
    width: 300px; 
    height: 300px; 
    position: relative; 
    overflow: hidden; 
    img { 
     position: absolute; 
     left: 50%; 
     top: 50%; 
     transform: translate(-50%, -50%); 
     min-width: 300px; 
     min-height: 300px; 
    } 
} 

JSFiddle demo

関連する問題