Titel umgeschrieben als: Flexbox-Menü und Tabelle mit Titel – ist es möglich, den Titel basierend auf der Tabellenbreite zu kürzen?
P粉642920522
P粉642920522 2023-09-06 17:30:06
0
1
420

Ich möchte so etwas erreichen, indem ich Flexbox-CSS verwende. Das Menü hat eine feste Breite, aber die Tabelle kann automatisch wachsen und die Kopfzeile sollte die Tabellenbreite nicht überschreiten, auch wenn sie lang ist. Mit anderen Worten: Die Tabelle sollte in der Lage sein, die Spaltencontainer zu strecken, die Überschriften jedoch nicht.

+----+--------+
|菜单| 标题   |
|    +--------+
|    | 表格   |
+----+--------+

Einfache Umsetzung mit nur einer Flexsäule.

<html>
<style>
    td {
        font-size: 60px;
    }
    .container {
        font-size: 60px;
        background-color: yellow;
        display: flex;
        flex-direction: column;
    }
    .item1 {
        background-color: red;
        white-space: nowrap;
        overflow: hidden;
    }
    .item2 {
        background-color: blue;
    }
</style>
<body>
<div class="container">
  <div class="item1">Item 1 bla bla blaaas asd das dsa das das aaaaaaaaa</div>
  <div class="item2">
    <table>
      <tr>
        <td>data</td>
        <td>data</td>
        <td>data</td>
        <td>data</td>
        <td>data</td>
        <td>data</td>
        <td>data</td>
        <td>data</td>
        <td>data</td>
        <td>data</td>
        <td>data</td>
      </tr>
    </table>
  </div>
</div>
</body>
</html>

Aber beim Hinzufügen des Menüs funktioniert nicht alles richtig, der Titel wird nicht abgeschnitten.

<html>
<style>
    .main {
        display: flex;
    }
    .menu {
        background-color: #222222;
        width: 200px;
    }
    td {
        font-size: 60px;
    }
    .container {
        font-size: 60px;
        background-color: yellow;
        display: flex;
        flex-direction: column;
        width: 100%;
    }
    .item1 {
        background-color: red;
        white-space: nowrap;
        overflow: hidden;
    }
    .item2 {
        background-color: blue;
    }
</style>
<body>
<div class="main">
  <div class="menu">
    菜单
  </div>
  <div class="container">
    <div class="item1">Item 1 bla bla blaaas asd das dsa das das aaaaaaaaa</div>
    <div class="item2">
      <table>
        <tr>
          <td>data</td>
          <td>data</td>
          <td>data</td>
          <td>data</td>
          <td>data</td>
          <td>data</td>
          <td>data</td>
          <td>data</td>
          <td>data</td>
          <td>data</td>
          <td>data</td>
        </tr>
      </table>
    </div>
  </div>
</div>
</body>
</html>
P粉642920522
P粉642920522

Antworte allen(1)
P粉512526720

所以你希望包含标题的元素能够随其兄弟元素的大小而变化,但不影响其自身的子元素。

我唯一能想到的方法是将标题文本包裹在适当的元素中 - 在这个例子中是<span> - 然后使用position: absolute将其从流中取出,并在标题的父元素上使用position: relative。然后你需要给标题设置一些高度。

示例

我用flex: 0 0 200px替换了宽度。这将使菜单不会随着大小而变化,始终保持在200px。

.main {
  display: flex;
}

.menu {
  background-color: #222222;
  flex: 0 0 200px; /*改变了*/
}

td {
  font-size: 60px;
}

.container {
  font-size: 60px;
  background-color: yellow;
  display: flex;
  flex-direction: column;
  width: maxwidth; /*将宽度改为maxwidth*/
}

.item1 {
  background-color: red;
  white-space: nowrap;
  overflow: hidden;
  position: relative; /*添加了*/
  height: 1.2em; /*添加了*/
}

.item1 span {
  position: absolute; /*添加了*/
}

.item2 {
  background-color: blue;
}
<div class="main">
  <div class="menu">
    菜单
  </div>

  <div class="container">
    <div class="item1"><span>The quick brown fox jumped over the lazy dog</span></div>
    <div class="item2">
      <table>
        <tr>
          <td>数据</td>
          <td>数据</td>
          <td>数据</td>
        </tr>
      </table>
    </div>
  </div>
</div>
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage