【问题标题】:CSS flexbox width 100% FirefoxCSS flexbox 宽度 100% Firefox
【发布时间】:2015-07-18 18:34:06
【问题描述】:

我在 Firefox 中遇到这种情况的问题。 #pager 采用其子项的宽度。但是,在 Chrome 中,它采用其父级的宽度。如何让#item-list 在 Firefox 中尊重其父级的宽度?

看看! https://jsfiddle.net/owmpatbh/2/

HTML:

<div id="wrapper">
  <div id="sidebar"></div>
    <div id="main">
      <div id="content">
        <p id="stuff">blahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblah</p>            
      </div>
      <div id="pager">
          <div id="item-list">
              <div class="item"></div>
              <div class="item"></div>
              <div class="item"></div>
              <div class="item"></div>
              <div class="item"></div>
              <div class="item"></div>
              <div class="item"></div>
              <div class="item"></div>
              <div class="item"></div>
              <div class="item"></div>
              <div class="item"></div>
              <div class="item"></div>
              <div class="item"></div>
              <div class="item"></div>
          </div>
      </div>
   </div>
</div>

CSS:

#wrapper {


 display: flex;
  width: 100%;
  height: 100%;
}

#sidebar {
  overflow: auto;
  flex: 0.25;
  border:3px solid green;
  min-height: 200px; 
}

#main {
  display: flex;
  flex: .75;
  flex-direction: column;
  border:3px solid orange;
}

#content {
  position: relative;
  width: 100%;
  flex: 0.85;
  border: 3px solid blue;
}

#pager {
  display: flex;
  position: relative;
  width: 100%;
  background-color: #fff;
  border: 3px solid pink;
  flex: 0.15;
}

#item-list {
  border: 1px solid black;
  width: 100%;
  overflow-x: scroll;
  overflow-y: hidden;
  white-space: nowrap;
}

.item {
    display: inline-block;
    padding: 5px;
    width: 200px;
    height: 200px;
    background-color: red;
}

#stuff {
    height: 200px;
}

*{
    margin: 3px;
}

【问题讨论】:

  • 由于某种原因,它似乎不喜欢固定的 200px 宽度。不知道为什么
  • 由于您使用的是 flex,因此您不需要在任何地方使用 width: 100%。取出它不会破坏 Chrome 中的任何内容,也不会使 Firefox 中的任何内容变得更糟。 Firefox 似乎想要#item-list 的固定宽度,但同样,我不知道为什么。它似乎不想正确处理 inline-block 子项(或者行为可能尚未明确定义?)

标签: css firefox flexbox


【解决方案1】:

firefox 对象#item-list 的宽度存在问题。我想不出其他任何东西,这是一个错误,至少 chrome 在宽度上不那么挑剔。所以,你要做的就是给它一个固定的宽度,就像 redbmk 所说的那样。所以这里是解决方案:

#item-list 的位置设置为absolute,并将width 设为100%(在示例中减去div 的边框)。

#pager {
  display: flex;
  position: relative;
  background-color: #fff;
  border: 3px solid pink;
  height:246px;
}

#item-list {
  border: 1px solid black;
  position:absolute;
  width: calc(100% - 9px);
  overflow-x: scroll;
  overflow-y: hidden;
  white-space: nowrap;
}

我还在您的代码中更改了一些小(不是很重要的事情)。

在这里查看:

Jsfiddle

干杯!

【讨论】:

    【解决方案2】:

    这是一个工作链接https://jsfiddle.net/ymvmf6zz/1/

    显然在#sidebar 和#main 上明确设置宽度使其工作。

    #sidebar{
        width: 25%;
    }
    #main{
        width: 75%;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-26
      • 2016-01-22
      • 1970-01-01
      • 2014-11-18
      • 2012-09-01
      • 1970-01-01
      • 2013-03-10
      相关资源
      最近更新 更多