CSSのみで縦横比を維持してトリミングされたサムネイルを作って横並びにしたい
やりたいこと
- CSSのみで縦横比を維持したい
- サイズも縦横比もバラバラな画像をCSSのみでトリミングしたい
- 横並びにしたい
- IE11も対応したい
やってみたこと
HTML
<div class="flexBox">
<!-- 1枚目 800*533 -->
<div class="item">
<div class="trimming">
<img src="demo_01.jpg">
</div>
</div>
<!-- 2枚目 1000*1500 -->
<div class="item">
<div class="trimming">
<img src="demo_02.jpg">
</div>
</div>
<!-- 3枚目 900*900 -->
<div class="item">
<div class="trimming">
<img src="demo_03.jpg">
</div>
</div>
</div>
CSS
body {
max-width: 1000px;
margin: 0 auto;
padding: 20px;
}
/*====== 横並びにしたい ======*/
.flexBox {
display: flex;
justify-content: space-between;
}
.item {
width: calc(100% / 3 - 20px);
}
/*====== 縦横比を維持してトリミングしたい ======*/
.trimming {
position: relative;
overflow: hidden;
width: 100%;
padding-top: 75%;
}
.trimming img {
position: absolute;
top: -50%;
right: -50%;
bottom: -50%;
left: -50%;
width: 115%;
height: auto;
margin: auto;
}
ポイント
.trimming
の padding-top: 75%;
: 高さを指定しています。
.trimming img
の width: 115%;
: 1枚目の横幅が一番小さい画像が枠いっぱいになるようにしています。
.trimming img
: 画像の縦横中央が表示されるように指定しています。
その他
横並びはflexで対応。
itemというクラス名のdivをかませないとうまくトリミングできませんでした。
aspect-ratio
というプロパティを使用すると、上記より簡単に縦横比を維持できるようですがIE11で使えなかったので採用しませんでした。
この記事は以下の情報を参考にさせていただきました。
Author And Source
この問題について(CSSのみで縦横比を維持してトリミングされたサムネイルを作って横並びにしたい), 我々は、より多くの情報をここで見つけました https://qiita.com/chibit/items/ba51e38cf05af4f6ac58著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .