欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

如何阻止flex-box將其他元素推出容器?

錢良釵2年前7瀏覽0評論

這有點難以解釋,但是考慮一個帶有菜單的flex標題,然后右邊是固定寬度的其他內(nèi)容。隨著窗口寬度的縮小,菜單的空間就變小了。最終,菜單將其他東西推出容器。

這里是工作示例。

嚴重的

enter image description here

請注意& quot其他事情& quot向右傾斜。

將overflow: hidden添加到菜單容器元素中會使& quot其他事情& quot不會被逼迫。然而,這也阻止了下拉菜單的顯示,當然。我試圖通過設(shè)置overflow-x: hidden來解決這個問題;溢出-y:可見,但這顯然不是一個有效的設(shè)置。

更好,但沒有下拉菜單

enter image description here

(忽略那個& quot項目1 & quot一直隱藏著。在真正的代碼& quot項目5 & quot將被移動到一個溢出菜單-不包括在這里的演示。)

問題

我怎樣才能讓它像下面的例子一樣工作,但不在菜單中添加溢出:隱藏?也就是說,我怎樣才能阻止flex-box按下& quot其他事情& quot向右走?

TL;DR .查看底部鏈接的CodePen示例。

有限的空間+多種元素=不可避免的溢出內(nèi)容 你的。徽標占用50px的空間。其他東西占200px。因為您沒有將flex-wrap設(shè)置為。菜單,它的寬度不會比內(nèi)容小。這意味著,隨著視窗寬度縮小,您的。表頭必然會溢出。

設(shè)置您的。溢出菜單:隱藏;也不會對你有利。一旦你的項目1和項目5被裁剪出來,你的用戶將無法滾動到他們,因為溢出:隱藏;禁止它。

flex-wrap:纏繞;和@media實現(xiàn)更好的響應(yīng) 將柔性包裝添加到。菜單會是一個好的開始。這樣,在小視口中。菜單將根據(jù)需要靈活換行。此外,為了適應(yīng)換行行為,我建議您從。頁眉并使用填充以保持一致性。

使用@media進行響應(yīng)式布局對你來說會是一個更好的長期解決方案。這里我建議調(diào)整。標志和。以小視角為例。在現(xiàn)實生活中,你可能想引入一個移動專用的菜單UI(比如漢堡按鈕),而不是保持所有菜單項都可見。比方說,在較小的屏幕上(& lt640像素),顯示50像素的徽標和200像素的其他東西,所有這些單獨的菜單項根本不會優(yōu)雅地工作。

請參見此處的CodePen示例

使用示例2并移除溢出隱藏類。添加最小寬度:0;以修復(fù)溢出問題。然后設(shè)置下拉菜單顯示:無;。我添加了一個名為item-4的類到你的第一個子菜單中。然后你可以使用下面的CSS來顯示下拉菜單。

.dropdown-menu {
  display: none;
}

.dropdown > div.item-4:hover ~ .dropdown-menu {
  display: block;
}

小提琴

當有一個包裝器時,我所能找到的解決方案都不能完成工作,我最終發(fā)現(xiàn)使用position: absolute可以解決問題。

.flex {
  display: flex;
  flex-flow: row wrap;
  justify-content: space-between;
}

.col {
  overflow: hidden;
}

.col-a,
.col-b {
  flex: 0 0 40%
}

.col-c {
  flex: 0 0 20%;
}

.nowrap {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.wrapper {
  position: absolute;
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  padding: 1ex;
  overflow: hidden;
  background-color: silver;
}

<ul class="flex">
  <li class="col col-a">
   Col A
  </li>
  <li class="col col-b">
   <div class="wrapper">
     Col B
     <div class="nowrap">
       Something to long that pushes out `Col C` to next line
       even with `overflow: hidden`
     </div>
   <div>
  </li>
  <li class="col col-c">
    Col C
  </li>
</ul>