我有一个48x48的div,里面有一个img元素,我想把它装进div而不会丢失任何部分,同时保持这个比例,是否可以使用html和css实现?
小智 309
使用max-height:100%; max-width:100%;
了DIV内的图像.
And*_*kyi 73
不幸的是,max-width + max-height并没有完全覆盖我的任务......所以我找到了另一个解决方案:
要在缩放时保存图像比例,您也可以使用object-fit
CSS3属性.
实用文章:使用CSS3控制图像宽高比
img {
width: 100%; /* or any custom size */
height: 100%;
object-fit: contain;
}
Run Code Online (Sandbox Code Playgroud)
坏消息:不支持IE(我可以使用)
Tho*_*mas 67
如果您在编写css时不知道图像的尺寸,则需要一些JavaScript来防止裁剪.
<div id="container">
<img src="something.jpg" alt="" />
</div>
<script type="text/javascript">
(function() {
var img = document.getElementById('container').firstChild;
img.onload = function() {
if(img.height > img.width) {
img.height = '100%';
img.width = 'auto';
}
};
}());
</script>
Run Code Online (Sandbox Code Playgroud)
#container {
width: 48px;
height: 48px;
}
#container img {
width: 100%;
}
Run Code Online (Sandbox Code Playgroud)
如果您使用JavaScript库,则可能希望利用它.
Max*_*Max 38
仅使用CSS:
div > img {
width: auto;
height : auto;
max-height: 100%;
max-width: 100%;
}
Run Code Online (Sandbox Code Playgroud)
ale*_*lex 16
<div>
<img src="something.jpg" alt="" />
</div>
Run Code Online (Sandbox Code Playgroud)
div {
width: 48px;
height: 48px;
}
div img {
display: block;
width: 100%;
}
Run Code Online (Sandbox Code Playgroud)
这将使图像扩展以填充其父级,其大小在div
CSS中设置.
小智 7
对我来说,以下 CSS 有效(在 Chrome、Firefox 和 Safari 中测试)。
有多种因素协同作用:
max-height: 100%;
、max-width: 100%;
、height: auto;
、width: auto;
使 img 缩放到先达到 100% 的尺寸,同时保持纵横比position: relative;
在容器和position: absolute;
子项中以及top: 50%;
容器left: 50%;
中的 img 左上角居中transform: translate(-50%, -50%);
将 img 移回左侧和顶部,移动大小的一半,从而使 img 在容器中居中CSS:
.container {
height: 48px;
width: 48px;
position: relative;
}
.container > img {
max-height: 100%;
max-width: 100%;
height: auto;
width: auto;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
Run Code Online (Sandbox Code Playgroud)
我有很多问题要解决这个问题,我找到的每一个解决方案似乎都没有用.
我意识到我必须将div显示设置为flex,所以基本上这是我的CSS:
div{
display: flex;
}
div img{
max-height: 100%;
max-width: 100%;
}
Run Code Online (Sandbox Code Playgroud)