簡體   English   中英

在顯示屏上將高度設置為100%:如果'flex'行中的項目過多(僅Firefox),表格將無法工作

[英]Setting height 100% on display:table won't work if a 'flex' row has too many items (only firefox)

我有一張桌子,桌子的高度為100%,有三行,第一行和最后一行具有固定的高度,中間的一行沒有特定的高度,因此可以延伸到必要的高度。

問題是,如果您在該行中填充了太多項目,則表將太大,並且將超過100%。

<div id="wrapper">
<div id="first" class="row">
    <div>
    first
    </div>
</div>

<div id="second" class="row">
  <div>


    <div style="height:50px">
    cont0
    </div>
    <div style="height:50px">
    cont1
    </div>
    <div style="height:50px">
    cont2
    </div>
    <div style="height:50px">
    cont3
    </div>
    <div style="height:50px">
    cont4
    </div>
    <div style="height:50px">
    cont5
    </div>
  </div>
</div>
<div id="first" class="row">
     <div>
    last
    </div>
</div>

html, body {height:100%; margin:0; padding:0;}

#wrapper{
   width:300px;
   height:100%;
   display:table;
}
.row 
{
   display:table-row;
}

#first
{
   height:50px;
   margin-bottom:5px;
   background-color:#F5DEB3;    
}

#second{
   background-color:#9ACD32;
}
#second > div{
  height:100%;
  border: 1px solid red;
  overflow-y: auto;
}

這很難解釋,但是這個小提琴對此進行了演示: http : //jsfiddle.net/3EjX8/127/

用chrome鼠標調整表的大小,它將表現良好(滾動條出現在表內部)。 但是在firefox中調整它的大小,它將具有這種意外行為。

也許我錯了,而我正在承擔Chrome的大部分錯誤。

我只是想知道是否有可能像在chrome上那樣使它在firefox中表現出來。

謝謝。

我使它可以同時在Firefox和Chrome上使用。

  1. 不要為此使用display:table
  2. 您的ID為“ first”兩次。
  3. 您不需要div內的div
  4. 使用“計算”​​可以節省生命。

http://jsfiddle.net/foreyez/p3rcyofk/

<div id="wrapper">
    <div id="first" class="row">

        first

    </div>

    <div id="second" class="row">
      <div>


        <div style="height:50px">
        cont0
        </div>
        <div style="height:50px">
        cont1
        </div>
        <div style="height:50px">
        cont2
        </div>
        <div style="height:50px">
        cont3
        </div>
        <div style="height:50px">
        cont4
        </div>
        <div style="height:50px">
        cont5
        </div>
      </div>
    </div>
    <div id="last" class="row">

        last

    </div>
</div>


html, body {height:100%; margin:0; padding:0;}
#wrapper
{
   width:300px;
   height:100%;
}


#first,#last
{
   height:50px;
   background-color:#F5DEB3;

}

#second{
   background-color:#9ACD32;
}
#second {
  height:calc(100% - 100px);
  border: 1px solid red;
  overflow-y: auto;
}

在 a 中設置“width: auto”<div> 用“顯示:彎曲; flex-direction:行”不起作用</div><div id="text_translate"><p>我正在嘗試將一堆 div 並排放置,從左到右。 所以我使用 flexbox 方向設置為row 。</p><p> 我希望這些 div 中的每一個都從里面的內容中導出它們的高度和寬度,因此我將它們的高度和寬度保留為默認值。</p><p> 最后,我想使用 svg 作為背景。 為此,我使用了一個網格容器並將 svg 和 div 放置在同一列和同一行中,如此<a href="https://stackoverflow.com/a/51949049/9613633" rel="nofollow noreferrer">stackoverflow 帖子</a>中所建議的那樣。 我將 svg 的高度和寬度設置為100% ,以確保它填充整個背景。</p><p> 但是,當我將所有內容組合在一起時,div 的寬度設置不正確。 div 的高度似乎是由里面的內容設置的,但寬度似乎總是默認為300px 。 對於我的一生,我無法弄清楚這個寬度是如何計算的。 如果內容比300px寬,那么一切都按預期工作。 但是如果內容小於300px ,則容器永遠不會縮小以適應。</p><p> 如何確保 div 始終縮小以適應? 請參閱下面的代碼示例: </p><p></p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"><div class="snippet-code"><pre class="snippet-code-css lang-css prettyprint-override"> .top { padding: 20px; display: flex; flex-direction: row; }.grid-container { background-color: red; display: grid; }.svg { grid-column: 1; grid-row: 1; width: 100%; height: 100%; }.content { grid-column: 1; grid-row: 1; font-size: 100px; }</pre><pre class="snippet-code-html lang-html prettyprint-override"> This div has calculated width 300px for some reason &lt;div class="top"&gt; &lt;div class="grid-container" key="1"&gt; &lt;svg class="svg" viewBox="-10 -10 20 20" preserveAspectRatio="none"&gt; &lt;polygon strokeWidth="0" fill="yellow" points="0,-10 10,0 0,10 -10,0" /&gt; &lt;/svg&gt; &lt;div class="content"&gt; ab &lt;/div&gt; &lt;/div&gt; &lt;,-- more grid-containers --&gt; &lt;/div&gt; This works as expected &lt;div class="top"&gt; &lt;div class="grid-container"&gt; &lt;svg class="svg" viewBox="-10 -10 20 20" preserveAspectRatio="none"&gt; &lt;polygon strokeWidth="0" fill="yellow" points="0,-10 10,0 0,10 -10,0" /&gt; &lt;/svg&gt; &lt;div class="content"&gt; abcdefghijkl &lt;/div&gt; &lt;/div&gt; &lt;!-- more grid-containers --&gt; &lt;/div&gt;</pre></div></div><p></p></div>

[英]Setting “width: auto” inside a <div> with “display: flex; flex-direction: row” doesn't work

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 將彈性項目設置為 100% 高度 顯示:flex無法在Firefox或Safari瀏覽器中使用 只有Firefox使用display:table-cell忽略100%的高度 高度:100%; 不會工作 按百分比設置表行高度在Firefox上不起作用。 解決方案? IFRAME在IE8中不會顯示100%的高度,但在IE11和Firefox中可以顯示 高度為100%時將div設置為高度的100% Flex / CSS Div 不會增長到父身高的 100% 如果容器也具有以百分比表示的最小高度,則以百分比表示的CSS最小高度將不起作用 在 a 中設置“width: auto”<div> 用“顯示:彎曲; flex-direction:行”不起作用</div><div id="text_translate"><p>我正在嘗試將一堆 div 並排放置,從左到右。 所以我使用 flexbox 方向設置為row 。</p><p> 我希望這些 div 中的每一個都從里面的內容中導出它們的高度和寬度,因此我將它們的高度和寬度保留為默認值。</p><p> 最后,我想使用 svg 作為背景。 為此,我使用了一個網格容器並將 svg 和 div 放置在同一列和同一行中,如此<a href="https://stackoverflow.com/a/51949049/9613633" rel="nofollow noreferrer">stackoverflow 帖子</a>中所建議的那樣。 我將 svg 的高度和寬度設置為100% ,以確保它填充整個背景。</p><p> 但是,當我將所有內容組合在一起時,div 的寬度設置不正確。 div 的高度似乎是由里面的內容設置的,但寬度似乎總是默認為300px 。 對於我的一生,我無法弄清楚這個寬度是如何計算的。 如果內容比300px寬,那么一切都按預期工作。 但是如果內容小於300px ,則容器永遠不會縮小以適應。</p><p> 如何確保 div 始終縮小以適應? 請參閱下面的代碼示例: </p><p></p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"><div class="snippet-code"><pre class="snippet-code-css lang-css prettyprint-override"> .top { padding: 20px; display: flex; flex-direction: row; }.grid-container { background-color: red; display: grid; }.svg { grid-column: 1; grid-row: 1; width: 100%; height: 100%; }.content { grid-column: 1; grid-row: 1; font-size: 100px; }</pre><pre class="snippet-code-html lang-html prettyprint-override"> This div has calculated width 300px for some reason &lt;div class="top"&gt; &lt;div class="grid-container" key="1"&gt; &lt;svg class="svg" viewBox="-10 -10 20 20" preserveAspectRatio="none"&gt; &lt;polygon strokeWidth="0" fill="yellow" points="0,-10 10,0 0,10 -10,0" /&gt; &lt;/svg&gt; &lt;div class="content"&gt; ab &lt;/div&gt; &lt;/div&gt; &lt;,-- more grid-containers --&gt; &lt;/div&gt; This works as expected &lt;div class="top"&gt; &lt;div class="grid-container"&gt; &lt;svg class="svg" viewBox="-10 -10 20 20" preserveAspectRatio="none"&gt; &lt;polygon strokeWidth="0" fill="yellow" points="0,-10 10,0 0,10 -10,0" /&gt; &lt;/svg&gt; &lt;div class="content"&gt; abcdefghijkl &lt;/div&gt; &lt;/div&gt; &lt;!-- more grid-containers --&gt; &lt;/div&gt;</pre></div></div><p></p></div>
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM