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>
所以你希望包含标题的元素能够随其兄弟元素的大小而变化,但不影响其自身的子元素。
我唯一能想到的方法是将标题文本包裹在适当的元素中 - 在这个例子中是
<span>
- 然后使用position: absolute
将其从流中取出,并在标题的父元素上使用position: relative
。然后你需要给标题设置一些高度。示例
我用
flex: 0 0 200px
替换了宽度。这将使菜单不会随着大小而变化,始终保持在200px。