How do I limit height of some divs to other divs in the same parent div with display flex row?

huangapple go评论98阅读模式
英文:

How do I limit height of some divs to other divs in the same parent div with display flex row?

问题

我有一个具有display: flex; flex-direction: row; flex-wrap: wrap;的父div。在它内部有子div,我们称它们为a、b、c、d。

每个div都有<ul></ul>,里面包含多个项目。所以大致如下:

  1. <style>
  2. .flex-container {
  3. display: flex;
  4. flex-direction: row;
  5. }
  6. .list-container {
  7. padding: 10px;
  8. border: 1px solid black;
  9. }
  10. .list-container h2 {
  11. margin-top: 0;
  12. }
  13. .list-container ul {
  14. margin-top: 0;
  15. margin-bottom: 0;
  16. padding-left: 20px;
  17. }
  18. </style>
  19. <div class="flex-container">
  20. <div class="list-container">
  21. <h2>List A</h2>
  22. <ul>
  23. <li>Item 1</li>
  24. <li>Item 2</li>
  25. <li>Item 3</li>
  26. </ul>
  27. </div>
  28. <div class="list-container">
  29. <h2>List B</h2>
  30. <ul>
  31. <!-- 与此类似的更多项目 -->
  32. </ul>
  33. </div>
  34. <div class="list-container">
  35. <h2>List C</h2>
  36. <ul>
  37. <!-- 与此类似的更多项目 -->
  38. </ul>
  39. </div>
  40. <div class="list-container">
  41. <h2>List D</h2>
  42. <ul>
  43. <li>Item 1</li>
  44. <li>Item 2</li>
  45. </ul>
  46. </div>
  47. </div>

div b 和 c 可能包含大量项目,因此我想限制它们的高度。如何将b和c的高度限制为其他所有div的最大高度,如果它们更大,让它们在这种情况下可以滚动?我需要一个没有在css中固定a和d的高度的解决方案(类似于height: 100px;),因为它们是动态的,可以改变它们的高度。

英文:

I have a parent div with display:flex; flex-direction: row; flex-wrap: wrap;
Inside it there are child divs, lets call them a b c d

Each div has &lt;ul&gt;&lt;/ul&gt; with multiple items inside it.
So it's something like this:

<!-- begin snippet: js hide: true console: true babel: false -->

<!-- language: lang-html -->

  1. &lt;style&gt;
  2. .flex-container {
  3. display: flex;
  4. flex-direction: row;
  5. }
  6. .list-container {
  7. padding: 10px;
  8. border: 1px solid black;
  9. }
  10. .list-container h2 {
  11. margin-top: 0;
  12. }
  13. .list-container ul {
  14. margin-top: 0;
  15. margin-bottom: 0;
  16. padding-left: 20px;
  17. }
  18. &lt;/style&gt;
  19. &lt;div class=&quot;flex-container&quot;&gt;
  20. &lt;div class=&quot;list-container&quot;&gt;
  21. &lt;h2&gt;List A&lt;/h2&gt;
  22. &lt;ul&gt;
  23. &lt;li&gt;Item 1&lt;/li&gt;
  24. &lt;li&gt;Item 2&lt;/li&gt;
  25. &lt;li&gt;Item 3&lt;/li&gt;
  26. &lt;/ul&gt;
  27. &lt;/div&gt;
  28. &lt;div class=&quot;list-container&quot;&gt;
  29. &lt;h2&gt;List B&lt;/h2&gt;
  30. &lt;ul&gt;
  31. &lt;li&gt;Item 1&lt;/li&gt;
  32. &lt;li&gt;Item 2&lt;/li&gt;
  33. &lt;li&gt;Item 3&lt;/li&gt;
  34. &lt;li&gt;Item 4&lt;/li&gt;
  35. &lt;li&gt;Item 5&lt;/li&gt;
  36. &lt;li&gt;Item 6&lt;/li&gt;
  37. &lt;li&gt;Item 7&lt;/li&gt;
  38. &lt;li&gt;Item 8&lt;/li&gt;
  39. &lt;li&gt;Item 9&lt;/li&gt;
  40. &lt;li&gt;Item 10&lt;/li&gt;
  41. &lt;li&gt;Item 11&lt;/li&gt;
  42. &lt;li&gt;Item 12&lt;/li&gt;
  43. &lt;li&gt;Item 13&lt;/li&gt;
  44. &lt;li&gt;Item 14&lt;/li&gt;
  45. &lt;li&gt;Item 15&lt;/li&gt;
  46. &lt;/ul&gt;
  47. &lt;/div&gt;
  48. &lt;div class=&quot;list-container&quot;&gt;
  49. &lt;h2&gt;List C&lt;/h2&gt;
  50. &lt;ul&gt;
  51. &lt;li&gt;Item 1&lt;/li&gt;
  52. &lt;li&gt;Item 2&lt;/li&gt;
  53. &lt;li&gt;Item 3&lt;/li&gt;
  54. &lt;li&gt;Item 4&lt;/li&gt;
  55. &lt;li&gt;Item 5&lt;/li&gt;
  56. &lt;li&gt;Item 6&lt;/li&gt;
  57. &lt;li&gt;Item 7&lt;/li&gt;
  58. &lt;li&gt;Item 8&lt;/li&gt;
  59. &lt;li&gt;Item 9&lt;/li&gt;
  60. &lt;li&gt;Item 10&lt;/li&gt;
  61. &lt;li&gt;Item 11&lt;/li&gt;
  62. &lt;li&gt;Item 12&lt;/li&gt;
  63. &lt;li&gt;Item 13&lt;/li&gt;
  64. &lt;li&gt;Item 14&lt;/li&gt;
  65. &lt;li&gt;Item 15&lt;/li&gt;
  66. &lt;li&gt;Item 16&lt;/li&gt;
  67. &lt;li&gt;Item 17&lt;/li&gt;
  68. &lt;li&gt;Item 18&lt;/li&gt;
  69. &lt;li&gt;Item 19&lt;/li&gt;
  70. &lt;/ul&gt;
  71. &lt;/div&gt;
  72. &lt;div class=&quot;list-container&quot;&gt;
  73. &lt;h2&gt;List D&lt;/h2&gt;
  74. &lt;ul&gt;
  75. &lt;li&gt;Item 1&lt;/li&gt;
  76. &lt;li&gt;Item 2&lt;/li&gt;
  77. &lt;/ul&gt;
  78. &lt;/div&gt;
  79. &lt;/div&gt;

<!-- end snippet -->

Divs b and c can take very huge amount of items, so I want to limit their height.

How do I limit b and c height to max height of all other divs, if they are bigger, making them scrollable in this case? I need a solution without a and d height fixed in css(something like height: 100px;) as some internet solutions suggest because they are dynamic and can change their height too

答案1

得分: 2

以下是翻译的代码部分:

  1. <div class="flex-container">
  2. <div class="list-container">
  3. <h2>List A</h2>
  4. <ul>
  5. <li>Item 1</li>
  6. <li>Item 2</li>
  7. <li>Item 3</li>
  8. </ul>
  9. </div>
  10. <div class="list-container flexible">
  11. <div class="flexible-child">
  12. <h2>List B</h2>
  13. <ul>
  14. <li>Item 1</li>
  15. <li>Item 2</li>
  16. <li>Item 3</li>
  17. <li>Item 4</li>
  18. <li>Item 5</li>
  19. <li>Item 6</li>
  20. <li>Item 7</li>
  21. <li>Item 8</li>
  22. <li>Item 9</li>
  23. <li>Item 10</li>
  24. <li>Item 11</li>
  25. <li>Item 12</li>
  26. <li>Item 13</li>
  27. <li>Item 14</li>
  28. <li>Item 15</li>
  29. </ul>
  30. </div>
  31. </div>
  32. <div class="list-container flexible">
  33. <div class="flexible-child">
  34. <h2>List C</h2>
  35. <ul>
  36. <li>Item 1</li>
  37. <li>Item 2</li>
  38. <li>Item 3</li>
  39. <li>Item 4</li>
  40. <li>Item 5</li>
  41. <li>Item 6</li>
  42. <li>Item 7</li>
  43. <li>Item 8</li>
  44. <li>Item 9</li>
  45. <li>Item 10</li>
  46. <li>Item 11</li>
  47. <li>Item 12</li>
  48. <li>Item 13</li>
  49. <li>Item 14</li>
  50. <li>Item 15</li>
  51. <li>Item 16</li>
  52. <li>Item 17</li>
  53. <li>Item 18</li>
  54. <li>Item 19</li>
  55. </ul>
  56. </div>
  57. </div>
  58. <div class="list-container">
  59. <h2>List D</h2>
  60. <ul>
  61. <li>Item 1</li>
  62. <li>Item 2</li>
  63. </ul>
  64. </div>
  65. </div>

希望这有所帮助。如果您需要进一步的翻译或帮助,请随时提问。

英文:

Assuming we're allowed to add an extra div inside the height-limited divs, we can do something like this:

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-css -->

  1. .flex-container {
  2. display: flex;
  3. flex-direction: row;
  4. }
  5. .list-container {
  6. padding: 10px;
  7. border: 1px solid black;
  8. }
  9. .list-container h2 {
  10. margin-top: 0;
  11. }
  12. .list-container ul {
  13. margin-top: 0;
  14. margin-bottom: 0;
  15. padding-left: 20px;
  16. }
  17. .flexible {
  18. display: flex;
  19. flex-direction: column;
  20. }
  21. .flexible .flexible-child {
  22. flex-basis: 0px;
  23. overflow: auto;
  24. flex-grow: 1;
  25. }

<!-- language: lang-html -->

  1. &lt;div class=&quot;flex-container&quot;&gt;
  2. &lt;div class=&quot;list-container&quot;&gt;
  3. &lt;h2&gt;List A&lt;/h2&gt;
  4. &lt;ul&gt;
  5. &lt;li&gt;Item 1&lt;/li&gt;
  6. &lt;li&gt;Item 2&lt;/li&gt;
  7. &lt;li&gt;Item 3&lt;/li&gt;
  8. &lt;/ul&gt;
  9. &lt;/div&gt;
  10. &lt;div class=&quot;list-container flexible&quot;&gt;
  11. &lt;div class=&quot;flexible-child&quot;&gt;
  12. &lt;h2&gt;List B&lt;/h2&gt;
  13. &lt;ul&gt;
  14. &lt;li&gt;Item 1&lt;/li&gt;
  15. &lt;li&gt;Item 2&lt;/li&gt;
  16. &lt;li&gt;Item 3&lt;/li&gt;
  17. &lt;li&gt;Item 4&lt;/li&gt;
  18. &lt;li&gt;Item 5&lt;/li&gt;
  19. &lt;li&gt;Item 6&lt;/li&gt;
  20. &lt;li&gt;Item 7&lt;/li&gt;
  21. &lt;li&gt;Item 8&lt;/li&gt;
  22. &lt;li&gt;Item 9&lt;/li&gt;
  23. &lt;li&gt;Item 10&lt;/li&gt;
  24. &lt;li&gt;Item 11&lt;/li&gt;
  25. &lt;li&gt;Item 12&lt;/li&gt;
  26. &lt;li&gt;Item 13&lt;/li&gt;
  27. &lt;li&gt;Item 14&lt;/li&gt;
  28. &lt;li&gt;Item 15&lt;/li&gt;
  29. &lt;/ul&gt;
  30. &lt;/div&gt;
  31. &lt;/div&gt;
  32. &lt;div class=&quot;list-container flexible&quot;&gt;
  33. &lt;div class=&quot;flexible-child&quot;&gt;
  34. &lt;h2&gt;List C&lt;/h2&gt;
  35. &lt;ul&gt;
  36. &lt;li&gt;Item 1&lt;/li&gt;
  37. &lt;li&gt;Item 2&lt;/li&gt;
  38. &lt;li&gt;Item 3&lt;/li&gt;
  39. &lt;li&gt;Item 4&lt;/li&gt;
  40. &lt;li&gt;Item 5&lt;/li&gt;
  41. &lt;li&gt;Item 6&lt;/li&gt;
  42. &lt;li&gt;Item 7&lt;/li&gt;
  43. &lt;li&gt;Item 8&lt;/li&gt;
  44. &lt;li&gt;Item 9&lt;/li&gt;
  45. &lt;li&gt;Item 10&lt;/li&gt;
  46. &lt;li&gt;Item 11&lt;/li&gt;
  47. &lt;li&gt;Item 12&lt;/li&gt;
  48. &lt;li&gt;Item 13&lt;/li&gt;
  49. &lt;li&gt;Item 14&lt;/li&gt;
  50. &lt;li&gt;Item 15&lt;/li&gt;
  51. &lt;li&gt;Item 16&lt;/li&gt;
  52. &lt;li&gt;Item 17&lt;/li&gt;
  53. &lt;li&gt;Item 18&lt;/li&gt;
  54. &lt;li&gt;Item 19&lt;/li&gt;
  55. &lt;/ul&gt;
  56. &lt;/div&gt;
  57. &lt;/div&gt;
  58. &lt;div class=&quot;list-container&quot;&gt;
  59. &lt;h2&gt;List D&lt;/h2&gt;
  60. &lt;ul&gt;
  61. &lt;li&gt;Item 1&lt;/li&gt;
  62. &lt;li&gt;Item 2&lt;/li&gt;
  63. &lt;/ul&gt;
  64. &lt;/div&gt;
  65. &lt;/div&gt;

<!-- end snippet -->

huangapple
  • 本文由 发表于 2023年3月9日 15:22:44
  • 转载请务必保留本文链接:https://go.coder-hub.com/75681512.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定