Heim  >  Fragen und Antworten  >  Hauptteil

max-content minimale und feste Breite für CSS-Rasterspalten

Ich habe ein CSS-Raster und möchte, dass seine Spaltenbreite der Breite des größten Elements in der Spalte oder 100 Pixel entspricht, je nachdem, welcher Wert kleiner ist. Ich dachte, minmax(max-content, 100px) könnte funktionieren, aber das funktioniert nicht. Im folgenden Beispiel sollte die schmale Spalte den maximalen Inhalt (aber 100 Pixel) und die breite Spalte 100 Pixel (aber den maximalen Inhalt) haben. Ist das mit CSS Grid möglich?

.table {
  display: grid;
  gap: 4px;
  grid-template-columns: repeat(4, minmax(max-content, 100px));
}

.element {
  background-color: lightblue;
  word-break: break-all;
  white-space: nowrap;
}
<div class="table">
  <div class="element">a</div>
  <div class="element">wiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiide</div>
  <div class="element">narrow</div>
  <div class="element">d</div>
  <div class="element">narrow</div>
  <div class="element">b</div>
  <div class="element">c</div>
  <div class="element">wiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiide</div>
</div>

P粉245003607P粉245003607433 Tage vor481

Antworte allen(1)Ich werde antworten

  • P粉642436282

    P粉6424362822023-09-07 00:02:09

    在项目上使用max-width并保持列自动宽度

    .table {
      display: grid;
      gap: 4px;
      grid-template-columns: repeat(4, auto);
      justify-content: start; /* you need this to avoid the gap between column */
    }
    
    .element {
      background-color: lightblue;
      word-break: break-all;
      white-space: nowrap;
      max-width: 100px;
      /* hiding the overflow */  
      overflow: hidden;
      text-overflow: ellipsis;
    }
    <div class="table">
      <div class="element">a</div>
      <div class="element">wiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiide</div>
      <div class="element">narrow</div>
      <div class="element">d</div>
      <div class="element">narrow</div>
      <div class="element">b</div>
      <div class="element">c</div>
      <div class="element">wiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiide</div>
    </div>

    Antwort
    0
  • StornierenAntwort