簡體   English   中英

在顯示中設置時,Flex-basis不作為寬度:flex設置為flex-direction:row

[英]Flex-basis is not acting as width when set within display: flex set to flex-direction: row

嗨,大家好,這里有更多詳細信息,包括html:[ https://codepen.io/Onsopen/pen/BmvNJe?editors=1100] [1 ]

body {
  display: flex;
  margin: 0;
  flex-direction: column; // so here i am using body tag as overall container
  min-height: 100vh;
  background: #2c3e50;
}

header {
  display: flex;
  justify-content: space-between;
}

main {
  display: flex; // <-here the main html tag is being set as display flex and by default is row direction. 
  flex-basis: 200px; // <-THE PROBLEM is the 200px are set as height??
}

article {
  flex-basis: 60%; // <- over here i am setting the tags within main tag individually
  background: #ecf0f1;
}

nav {
  flex-basis: 20%; <- over here i am setting the tags within main tag individually
  background: #95a5a6;
  order: -1;
}

aside {
  flex-basis: 20%; <- over here i am setting the tags within main tag individually
  background: #3498db; 
}

header, footer {
  background: #1abc9c;
  flex-basis: 100px;
}

我試圖讓聖杯布局Flexbox的,我面臨着一個奇怪的行為flex-basis被設置為主要標簽中display: flex與方向row 。所以項目都排隊作為行。

當試圖設置flex-basis而不是作用時或width實際上只是作為height而奇怪,考慮到flex-basis拉伸取決於主標簽內的方向和主軸設置為row的方向display: flex默認為display: flex

是因為<body>標簽設置為flex-direction:column正在影響<main>標簽項,因此在將主標簽項設置為flex-basis: 200px實際上是作為列中的單個項響應,就像另一個標簽內的項目(導航,旁邊,文章)由於在主要內部的彎曲行方向下而在側面伸展。 認為這將是原因。

然而,經過一些研究后,我在csstricks上讀到設置為display: flex項目不會受到其他父項的影響。 因此,當孩子的個別物品成為父母時,他們在方向方面不再受前一父母的影響。 只是一個猜測,但會喜歡一些幫助。 我想通過將body標記設置為row來解決這個問題並且它運行良好,因為它們有不同的解決方法,但在這種特定情況下看起來很奇怪。

有什么理由為什么這樣?

flex-basis: 200px; 設置在main是影響自己的height ,這是它的假設。

為什么,因為flex-basis是一個flex項屬性,它是否影響高度寬度是基於它的父級,flex容器的flex-direction ,在你的情況下是具有columnbody

在此輸入圖像描述


如果要控制main寬度,則需要使用width

main {
  display: flex;
  flex-basis: 200px;         /*  height  */
  width: 500px;              /*  width  */
}

在 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.

相關問題 當flex-direction為&#39;column&#39;時,CSS flex-basis無法正常工作 為什么 flex-direction: row 僅在我將元素設置為 display: inline-block 時才起作用? 當 flex-basis 和 flex-grow 都被設置時,彈性項目之間的空間是如何分配的? 如果未設置flex-basis或width,flexbox如何計算flex-item的寬度? 如何為設置彈性方向 <td> 分子 如何在 JavaScript 中應用 display: flex 和 flex-direction: row? 如何使用display = flex和flex-direction = row將div水平居中; 在 flex-direction: column 中顯示一行中的 flex 項 在 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> 最小寬度渲染在flex-direction:行和flex-direction:列上有所不同
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM