CSS裁剪图像到特定尺寸

Posted

技术标签:

【中文标题】CSS裁剪图像到特定尺寸【英文标题】:CSS crop image to certain dimensions 【发布时间】:2014-12-28 17:42:34 【问题描述】:

我已经四处寻找解决方案,但似乎找不到。

我需要在一组特定尺寸内显示图像。不得超过容器宽度的 100%:没问题。但是当我尝试将其假裁剪到容器的 50% 时;它是按比例缩放的。

100% 宽度的示例:http://i.stack.imgur.com/WTisJ.png

还有一个设置为仅占容器的 50% 时的问题示例:http://i.stack.imgur.com/J01sF.png

代码:

CSS:

.shopcontent
    margin-top: 120px;


.product
    margin: 2px;
    display: block;
    height: 250px;
    width: 300px;
    border: 2px solid #7f8c8d;
    border-radius: 10px;
    overflow: hidden;


.prodimg
    max-width: 100%;
    max-height: 50%; (The problem line!)
    border: 0px solid white;
    border-radius: 10px;


.prodimgcont
    overflow: hidden;

html

<div class="shopcontent">

<div class="product">

    <span class="prodimgcont">
    <img src="http://u.danmiz.net/xqz" class="prodimg"></img>
    </span>

    <p>This is a test</p>

</div>

</div>

感谢您的帮助:我确实试图找到一种方法,但似乎没有任何效果!

【问题讨论】:

【参考方案1】:

如果我正确理解您的问题,您可以像这样实现所需的裁剪效果:

HTML

<div class="img_container">

    <div class="cropper">
        <img src="https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQQWvNeCn17lshW3c9Z4PLXlTZe6GPf2oiNrLZQft1nPgld1WYb" />
    </div>
</div>

CSS

.img_container 
    width:300px;
    height:250px;    


.img_container .cropper 
    width:50%;
    height:50%;
    overflow:hidden;


.img_container .cropper img 
    width:200%;
    height:200%;


您使用.cropper div 设置所需的50% 宽度并添加overflow:hidden,然后将子img 标签设置为width:200%(祖父宽度的100%)

小提琴:http://jsfiddle.net/6hjL0pat/3/

编辑:

用你的用例更新小提琴

【讨论】:

【参考方案2】:

首先,您的img 标签应该是自动关闭的。所以替换

<img src="http://u.danmiz.net/xqz" class="prodimg"></img>

<img src="http://u.danmiz.net/xqz" class="prodimg" />

你的问题。我建议您为容器提供尺寸(顺便将 span 更改为 div),然后将您的图像分配为 background-image,因为它对于缩放图像更有用,尤其是使用 @987654329 @。

HTML

<div class="shopcontent">
    <div class="product">
        <div class="prodimgcont"></div>
        <p>This is a test</p>
    </div>
</div>

CSS

.shopcontent
    margin-top: 120px;


.product
    margin: 2px;
    display: block;
    height: 250px;
    width: 300px;
    border: 2px solid #7f8c8d;
    border-radius: 10px;
    overflow: hidden;


.prodimgcont
    display: block;
    max-width: 100%;
    height: 50%;
    max-height: 50%;
    border: 0px solid white;
    border-radius: 10px;
    background-image: url(http://u.danmiz.net/xqz);
    background-size: cover;
    overflow: hidden;

我创建了一个JSfiddle 来向您展示如何操作。

这是一种方法。 如果您绝对需要使用img 标签,请告诉我。也有解决方案。在任何情况下:您需要将所需的尺寸分配给图像的容器,而不是图像本身 - 因为需要切断图像。

请注意,background-size: cover 无法在 IE8 及更低版本中运行,除非您使用 a polyfill。

【讨论】:

谢谢!这很好:) 我需要能够更改 HTML 中的图像(最终 src 将由 php 提供......)所以我只是添加了一个样式标签。 啊当然。别客气。请注意我刚刚添加到答案中的关于 IE8 的 cmets。 其实,使用 标签会更容易...对不起:/ 我不会说它更容易,只是另一种方法。不过请继续,我不会编辑我的答案以包含img-way,因为乔纳森已经发布了一个答案。

以上是关于CSS裁剪图像到特定尺寸的主要内容,如果未能解决你的问题,请参考以下文章

裁剪图像并将其调整为特定尺寸

图像未裁剪为正确尺寸

避免图像裁剪并将其投射到固定的图像尺寸

如何在 PHP 中裁剪具有尺寸(没有质量损失)的图像?

Android - 如何使用视图布局尺寸裁剪 jpeg

当 CSS 中的尺寸未知时如何增加图像的宽度?