缩放图像直到 X 或 Y 与容器相同,然后裁剪其余部分

发布于 2024-10-25 03:01:22 字数 216 浏览 2 评论 0 原文

我正在多个位置加载图像,网站主题将以不同的尺寸显示它们。我尝试了 CSS 属性,发现我可以使用高度和宽度参数缩放图像,并使用位置:相对和溢出:隐藏来裁剪图像。

但我想做的是两者的结合。缩小图像,直到宽度等于容器元素的宽度或高度等于容器元素的高度(以先到者为准)。然后裁剪其余部分。

因此,无论形状如何,图像都应该成比例并且填充容器。

有什么想法吗?

奇妙

I am loading images in multiple places where the site theme will have them displayed in different sizes. I experimented with the CSS properties and found that I could scale the image using the height and width parameters and crop the image using position:relative and overflow:hidden.

What I want to do though is a combination of that. To scale the image down until the width is the width of the container element or the height is the height of the container element (which ever comes first). Then crop the rest.

Thus the image should be in proportion and also fill the container, regardless of shape.

Any ideas?

Marvellous

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

不必了 2024-11-01 03:01:22

我不完全确定您要做什么,但这里有一些指导,可以帮助您仅使用 CSS 属性来实现一些图像大小调整和剪切。

下面的代码将根据容器的大小调整图像的大小。

<div id="THE-OUTER-CONTAINER" style="width:100px; height:100px; overflow:hidden;">
<img src="YOUR_PIC.jpg" style="width:100%; height:100%;"/>
</div>

关键是理解img的高度和宽度属性可以使用%。在设计中使用 % 非常有助于提供灵活性。当然,这会强制图像达到父容器的大小。因此,如果父容器的纵横比不正确,图像将会变形。

为了保持宽高比,您需要提前知道要扩展的尺寸,并且仅在 img 标签样式中指定。例如,下面的代码将仅沿着宽度正确调整图像的大小。

<div id="THE-OUTER-CONTAINER" style="width:100px; height:100px; overflow:hidden;">
<img src="YOUR_PIC.jpg" style="width:100%;"/>
</div>

使用上面的内容,如果 YOUR_PIC.jpg 是 200x200 像素,它会将其缩小到 100 像素,并从底部剪掉 100 像素。

如果您希望它在宽度/高度范围内扩展,您可以在 img 上使用“max-width”/“min-width”和“max-height”/“min-height”CSS 属性。将它们设置为您需要的值。然后你会得到这样的结果:

<div id="THE-OUTER-CONTAINER" style="width:100px; height:100px; overflow:hidden;">
<img src="YOUR_PIC.jpg" style="width:100%; height:100%; max-width:50px; max-height:50px;"/>
</div>

上面的代码将确保图像不会因大于 50px 的容器而扩展,但会因任何低于 50px 的容器而缩小。

或者,您可以使用一些 JavaScript 来动态计算尺寸。如果您事先不知道要调整哪个维度的大小,这将很有用。使用 javascript 计算大小,然后相应地设置上述 css 属性。我建议使用 jquery 让你的 javascript 生活更轻松。

希望这能让您走上正轨。

I'm not entirely certain what you're trying to do, but here is some guidance that will help you use only CSS properties to achieve some image resizing and clipping.

The code below will resize an image to whatever the container is.

<div id="THE-OUTER-CONTAINER" style="width:100px; height:100px; overflow:hidden;">
<img src="YOUR_PIC.jpg" style="width:100%; height:100%;"/>
</div>

the key is understanding that height and width properties of the img can use %. Using % in your design is great for giving flexibility. This will of course, force the image to whatever size the parent container is. So if the parent container is not the right aspect ratio it will deform the image.

To preserve aspect ratio you will need to know the dimension to expand along in advance and only specify that in the img tag style. For instance, the below will properly resize the image along the width only.

<div id="THE-OUTER-CONTAINER" style="width:100px; height:100px; overflow:hidden;">
<img src="YOUR_PIC.jpg" style="width:100%;"/>
</div>

Using the above, if YOUR_PIC.jpg is 200x200 pixels, it will scale it down to 100px and clip 100px off of the bottom.

If you want it to expand within ranges along with the width/height you would use 'max-width'/'min-width'and 'max-height'/'min-height' css properties on the img. Set those equal to what you need. Then you will have something like this:

<div id="THE-OUTER-CONTAINER" style="width:100px; height:100px; overflow:hidden;">
<img src="YOUR_PIC.jpg" style="width:100%; height:100%; max-width:50px; max-height:50px;"/>
</div>

The above will make sure that the image doesn't expand for containers larger than 50px but will shrink for any container below 50px.

Alternatively, you can use some javascript to do some calculation of sizes dynamically. This would be useful if you do not know in advance which dimension you want to resize upon. Use javascript to calc the size and then set the above css properties accordingly. I would suggest using jquery to make your javascript life easier.

Hope this gets you on the right track.

酷到爆炸 2024-11-01 03:01:22

更简洁地改写你的问题;您想要缩放图像以填充它的容器元素。目前仅使用 CSS3 无法完成此操作,但 Christian Varga 使用 jQuery 完美地实现了这一点:

https://christianvarga.com/jquery-resize-image-to-parent-container-plugin/

To reword your question more succinctly; you want to scale an image to fill it's container element. This can't be done at the moment only using CSS3, but Christian Varga has achieved it beautifully using jQuery:

https://christianvarga.com/jquery-resize-image-to-parent-container-plugin/

梨涡 2024-11-01 03:01:22

您可以使用 javascript 和 css。 JavaScript 检查图像高度/宽度,然后应用适当的 css。

Javascript(注意:使用与 jQuery 非常相似的 zeptojs):

$(window).bind("load", function() {
    $.each($("img"), function(index, item) {
        var image = new Image();
        image.src = item.src;
        if (image.height > image.width) {
            $(item).addClass("resize-x");
        } else {
            $(item).addClass("resize-y");
        }
    });
})

CSS:

.resize-x {width: 64px; height : auto;}
.resize-y {width: auto; height : 64px;}

You can use javascript and css. Javascript to check the image heights/widths, then apply appropriate css.

Javascript (note: using zeptojs which is pretty similar to jQuery):

$(window).bind("load", function() {
    $.each($("img"), function(index, item) {
        var image = new Image();
        image.src = item.src;
        if (image.height > image.width) {
            $(item).addClass("resize-x");
        } else {
            $(item).addClass("resize-y");
        }
    });
})

CSS:

.resize-x {width: 64px; height : auto;}
.resize-y {width: auto; height : 64px;}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文