CSS显示调整大小和裁剪的图像

Inf*_*tus 321 html css image background-image

我想显示具有一定宽度和高度的URL中的图像,即使它具有不同的大小比例.所以我想调整大小(保持比例),然后将图像剪切到我想要的大小.

我可以用html img属性调整大小,我可以用background-image.
我怎么能两个都做?

例:

这个图片:

在此输入图像描述


有大小800x600像素,我想像200x100像素的图像一样显示


随着img我可以调整图像200x150px:

<img 
    style="width: 200px; height: 150px;" 
    src="http://i.stack.imgur.com/wPh0S.jpg">
Run Code Online (Sandbox Code Playgroud)


这给了我这个:

<img style="width: 200px; height: 150px;" src="https://i.stack.imgur.com/wPh0S.jpg">
Run Code Online (Sandbox Code Playgroud)


并且background-image我可以剪切图像200x100像素.

<div 
    style="background-image:
           url('https://i.stack.imgur.com/wPh0S.jpg'); 
    width:200px; 
    height:100px; 
    background-position:center;">&nbsp;</div>
Run Code Online (Sandbox Code Playgroud)

给我:

<div style="background-image:url('https://i.stack.imgur.com/wPh0S.jpg'); width:200px; height:100px; background-position:center;">&nbsp;</div>
Run Code Online (Sandbox Code Playgroud)


我怎么能两个都做?
调整图像大小,然后将其剪切为我想要的大小?

rob*_*rke 462

您可以使用两种方法的组合,例如.

    .crop {
        width: 200px;
        height: 150px;
        overflow: hidden;
    }

    .crop img {
        width: 400px;
        height: 300px;
        margin: -75px 0 0 -100px;
    }
Run Code Online (Sandbox Code Playgroud)

CSS:

    <div class="crop">
        <img src="https://i.stack.imgur.com/wPh0S.jpg" alt="Donald Duck">
    </div>
Run Code Online (Sandbox Code Playgroud)

你可以使用负片margin来移动图像<div/>.

  • 只是其他人的注意事项:.crop高度和宽度定义了切割图像最底部和最右边部分的位置..crop img的高度和宽度将缩放图像..crop img margin将平移图像 (15认同)
  • 请注意,如果在包含的图像上设置position:relative,则需要在包含div上设置position:relative.如果你不这样做,我发现IE实际上不会剪辑图像. (9认同)
  • 另请注意,使用css裁剪图像时,用户仍需下载图像.在将图像发送给用户之前,最好使用php和GD或其他图像编辑库来调整图像大小和裁剪图像.这一切都取决于你想要什么,加载服务器或用户带宽. (6认同)

Joe*_*rra 134

随着CSS3这是可以改变的大小background-imagebackground-size,实现这两个目标的一次.

css3.info上有很多例子.

根据您的示例实现,使用donald_duck_4.jpg.在这种情况下,background-size: cover;正是你想要的 - 它适合background-image覆盖整个包含区域<div>并剪掉多余的部分(取决于比例).

.with-bg-size {
  background-image: url('https://i.stack.imgur.com/wPh0S.jpg');
  width: 200px;
  height: 100px;
  background-position: center;
  /* Make the background image cover the area of the <div>, and clip the excess */
  background-size: cover;
}
Run Code Online (Sandbox Code Playgroud)
<div class="with-bg-size">Donald Duck!</div>
Run Code Online (Sandbox Code Playgroud)

  • 是否可以使用`img`标签进行此操作? (12认同)
  • 对于`<img rel="nofollow noreferrer" />`标签,请查看[`object-fit:cover`](https://developer.mozilla.org/en/docs/Web/CSS/object-fit)和来自[CSS的相关值图像值和替换内容模块级别3规范](https://drafts.c​​sswg.org/css-images-3/#the-object-fit). (4认同)

Ana*_*iuk 104

你试过用这个吗?

CSS

我需要调整图像大小,居中(垂直和水平)并裁剪它.

我很高兴地发现,它可以在单个css-line中完成.请查看此处的示例:http://codepen.io/chrisnager/pen/azWWgr/?edit = 110


以下是该示例的代码HTMLCSS代码:

CSS:

.centered-and-cropped { object-fit: cover }
Run Code Online (Sandbox Code Playgroud)


HTML:

.centered-and-cropped { object-fit: cover }
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,我认为这是最容易和最普遍的方式 - 但它似乎不适用于IE:/在这里查找文档:https://developer.mozilla.org/de/docs/Web/CSS/对象的合 (2认同)
  • IE11或EDGE不支持CSS3对象(14)http://caniuse.com/#feat=object-fit (2认同)

小智 19

.imgContainer {
  overflow: hidden;
  width: 200px;
  height: 100px;
}
.imgContainer img {
  width: 200px;
  height: 120px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="imgContainer">
  <img src="imageSrc" />
</div>
Run Code Online (Sandbox Code Playgroud)

包含div基本上通过隐藏溢出来裁剪图像.


Mah*_*led 12

对之前答案的一个小补充包括object-fit: cover

物体位置

您可以使用 object-position 属性更改元素框中被替换元素的内容对象的对齐方式。

.trimmed-cover {
  object-fit: cover;
  width: 100%;
  height: 177px;
  object-position: center 40%;
}
Run Code Online (Sandbox Code Playgroud)
<img class="trimmed-cover" src="https://i.stack.imgur.com/wPh0S.jpg">
Run Code Online (Sandbox Code Playgroud)

结果.gif


小智 10

img {
  position: absolute;
  clip: rect(0px, 140px, 140px, 0px);
}
Run Code Online (Sandbox Code Playgroud)
<img src="w3css.gif" width="100" height="140" />
Run Code Online (Sandbox Code Playgroud)


Ped*_*eis 7

谢谢sanchothefat.

我对你的答案有所改进.由于裁剪非常适合每个图像,因此这个定义应该是HTML而不是CSS.

<div style="overflow:hidden;">
   <img src="img.jpg" alt="" style="margin:-30% 0px -10% 0px;" />
</div>
Run Code Online (Sandbox Code Playgroud)


Cur*_*rse 6

尝试使用该clip-path属性:

剪辑路径属性允许您将元素剪辑为基本形状或 SVG 源。

注意:clip-path 属性将取代已弃用的 Clip 属性。

img {
  width: 150px;
  clip-path: inset(30px 35px);
}
Run Code Online (Sandbox Code Playgroud)
<img src="https://i.stack.imgur.com/wPh0S.jpg">
Run Code Online (Sandbox Code Playgroud)

更多示例请参见此处


151*_*291 5

img {
    position: absolute;
    clip: rect(0px,60px,200px,0px);
} 
Run Code Online (Sandbox Code Playgroud)


Md.*_*fee 5

现场示例:https : //jsfiddle.net/de4Lt57z/

HTML:

<div class="crop">
  <img src="example.jpg" alt="..." />
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

    .crop img{
      width:400px;
      height:300px;
      position: absolute;
      clip: rect(0px,200px, 150px, 0px);
      }
Run Code Online (Sandbox Code Playgroud)

说明: 这里的图像是根据图像的宽度和高度值调整大小的。裁剪是由剪辑属性完成的。

有关剪辑属性的详细信息,请参见:http : //tympanus.net/codrops/2013/01/16/understanding-the-css-clip-property/


Hid*_*man 5

object-fit如果您正在玩<img>标签,可能会对您有所帮助

以下代码将为您裁剪图像。您可以玩适合对象的游戏

img {
  object-fit: cover;
  width: 300px;
  height: 337px;
}
Run Code Online (Sandbox Code Playgroud)