html - 如何使用 CSS 居中和裁剪图像以始终显示为方形?

标签 html css

我需要始终仅使用 CSS 将随机大小的图像裁剪为 160x160 的正方形。 图片在裁剪时应保持居中。

我的标记应该是:

<a href="#" class="cropper">
   <img src="image" alt="description" />
</a>

在 StackOverflow 上搜索我找到了一些答案(例如 CSS - How to crop an image to a square, if it's already square then resize it ),但它们不适用于您的图像水平(宽)垂直(高)更大的情况.

具体来说,我需要能够像这样呈现宽幅图像:

wide image

还有像这样的高大图片:

tall image

正方形,事先不知道哪个是水平矩形或垂直矩形。它还应该支持已经平方的图像。

最佳答案

jsFiddle Demo

div {
    width: 250px;
    height: 250px;
    overflow: hidden;
    margin: 10px;
    position: relative;
}
img {
    position: absolute;
    left: -1000%;
    right: -1000%;
    top: -1000%;
    bottom: -1000%;
    margin: auto;
    min-height: 100%;
    min-width: 100%;
}
<div>
    <img src="https://i.postimg.cc/TwFrQXrP/plus-2.jpg" />
</div>


关于尺寸的说明

作为Salman A评论中提到,我们需要设置 img 的位置坐标(上、左、下、右),以使用高于图像实际尺寸的百分比。我在上面的例子中使用了1000%,当然你可以根据自己的需要进行调整。

Before and after the fix

* 进一步说明:当我们设置imgleftright(或者:top底部)坐标为-100%(包含div),整体允许的宽度(或: img高度),最多可以是包含div宽度的300% (或:高度),因为它是 div 的宽度(或:高度)和 (或:)坐标。

关于html - 如何使用 CSS 居中和裁剪图像以始终显示为方形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18673900/

相关文章:

html - 网格在响应部分飞来飞去

html - 使用 CSS 为行着色

html - 带背景的三 Angular 形底部 CSS

php - 如何以 JSON 形式传输字典

css - .class > .class 和 .class .class 的区别

css - Tailwind CSS + VueJS 单文件组件和 VS Code 集成

javascript - 如何使用reactjs/javascript在单个Excel工作表中导出2个表

HTML+CSS : How to add shadow (as image) to image?

javascript - 查找并更改标签中文本的颜色

html - CSS - 将文本保留在图像下方