这是firefox中的错误吗?
CSS,
html, body {
height: 100%;
margin: 0;
padding: 0 0;
/*border: 4px solid black;*/
}
.container-fluid {
height: 100%;
width: 100%;
display: table;
padding-right: 0;
padding-left: 0;
/*border: 4px solid blue;*/
}
.row-fluid {
height: 100%;
width: 100%;
display: table-cell;
vertical-align: middle;
background-color:#990000;
/*border: 4px solid red;*/
}
.img-container {
height: 100vh;
width: 100%;
display: flex;
align-items: center;
}
.img-container img{
max-width:100%;
max-height:100%;
margin-left: auto;
margin-right: auto;
}
HTML,
<div class="container-fluid">
<div class="row-fluid">
<div class="img-container">
<!-- <img src="http://placehold.it/400x450"> -->
<img src="http://placehold.it/2000x450">
<!-- <img src="http://placehold.it/400x480"> -->
</div>
</div>
</div>
铬,
大图像将按比例缩小以适应我想要的屏幕宽度。
火狐,
图像不按比例缩小以适合屏幕。
我有什么想法可以解决这个问题吗?
修改
@-moz-document url-prefix() {
.img-container img {
width: 100%;
max-width: -moz-max-content;
}
}
答案 0 :(得分:1)
是的,Firefox中存在问题。它不会保持纵横比。要使其正常工作,只需向图片添加width: 100%;
即可解决问题。
.img-container img {
margin-left: auto;
margin-right: auto;
max-height: 100%;
max-width: 100%;
width: 100%;
}
<强> Working Fiddle 强>
检查相同类型的问题here。
修改强>
要解决使用max-width: -moz-max-content;
@-moz-document url-prefix() {
.img-container img { width: 100%; max-width: -moz-max-content; }
}
<强> Updated Fiddle 强>
答案 1 :(得分:1)
根据错误报告(见下文),这是Firefox的一个已知问题。 (尽管IE11也无法根据需要缩放图像。)
这似乎解决了Firefox中的问题:
而不是:
.img-container img {
max-width: 100%;
max-height: 100%;
margin-left: auto;
margin-right: auto;
}
试试这个:
.img-container img {
width: 100%; /* adjusted */
height: auto; /* adjusted */
margin-left: auto;
margin-right: auto;
}
另一种可能的解决方案是将table-layout: fixed
添加到主容器(.container-fluid
)。此错误报告中详细介绍了此方法:
答案 2 :(得分:1)
由于您已经使用CSS表格进行布局,我建议不使用flexbox这种方法。根据我的测试,它在Chrome和Firefox上运行良好。我在div
周围添加了img
。
<强> jsFiddle 强>
body { margin:0; }
.img-container {
display: table;
table-layout: fixed; /*required for responsive width in Firefox*/
width: 100%; /*required for fixed table layout*/
}
.img-container .image {
display: table-cell;
text-align: center;
vertical-align: middle;
height: 100vh; /*required for responsive height*/
}
.img-container .image img {
max-width: 100%;
max-height: 100%;
vertical-align: middle; /*remove whitespace*/
}
<div class="img-container">
<div class="image">
<img src="http://placehold.it/400x300">
<!-- <img src="http://placehold.it/2000x450"> -->
<!-- <img src="http://placehold.it/400x480"> -->
</div>
</div>
或者,您可以使用伪元素:before
或:after
+内联块进行垂直对齐。无需更改标记。
<强> jsFiddle 强>
body { margin:0; }
.img-container {
width: 100vw; /*required for responsive width in Firefox*/
height: 100vh;
text-align: center;
font-size: 0; /*remove whitespace*/
}
.img-container:after {
content: "";
display: inline-block;
height: 100%;
vertical-align: middle;
}
.img-container img {
max-width: 100%;
max-height: 100%;
vertical-align: middle;
}
<div class="img-container">
<img src="http://placehold.it/400x300">
<!-- <img src="http://placehold.it/2000x450"> -->
<!-- <img src="http://placehold.it/400x480"> -->
</div>