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

文本溢出省略號在嵌套flexbox中不起作用

錢衛國1年前8瀏覽0評論

我有一個用flexboxes創建的兩列布局。

在右欄中,我有兩行,第一行包含標題,第二行包含頁面內容。

在標題中,我有三列,一個按鈕,一些文本和一個按鈕。

我希望按鈕位于列的左側和右側,文本占據任何額外的空間。

最后,我希望文本有white-space:nowrap和text-overflow:ellipsis屬性來截斷長標題。

我的問題是這樣的:我無法讓嵌套在另一個flexbox中的flexbox中的文本換行正常工作,如下圖所示:

http://jsfiddle.net/maxmumford/rb4sk3mz/3/

.container {
  display: flex;
  height: 100vh;
}
.left {
  width: 200px;
  background-color: yellow;
}
.right {
  flex: 1;
  background-color: blue;
  color: white;
}
.header {
  background: red;
  color: white;
  display: flex;
  flex-direction: row;
}
.header .content {
  white-space: nowrap;
  flex: 0 1 auto;
  text-overflow: ellipsis;
  overflow: hidden;
  min-width: 0;
}
.header .buttons {
  background: green;
  flex: 1 0 auto;
}
.header .content:hover {
  white-space: normal;
}

<div class="container">

  <div class="left">
    content left
  </div>
  <div class="right">
    <div class="header">
      <div class="buttons">buttons</div>
      <div class="content">
        This content is really long and should wrap with ellipses, but for some reason it doesn't work when it's nested in a container with display: flex
      </div>
      <div class="buttons">buttons</div>
    </div>
    content right
  </div>

</div>

您的代碼中有兩個問題阻止省略號工作:

div.right包含div.header,后者又包含按鈕和文本。

div.right是主容器(。容器)。

默認情況下,flex項目不能小于其內容的大小。彈性項目的初始設置是最小寬度:自動。

這意味著未換行的文本長度將為父flex項目設置最小大小。一種使flex項目收縮超過其內容的方法是將flex項目設置為min-width: 0。

你已經為。內容彈性項,但它需要在。也是正確的項目。

你已經得到了。內容元素設置為flex: 0 1自動。

這告訴flex項使用內容的大小(flex-basis: auto)。文本設置大小。

相反,將寬度設置為0,并根據需要讓flex容器分配空間。你可以用flex: 1 1 0來做這個,和flex: 1一樣。

.container {
  display: flex;
  height: 100vh;
}
.left {
  width: 200px;
  background-color: yellow;
}
.right {
  flex: 1;
  background-color: blue;
  color: white;
  min-width: 0;             /* NEW */
}
.header {
  background: red;
  color: white;
  display: flex;
  flex-direction: row;
}
.header .content {
  white-space: nowrap;
  flex: 1;                  /* ADJUSTMENT */
  text-overflow: ellipsis;
  overflow: hidden;
  min-width: 0;
}
.header .buttons {
  background: green;
  flex: 1 0 auto;
}
.header .content:hover {
  white-space: normal;
}

<div class="container">

  <div class="left">
    content left
  </div>
  <div class="right">
    <div class="header">
      <div class="buttons">buttons</div>
      <div class="content">
        This content is really long and should wrap with ellipses, but for some reason it doesn't work when it's nested in a container with display: flex
      </div>
      <div class="buttons">buttons</div>
    </div>
    content right
  </div>

</div>

以下各項的價值:

white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;

僅當元素的內容超出其寬度時才有效。

您可以設置的寬度。標題。內容:

.header .content {
    width: 50%;
}

它將按照您的預期工作: http://jsfiddle.net/t82pqks4/

上面的解決方案對我來說在一個非常嵌套的具有行和列的Flex布局中不起作用。它一直使我的h3標簽比父標簽寬,因為

white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;

但我意外發現,添加display:inline-grid;解決了問題并正確應用了省略號。

我不知道這對你是否有幫助,但對我來說是有幫助的。

我希望這個解決方案能幫助到其他人,因為我的頁面是一個巨大的flexbox嵌套組合。所以最小寬度0不管用,我試過的都不管用,除了這個。

在包含要換行的副本的flex列中,您需要這樣做。

.row {
  display: flex;
}

.col1 {
 position: relative;
 flex: 1 1 70%;
 overflow: hidden;
}

.nested {
  width: 100%;
  position: absolute;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.col2 {
  flex: 1 1 30%;
  padding-left: 1rem;
}

<div class="row">
  <div class="col1">
     <div class="nested">This is my really long copy that will push it out of the screen, and will not respect the elippse no matter what I do!!!</div>
  </div>
  <div class="col2">
    Last Text
  </div>
</div>