我想显示具有一定宽度和高度的URL中的图像,即使它具有不同的大小比例 . 所以我想调整大小(保持比例),然后将图像剪切到我想要的大小 .
我可以用html img
属性调整大小,我可以用 background-image
剪切 .
我怎么能两个都做?
例:
这个图片:
大小 800x600
像素,我想显示像 200x100
像素的图像
使用 img
我可以调整图像大小 200x150px
:
<img
style="width: 200px; height: 150px;"
src="http://img1.jurko.net/wall/paper/donald_duck_4.jpg">
这给了我这个:
<img style="width: 200px; height: 150px;" src="http://img1.jurko.net/wall/paper/donald_duck_4.jpg">
并使用 background-image
我可以剪切图像 200x100
像素 .
<div
style="background-image:
url('http://img1.jurko.net/wall/paper/donald_duck_4.jpg');
width:200px;
height:100px;
background-position:center;"> </div>
给我:
<div style="background-image:url('http://img1.jurko.net/wall/paper/donald_duck_4.jpg'); width:200px; height:100px; background-position:center;"> </div>
我怎么能两个都做?
调整图像大小,然后将其剪切为我想要的大小?
17 回答
以下代码将为您裁剪图像 . 你可以玩object-fit
谢谢sanchothefat .
我对你的答案有所改进 . 由于裁剪非常适合每个图像,因此这个定义应该是HTML而不是CSS .
我最近需要这样做 . 我想制作一个NOAA图表的缩略图链接 . 由于他们的图表可以随时更改,我希望我的缩略图随之改变 . 但是他们的图表有一个问题:它在顶部有一个巨大的白色边框,所以如果你只是缩放它来制作缩略图,你最终会在文档中留下无关的空白 .
这是我解决它的方式:
http://sealevel.info/example_css_scale_and_crop.html
首先,我需要做一点算术 . NOAA的原始图像为960×720像素,但前七十个像素是多余的白色边框区域 . 我需要一个348×172的缩略图,顶部没有额外的边框区域 . 这意味着原始图像的期望部分是720-70 = 650像素高 . 我需要将其缩小到172像素,即172/650 = 26.5% . 这意味着需要从缩放图像的顶部删除70 = 19行像素中的26.5% .
所以…
height=191
margin-bottom:-19px
top:-19px
生成的HTML如下所示:
正如您所看到的,我选择设置包含<a>标签的样式,但您可以设置<div>样式 .
这种方法的一个工件是,如果显示边框,则顶部边框将丢失 . 因为无论如何我使用border = 0,这对我来说不是问题 .
我所做的就是创建一个服务器端脚本,它将在服务器端调整大小并裁剪图片,这样它就可以在interweb上发送更少的数据 .
这是相当微不足道的,但如果有人有兴趣,我可以挖掘并发布代码(asp.net)
有services像Filestack将为你做这个 .
它们会显示您的图片网址,并允许您使用网址参数调整其大小 . 这很简单 .
在调整为200x100但保持纵横比后,您的图像将如下所示
整个网址看起来像这样
但重要的是公平
你试着用这个吗?
.centered-and-cropped { object-fit: cover }
我需要调整图像的大小,居中(垂直和水平)并裁剪它 .
我很高兴地发现,它可以在单个css-line中完成 . 查看此处的示例:http://codepen.io/chrisnager/pen/azWWgr/?editors=110
以下是该示例中的
CSS
和HTML
代码:CSS:
HTML:
您可以使用两种方法的组合,例如 .
CSS:
您可以使用负
margin
在<div/>
内移动图像 .在裁剪类中,放置要显示的图像大小:
html看起来像:
实况示例:https://jsfiddle.net/de4Lt57z/
HTML:
CSS:
Explanation: 此处图像的大小由图像的宽度和高度值调整 . 裁剪是通过剪辑属性完成的 .
有关剪辑属性的详细信息,请访问:http://tympanus.net/codrops/2013/01/16/understanding-the-css-clip-property/
包含div基本上通过隐藏溢出来裁剪图像 .
你可以将img标签放在div标签中并同时执行这两个操作,但我建议不要在浏览器中缩放图像 . 由于浏览器具有非常简单的缩放算法,因此它在大多数时间都是糟糕的工作 . 最好先在Photoshop或ImageMagick中进行缩放,然后将它提供给客户端,非常漂亮 .
如果你正在使用Bootstrap,尝试使用
{ background-size: cover; }
为<div>
也许给div一个类说<div class="example" style=url('../your_image.jpeg');>
所以它变成div.example{ background-size: cover}
使用CSS3,可以使用background-size更改
background-image
的大小,同时实现两个目标 .css3.info上有a bunch of examples .
Implemented based on your example,使用donald_duck_4.jpg . 在这种情况下,
background-size: cover;
正是您想要的 - 它适合background-image
覆盖包含<div>
的整个区域并剪切多余的部分(取决于比率) .css3 background-image background-size