填充底部不能在firefox& IE11

时间:2018-02-08 13:52:30

标签: html css firefox flexbox cross-browser

JsFiddle

CSS

body, html {
  background: violet
}
* {
  margin: 0;
  padding: 0
}
.fixed {
  height: 100%;
  width: 300px;
  background: #fff;
  right: 0;
  position: absolute;
  top: 0;
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
  border-left: 1px solid red;
}
.container {
      -ms-flex: 1 1 auto;
    -webkit-flex: 1 1 auto;
    flex: 1 1 auto;
    overflow-y: auto;
    box-sizing: border-box;
    padding: 30px 60px;
}
.footer {
  border-top: 1px solid #f0f0f0;
  box-sizing: border-box;
  padding-left: 35px;
  background: red
}

我在 Chrome & Firefox 浏览器。我也附上了两个截图。我想知道为什么 padding-bottom:60px 在Firefox中不起作用。但是,它在Chrome浏览器中运行良好。也不适用于IE11

在Chrome浏览器中(工作正常):

enter image description here

在Firefox浏览器中(Padding Bottom无效。为什么?):

enter image description here

我真的不明白这个..

2 个答案:

答案 0 :(得分:2)

有很多原因告诉很多像溢出属性这样的专家导致这个或显示:如果你搜索一个原因,flex处理填充有点不同。 @Temani Afif是正确的并且也纠正了我,这是最近发现的overflow-y:scrolloverflow-y:auto未考虑填充底部的错误。

https://searchcode.com/codesearch/view/469891/

为了快速解决您可以做的事情,而不是在具有overflow-y属性集的flex项目上应用底部填充,而是将其应用于项目后面的伪元素。

.container {
  -ms-flex: 1 1 auto;
  -webkit-flex: 1 1 auto;
  flex: 1 1 auto;
  overflow-y: auto;
  box-sizing: border-box;
  padding: 30px 60px 0 60px;
}

.container:after {
  content:'';
  display:block;
  padding-bottom:30px;
}

希望这可以帮助你和所有其他人。

答案 1 :(得分:-1)

这是因为overflow-y: auto;规则。试试这个CSS

.container {
    -ms-flex: 1 1 auto;
    -webkit-flex: 1 1 auto;
    flex: 1 1 auto;
    overflow-y: auto;  /* This rule affect the padding-bottom, quit it and see the results */
    box-sizing: border-box;
    padding: 30px 60px;
}
.footer {
  border-top: 1px solid #f0f0f0;
  box-sizing: border-box;
  padding-left: 35px;
  background: red;
  margin-top: 60px; /* This rule add the effect you want */
}

修改

理论上,填充底部在那里,但当你应用overflow-y:auto;时,滚动条会占用所有可用空间。

如果您不想添加margin-top: 60px;,可以试试这个新的CSS:

.container {
      -ms-flex: 1 1 auto;
    -webkit-flex: 1 1 auto;
    flex: 1 1 auto;
    overflow-y: auto;
    box-sizing: border-box;
}
.container p {
    padding: 30px 60px;
}
.footer {
  border-top: 1px solid #f0f0f0;
  box-sizing: border-box;
  padding-left: 35px;
  background: red;
}

更新

或尝试此解决方案:

.container {
    overflow-y: auto;
    padding: 30px 60px;
}
.container p {
    padding: 0 0 60px 0;
}