2016-06-11 11 views
0

私のウェブサイトでは、ユーザーが写真をアップロードできます。サイズはさまざまですが、同じ高さのボックスに収まるようにしておき、隣に置いてグリッドを作ることができます。画像は、縦横比を維持したままボックスの中央に配置する必要があります。 CSSでこれを行うことはできますか?私はフレックスボックスで物事を試してきましたが、私はそれを動作させることはできません。動的に読み込まれた画像の縦横比を保持する

高さが幅よりも大きい場合:

|-------------| 
| imageim | 
| ageimag | 
| eimagei | 
| mageima | 
| geimage | 
| imageim | 
|-------------| 

幅が高さよりも大きい場合:

|-------------| 
|    | 
|imageimageima| 
|geimageimagei| 
|mageimageimag| 
|eimageimageim| 
|    | 
|-------------| 
+0

私はそれを試してみたが、それはうまくいきませんでした。多分私のdivの高さと幅が固定値の代わりに100%に設定されているからでしょうか? – raichu

+0

このポストを参照し、それが役立つ場合は回答してください。http://stackoverflow.com/q/34713763/483779しかし、ブラウザのサポートの詳細に注意してください。 – Stickers

+0

あなたのために答えを投稿しましたが、あなたが探しているものをよりよく理解するために、画像サイズの組み合わせで予想されるレイアウトを示す画像が素晴らしいでしょう。 – LGSon

答えて

1

ここでは、5×5グリッド、スケーリング、ダウンロード可能、flexを使用しています。

Fiddle version

.parent { 
 
    height: 100vh; 
 
    display: flex; 
 
    flex-wrap: wrap; 
 
} 
 
.parent a { 
 
    display: inline-block; 
 
    height: calc(20% - 2px); 
 
    width: calc(20% - 2px); 
 
    background: #ddd no-repeat center center; 
 
    background-size: contain; 
 
    margin: 1px; 
 
} 
 
.parent a:nth-child(odd) { 
 
    background-image: url(http://lorempixel.com/300/150/animals/3); 
 
} 
 
.parent a:nth-child(even) { 
 
    background-image: url(http://lorempixel.com/150/300/animals/3); 
 
}
<div class="parent"> 
 
    
 
    <a href="http://lorempixel.com/300/150/animals/3" download="filename"></a> 
 
    <a href="http://lorempixel.com/150/300/animals/3" download="filename"></a> 
 
    <a href="http://lorempixel.com/300/150/animals/3" download="filename"></a> 
 
    <a href="http://lorempixel.com/150/300/animals/3" download="filename"></a> 
 
    <a href="http://lorempixel.com/300/150/animals/3" download="filename"></a> 
 

 
    <a href="http://lorempixel.com/150/300/animals/3" download="filename"></a> 
 
    <a href="http://lorempixel.com/300/150/animals/3" download="filename"></a> 
 
    <a href="http://lorempixel.com/150/300/animals/3" download="filename"></a> 
 
    <a href="http://lorempixel.com/300/150/animals/3" download="filename"></a> 
 
    <a href="http://lorempixel.com/150/300/animals/3" download="filename"></a> 
 

 
    <a href="http://lorempixel.com/150/300/animals/3" download="filename"></a> 
 
    <a href="http://lorempixel.com/300/150/animals/3" download="filename"></a> 
 
    <a href="http://lorempixel.com/150/300/animals/3" download="filename"></a> 
 
    <a href="http://lorempixel.com/300/150/animals/3" download="filename"></a> 
 
    <a href="http://lorempixel.com/150/300/animals/3" download="filename"></a> 
 

 
    <a href="http://lorempixel.com/150/300/animals/3" download="filename"></a> 
 
    <a href="http://lorempixel.com/300/150/animals/3" download="filename"></a> 
 
    <a href="http://lorempixel.com/150/300/animals/3" download="filename"></a> 
 
    <a href="http://lorempixel.com/300/150/animals/3" download="filename"></a> 
 
    <a href="http://lorempixel.com/150/300/animals/3" download="filename"></a> 
 

 
    <a href="http://lorempixel.com/150/300/animals/3" download="filename"></a> 
 
    <a href="http://lorempixel.com/300/150/animals/3" download="filename"></a> 
 
    <a href="http://lorempixel.com/150/300/animals/3" download="filename"></a> 
 
    <a href="http://lorempixel.com/300/150/animals/3" download="filename"></a> 
 
    <a href="http://lorempixel.com/150/300/animals/3" download="filename"></a> 
 

 
</div>

+0

お返事ありがとうございます。ソリューションには欠点が1つあります。画像はダウンロードできません。サイトのセクションは一種のフォトブックとして機能するので、ユーザーが写真をダウンロードできるといいだろう。また、周囲のdivと一緒に画像を拡大したいので、幅と高さをピクセルではなく%で表現する必要があります。 5列5列のグリッドを作成しようとしています。私はJavaScriptでそれをやろうとする可能性がありますが、まずCSSソリューションがあるかどうか、フレックスボックスのような新しいレイアウトを使用しているかどうかを知りたいと思います。 – raichu

+0

@raichu私の提案を提案で更新しました – LGSon

+0

ありがとう!驚くばかり。私は午後中にフレックスボックスを使いこなしていました。:) – raichu

1
height: 100px; 
width: auto; 

これは、その高さに合わせて画像のサイズを変更します。

+0

助けてくれてありがとうございますが、これは1つの状況でのみ動作します。しかし、人々はまた、水平方向の写真を投稿することができます。 – raichu

+0

なぜそれは動作しませんか?サイズに関係なく画像を拡大/縮小します。水平または垂直。テキスト整列の中心を、中心に整列させたい親に追加することができます。または、固定幅のボックスにもしたいですか?その場合、最大幅:100ピクセルを入力します。 – Achshar

+0

ボックスの幅は固定してはいけませんが、親の割合は固定してください。目標は、ユーザーの画像用のグリッドを作成することです。 – raichu

関連する問題