предотвратить увеличение содержимого столбца сетки CSS - PullRequest
0 голосов
/ 27 января 2020

В настоящее время у меня есть сетка с 2 строками и 3 столбцами. Я хочу, чтобы все 3 столбца были равны по размеру. Однако в третьем столбце больше текстового содержимого по сравнению с первыми двумя. Это заставляет третий столбец расширяться по ширине. Я просмотрел похожие вопросы, опубликованные в Stack Overflow, и попытался решить эту проблему, установив для min-width этого элемента сетки значение 0. Это не сработало. Как я могу решить эту проблему. Ниже я включил скриншот страницы, которая иллюстрирует проблему. Я также скопировал и вставил код из соответствующего файла CSS.

enter image description here

CSS файл:

.App {
  text-align: center;
  box-sizing: border-box;
}

.App-logo {
  height: 40vmin;
  pointer-events: none;
}

@media (prefers-reduced-motion: no-preference) {
  .App-logo {
    animation: App-logo-spin infinite 20s linear;
  }
}

.App-header {
  background-color: #282c34;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-size: calc(10px + 2vmin);
  color: white;
}

.App-link {
  color: #61dafb;
}

@keyframes App-logo-spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

.criteria-grid {
  width: 100%;
  display: grid;
  grid-template-areas: 
    'header header header'
    'col1 col2 col3'
  ;
  justify-content: stretch;
  justify-items: stretch;
  min-height: 0;
  min-width: 0;
}

.criteria-header {
  grid-area: header;
}

.criteria-1 {
  list-style: none;
  padding: 10%;
  grid-area: col1;
}

.criteria-2 {
  list-style: none;
  padding: 10%;
  grid-area: col2;
}

.criteria-3 {
  list-style: none;
  padding: 10%;
  grid-area: col3;
  min-width: 0;
}

Ответы [ 2 ]

2 голосов
/ 27 января 2020

Shubh Sheth ответ правильный, но, возможно, другой способ написания:

grid-template-columns: repeat(3, 1fr); 

Полезно, когда у вас есть много столбцов для макета.

Сказав это, ваша ошибка что вы указываете не столбцы, а только области.

 grid-template-areas: 
    'header header header'
    'col1 col2 col3'
  ;

Области сетки используются в сочетании с grid-template-columns, а не в качестве замены.

Таким образом, код вашего макета должен выглядеть примерно так:

display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-areas: 
 'header header header'
 'col1 col2 col3';

В этом случае вы вполне можете удалить код областей шаблона, поскольку вы не меняете позиции.

1 голос
/ 27 января 2020

В вашей .criteria-grid добавьте этот стиль

grid-template-columns: 1fr 1fr 1fr;
...