2016-10-16 3 views
0

イメージ要素の高さと幅があらかじめわかっていない場合、イメージの高さがイメージの幅よりも大きい場合は、イメージの幅を同じに切り取ってイメージの中心を垂直に合わせたいとします。新しい画像の高さが画像の幅と一致するように、ピクセルがその頂部および底部を形成する。たとえば、画像の幅が200px、高さが250pxの場合は、上端と下端から25pxを切り取ります。画像の高さが画像の幅を超えている場合は、画像の上下を上下に切り抜いて中央の画像をCSSでのみ可能ですか?

ここでは例のセットアップです:

HTML:

<div class = 'cell'> 
    ... 
    <div class = 'image_container'> 
    ... 
    <img ...> 
    </div> 
</div> 

CSS:

.cell { 
    display: inline-block; 
    float: left; 
    /* width will be changed by use of '@media screen'. 
     Smaller browser window -> larger width */ 
    width: 31%; 
} 

.image_container { 
    position: relative; 
    float: left; 
    width: 100%; 
} 

.image_container > img { 
    width: 100%; 
} 

のみCSSを使用して前述のセンター/クロップ操作を実現することが可能であり、あるいはそれが必要であるが、これにjavascript/jqueryを使用するには?

+0

使用可能な 'オブジェクトフィットを持っている:'基本的にあなたが '背景サイズのように似たものを行うことを可能にする:'ず、それは 'contain'または' cover'の値を割り当てていますが、**それらのどれもあなたの要件に合っていないようです** description。少なくとも、高さを指定しなかった場合、画像の上下から同じ高さの切り抜きを行うことは、全くわかりません。クロッピングは 'カバー'を使用して行われます( 'contains'は作物ではありません)が、イメージは「センタリング」されていませんが、***は指定されたエリア全体を覆います*** –

+0

与えられた幅および/画像が収まるはずですか? – LGSon

+0

@LGSon - 画像はグリッドセルの内側にあり(各セルの幅の100%を占めます)、パッカーによって配置されます。ブラウザウィンドウの幅に応じて、3つ、2つ、または1つのグリッドセルが連続して存在することがあります。また、グリッドの幅の100%を占める行もあります。これらは画像の幅に対する唯一の制約であり、高さは画像の幅によって制限されるべきである。 – Boa

答えて

2

object-fit CSS属性を使用できます。それはbackground-size属性のように多く働きます。

.image_container > img { 
    object-fit: contain; 
} 

これは(2016年10月)今のようにフルブラウザをサポートしていませんので、あなたはdiv要素の背景として画像を設定し、代わりにこれに対処するためbackground-positionbackground-sizeを使用してに見てみたいことがあります<img>タグのCSSで

.image_container { 
 
    height: 300px; 
 
    background-color: cornflowerblue; 
 
    image-rendering: pixelated; 
 

 
    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALklEQVQoU2NkgID/UBqdYmSESoJobOA/sgKQKTCFMDaKAuqYAHMs3CqiHInXmwDZGBMDEmk6SQAAAABJRU5ErkJggg=='); 
 
    background-repeat: no-repeat; 
 
    background-position: center center; 
 
    background-size: 200px; 
 
}
<div class="image_container"></div>

+0

提案のおかげでよかったです。私は 'object-fit'プロパティを認識していませんでした。しかし、私はFirefoxとVivaldi(Chrome)の最新のブラウザで試してみて、それは何の効果もないようです。この不動産が効果を発揮するために必要な前提条件はありますか、それとも単純にサポート不足の問題になる可能性がありますか? [Firefoxで今サポートされているはずだ](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit) 'background- *'解決法の変種も同様に聞こえます。 – Boa

1

.cover_image { 
 
    height: 400px; 
 
    background: url('http://lorempixel.com/g/400/200/') no-repeat scroll center center; 
 
    background-size: cover; 
 
}
<div class="cover_image"></div>

関連する問題