是否可以将图像置于隐藏溢出的包装内?
Is it possible to center an image inside a wrapper with an overflow hidden?
我需要我的缩略图来填充 100x100px 容器的 space。但是我有一些风景图像,我想将它们居中放置,这样它们的左右两侧就会被裁剪掉。不使用背景图片能实现吗
这是我目前的情况:
HTML
<div class="outer">
<div class="thumbnail">
<img src="https://placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97150&w=350&h=150" alt="" />
</div>
</div>
CSS
.outer {
width: 100px;
height: 100px;
padding: 5px;
border: 1px solid grey
}
.thumbnail {
overflow: hidden
}
img {
width: auto;
height: 100px;
}
如果您将宽度从 width: auto
调整为 width: 100px
,图像会调整大小以适合缩略图。如果这就是你想要的。
如果不介意IE支持,可以使用object-fit: cover;
属性.
css:
.outer {
margin: 0 auto;
width: 100px;
height: 100px;
padding: 5px;
border: 1px solid grey;
}
.thumbnail {
overflow: hidden;
}
img {
width: 100%;
height: 100px;
object-fit: cover;
}
html:
<div class="outer">
<div class="thumbnail">
<img src="https://placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97150&w=350&h=150" alt="" />
</div>
</div>
您的人像图片是始终保持相同大小,还是宽度可变?如果它们大小相同,您可以这样做:
http://codepen.io/tinyglowstudio/pen/ojNVGj?editors=110
HTML:
<img src="https://placeholdit.imgix.net/~text?txtsize=33&txt=300%C3%97100&w=300&h=100" alt="" />
我为了自己的数学把它改成了 300 和 100。你可以自己做代数:)
CSS:
img
position: absolute;
width: auto;
height: 100px;
z-index: 0;
clip: rect(0px 200px auto 100px);
transform: translate(-100px);
这适用于 IE
好的,这是一个新的答案,使用 JS 来设置我们的裁剪量:
http://codepen.io/tinyglowstudio/pen/ojNVGj?editors=111
HTML:
<img src="https://placeholdit.imgix.net/~text?txtsize=33&txt=450%C3%97250&w=450&h=250" alt="" />
CSS:
img
position: absolute;
width: auto;
height: 100px;
z-index: 0;
JS
$(".thumbnail img").each(function() {
var Height = 100 / $(this).height();
var Width = $(this).width() * (100 / $(this).height());
var trimAmount = (Width - 100) / 2;
$(this).css({
'transform' : 'translate(-' + trimAmount + 'px, 0)',
'clip' : 'rect(0 ' + (100 + trimAmount) + 'px 100px ' + trimAmount + 'px)'});
});
我需要我的缩略图来填充 100x100px 容器的 space。但是我有一些风景图像,我想将它们居中放置,这样它们的左右两侧就会被裁剪掉。不使用背景图片能实现吗
这是我目前的情况:
HTML
<div class="outer">
<div class="thumbnail">
<img src="https://placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97150&w=350&h=150" alt="" />
</div>
</div>
CSS
.outer {
width: 100px;
height: 100px;
padding: 5px;
border: 1px solid grey
}
.thumbnail {
overflow: hidden
}
img {
width: auto;
height: 100px;
}
如果您将宽度从 width: auto
调整为 width: 100px
,图像会调整大小以适合缩略图。如果这就是你想要的。
如果不介意IE支持,可以使用object-fit: cover;
属性.
css:
.outer {
margin: 0 auto;
width: 100px;
height: 100px;
padding: 5px;
border: 1px solid grey;
}
.thumbnail {
overflow: hidden;
}
img {
width: 100%;
height: 100px;
object-fit: cover;
}
html:
<div class="outer">
<div class="thumbnail">
<img src="https://placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97150&w=350&h=150" alt="" />
</div>
</div>
您的人像图片是始终保持相同大小,还是宽度可变?如果它们大小相同,您可以这样做:
http://codepen.io/tinyglowstudio/pen/ojNVGj?editors=110
HTML:
<img src="https://placeholdit.imgix.net/~text?txtsize=33&txt=300%C3%97100&w=300&h=100" alt="" />
我为了自己的数学把它改成了 300 和 100。你可以自己做代数:)
CSS:
img
position: absolute;
width: auto;
height: 100px;
z-index: 0;
clip: rect(0px 200px auto 100px);
transform: translate(-100px);
这适用于 IE
好的,这是一个新的答案,使用 JS 来设置我们的裁剪量:
http://codepen.io/tinyglowstudio/pen/ojNVGj?editors=111
HTML:
<img src="https://placeholdit.imgix.net/~text?txtsize=33&txt=450%C3%97250&w=450&h=250" alt="" />
CSS:
img
position: absolute;
width: auto;
height: 100px;
z-index: 0;
JS
$(".thumbnail img").each(function() {
var Height = 100 / $(this).height();
var Width = $(this).width() * (100 / $(this).height());
var trimAmount = (Width - 100) / 2;
$(this).css({
'transform' : 'translate(-' + trimAmount + 'px, 0)',
'clip' : 'rect(0 ' + (100 + trimAmount) + 'px 100px ' + trimAmount + 'px)'});
});