Answers:
这是CSS调整大小的一个已知问题,除非所有图像的比例都相同,否则您将无法通过CSS进行调整。
最好的方法是拥有一个容器,并调整图像尺寸之一(始终相同)。在我的示例中,我调整了宽度。
如果容器具有指定的尺寸(在我的示例中为宽度),则当告诉图像宽度为100%时,它将使其成为容器的整个宽度。将auto
在高度将会使图像具有高度成正比的新宽度。
例如:
HTML:
<div class="container">
<img src="something.png" />
</div>
<div class="container">
<img src="something2.png" />
</div>
CSS:
.container {
width: 200px;
height: 120px;
}
/* resize images */
.container img {
width: 100%;
height: auto;
}
您需要固定一侧(例如高度)并将另一侧设置为auto
。
例如
height: 120px;
width: auto;
那将仅基于一侧缩放图像。如果您发现裁剪图像可以接受,则可以设置
overflow: hidden;
到父元素,它将裁剪出超出其大小的所有内容。
overflow: hidden
以裁剪多余的部分
您可以使用object-fit
css3属性,例如
<!doctype html>
<html>
<head>
<meta charset='utf-8'>
<style>
.holder {
display: inline;
}
.holder img {
max-height: 200px;
max-width: 200px;
object-fit: cover;
}
</style>
</head>
<body>
<div class='holder'>
<img src='meld.png'>
</div>
<div class='holder'>
<img src='twiddla.png'>
</div>
<div class='holder'>
<img src='meld.png'>
</div>
</body>
</html>
不过,这并不是您的正确答案,因为它不会拉伸容器,但其行为类似于图库,您可以对其img
本身进行样式设置。
该解决方案的另一个缺点是对css3属性的支持仍然很差。此处提供了更多详细信息:http : //www.steveworkman.com/html5-2/javascript/2012/css3-object-fit-polyfill/。jQuery解决方案也可以在那找到。
如果您不想拉伸图像,请将其放入div容器中而不会溢出,并在需要时通过调整其边距来居中。
<div id="app">
<div id="container">
<img src="#" alt="something">
</div>
<div id="container">
<img src="#" alt="something">
</div>
<div id="container">
<img src="#" alt="something">
</div>
</div>
div#container {
height: 200px;
width: 200px;
border: 1px solid black;
margin: 4px;
}
img {
max-width: 100%;
max-height: 100%;
display: block;
margin: 0 auto;
}
transform: scale(0.5);
<div>Normal</div>
<div class="scaled">Scaled</div>
div {
width: 80px;
height: 80px;
background-color: skyblue;
}
.scaled {
transform: scale(0.7); /* Equal to scaleX(0.7) scaleY(0.7) */
background-color: pink;
}
参见:https : //developer.mozilla.org/en-US/docs/Web/CSS/transform-function/scale