私は実際にCSSで画像を修正することは不可能であることを知っています、それが私が引用でクロップを入れる理由です。
私がやりたいのは、長方形の画像を撮影し、CSSを使用して画像をまったく歪ませることなく正方形に見えるようにすることです。
私は基本的にこれを有効にしたいです。
これに:
IMGタグに含める必要がないと仮定して...
HTML:
<div class="thumb1">
</div>
CSS:
.thumb1 {
background: url(blah.jpg) 50% 50% no-repeat; /* 50% 50% centers image in div */
width: 250px;
height: 250px;
}
.thumb1:hover { YOUR HOVER STYLES HERE }
編集:divはどこかにリンクする必要がある場合はちょうどそのようにHTMLとスタイルを調整します。
HTML:
<div class="thumb1">
<a href="#">Link</a>
</div>
CSS:
.thumb1 {
background: url(blah.jpg) 50% 50% no-repeat; /* 50% 50% centers image in div */
width: 250px;
height: 250px;
}
.thumb1 a {
display: block;
width: 250px;
height: 250px;
}
.thumb1 a:hover { YOUR HOVER STYLES HERE }
これはまた反応するように修正することができることに注意してください。例えば、%幅や高さなど。
ラッパーdiv
やその他の無駄なコードを含まない純粋なCSSソリューション。
img {
object-fit: cover;
width:230px;
height:230px;
}
overflow:hidden
)に設定します。例えば:
<div style="width:200px;height:200px;overflow:hidden">
<img src="foo.png" />
</div>
背景サイズを使用して:カバー - http://codepen.io/anon/pen/RNyKzB
CSS:
.image-container {
background-image: url('http://i.stack.imgur.com/GA6bB.png');
background-size:cover;
background-repeat:no-repeat;
width:250px;
height:250px;
}
マークアップ:
<div class="image-container"></div>
私は実際に最近この同じ問題に遭遇し、わずかに異なるアプローチで終わりました(私は背景画像を使うことができませんでした)。イメージの方向性を判断するには、わずかなjQueryが必要です(代わりにプレーンなJSを使用することもできます)。
私は それについてのブログ記事 をあなたがもっと説明に興味を持っているけれどもコードがかなり単純であるなら書きました:
HTML:
<ul class="cropped-images">
<li><img src="http://fredparke.com/sites/default/files/cat-portrait.jpg" /></li>
<li><img src="http://fredparke.com/sites/default/files/cat-landscape.jpg" /></li>
</ul>
CSS:
li {
width: 150px; // Or whatever you want.
height: 150px; // Or whatever you want.
overflow: hidden;
margin: 10px;
display: inline-block;
vertical-align: top;
}
li img {
max-width: 100%;
height: auto;
width: auto;
}
li img.landscape {
max-width: none;
max-height: 100%;
}
jQuery:
$( document ).ready(function() {
$('.cropped-images img').each(function() {
if ($(this).width() > $(this).height()) {
$(this).addClass('landscape');
}
});
});
私は同様の問題を抱えており、背景画像に「妥協」することはできませんでした。私はこれを思いつきました。
<div class="container">
<img src="http://lorempixel.com/800x600/nature">
</div>
.container {
position: relative;
width: 25%; /* whatever width you want. I was implementing this in a 4 tile grid pattern. I used javascript to set height equal to width */
border: 2px solid #fff; /* just to separate the images */
overflow: hidden; /* "crop" the image */
background: #000; /* incase the image is wider than tall/taller than wide */
}
.container img {
position: absolute;
display: block;
height: 100%; /* all images at least fill the height */
top: 50%; /* top, left, transform trick to vertically and horizontally center image */
left: 50%;
transform: translate3d(-50%,-50%,0);
}
//assuming you're using jQuery
var h = $('.container').outerWidth();
$('.container').css({height: h + 'px'});
お役に立てれば!
.testimgクラスを使用して、内側の画像に正方形の寸法を持つdivを使用します。
.test {
width: 307px;
height: 307px;
overflow:hidden
}
.testimg {
margin-left: -76px
}
または画像の背景を持つ四角いdiv。
.test2 {
width: 307px;
height: 307px;
background: url(http://i.stack.imgur.com/GA6bB.png) 50% 50%
}
ここにいくつかの例があります: http://jsfiddle.net/QqCLC/1/
更新されたSO画像センター
.test {
width: 307px;
height: 307px;
overflow: hidden
}
.testimg {
margin-left: -76px
}
.test2 {
width: 307px;
height: 307px;
background: url(http://i.stack.imgur.com/GA6bB.png) 50% 50%
}
<div class="test"><img src="http://i.stack.imgur.com/GA6bB.png" width="460" height="307" class="testimg" /></div>
<div class="test2"></div>
CSSを使用する:オーバーフロー:
.thumb {
width:230px;
height:230px;
overflow:hidden
}
画像がレスポンシブ幅のコンテナ内にある場合:
HTML
<div class="img-container">
<img src="" alt="">
</div>
CSS
.img-container {
position: relative;
&::after {
content: "";
display: block;
padding-bottom: 100%;
}
img {
position: absolute;
width: 100%;
height: 100%;
object-fit: cover;
}
}