css - 使图像适合 div 并垂直对齐

标签 css

JSFiddle

我有一个流动布局的 div,我需要保持纵横比为 1:1。在这个 div 中,我有时有文本,有时有图像,有时两者都有。

文本需要垂直对齐。

图像需要垂直对齐并适合 div 并保持其自身的纵横比。

我已经实现了上面的大部分,我唯一的问题是我无法让图像垂直对齐并且同时不超过 div 的大小。

这使 div 保持 1:1 的比例:

#upload-drop{
    background-color: #e6e6e6;
    position: relative; 
}

#upload-drop:before{
    content: "";
    display: block;
    padding-top: 100%;
}

#upload-drop >div{
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
}

垂直对齐内容:

.valign-center{
    text-align: center;
    white-space: nowrap;
}
.valign-center:before {
    content: '';
    display: inline-block;
    height: 100%;
    vertical-align: middle;
    margin-right: -0.25em;
}
.valign-center-content{
    display: inline-block;
    vertical-align: middle;
}

最后,这使图像保持其宽高比并适合父 div:

#upload-img {
    width: 100%;
    height: 100%;
}    
img{  
    width:auto;
    height:auto;
    max-width: 100%;
    max-height: 100%;
}

如果我删除 #upload-img 上的宽度和高度,所有内容都会垂直对齐,但纵向图像现在将不再适合 div

我怎样才能让他们一起玩得开心?

最佳答案

通过这些更改,您的示例可以在流动宽度下工作。我不确定他们会对极端的肖像图像有何 react 。

如果不更改为 80% 宽度,图像将保持居中,但会脱离父元素的边界。

#upload-img{
    width: 100%;
    max-height: 100%;
}    
img{  
    width:auto;
    height:auto;
    max-width: 80%;
    max-height: 100%;
}

关于css - 使图像适合 div 并垂直对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29284578/

相关文章:

javascript - 如何改变滚动条的颜色?

javascript - 如何在没有浏览器和 yslow/firebug 等工具的情况下使用 javascript 和 cookie 测量页面速度

javascript - 带有CSS转换的 slider 中的无限循环

Html/css 高度与其他 div 不同

css - 禁用波旁径向渐变后备颜色?

html - 内联列表垂直对齐

javascript - 带有 Bootstrap 的可扩展 div

javascript - 如何将 x,y 坐标转换为 Angular ?

javascript - React Link 标签阻止 flex-boxes 工作

javascript - 如何使用 javascript(无 JQuery)动态更改 CSS 类的属性