CSS - гибкая сетка начинается слева [дубликат]

Вы можете в некоторой степени стилизовать элементы опции.

Используя тэг * CSS, вы можете стилизовать параметры внутри поля, которое нарисовано системой.

Пример:

#ddlProducts *
{
 border-radius:15px;
 background-color:red;
}

Это будет выглядеть так:

enter image description here [/g0]

1
задан ttmt 15 January 2019 в 16:27
поделиться

3 ответа

Вы могли бы немного уменьшить поля, чтобы они лучше подходили и продолжали выравнивать гибкие элементы влево с помощью justify-content: flex-start; или вместо этого вы можете использовать CSS Grid и определить необходимое gap, а также общее количество столбцов, которое вам нужно (в данном случае 3), с помощью сетки вы можете даже избежать процентных вычислений и просто сообщить каждому элементу использовать часть доступного пространства.

Самым большим преимуществом CSS Grid, я думаю, будет то, что вы избегаете напрасной траты места, которое может остаться в процентах, а также вам не нужно ничего менять в элементах, если вы хотите добавить или удалить столбцы. [ 117]

.block {
  border: 1px solid lightgrey;
  display: flex;
  flex-wrap: wrap;
  padding: 5px;
  max-width: 900px;
  justify-content: flex-start;

}

.block__item {
  background: grey;
  height: 20px;
  margin-right: 2px;
  margin-bottom: 2px;
  width: calc(33.3% - 2px);
}

.block-grid{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: minmax(20px, auto);
  grid-gap: 2px;
  border: 1px solid grey;
  padding: 5px;
}

.block-grid__item{
  background-color: red;
}
<div class="block">
  <div class="block__item"></div>
  <div class="block__item"></div>
  <div class="block__item"></div>
  <div class="block__item"></div>
  <div class="block__item"></div>
</div>

<div class="block-grid">
  <div class="block-grid__item"></div>
  <div class="block-grid__item"></div>
  <div class="block-grid__item"></div>
  <div class="block-grid__item"></div>
  <div class="block-grid__item"></div>
</div>

0
ответ дан IvanS95 15 January 2019 в 16:27
поделиться

Еще один способ думать об этом - использовать элемент обтекания (.block__item), который обеспечивает расстояние между элементами с внутренней подкладкой. Эти упаковочные элементы физически расположены рядом друг с другом, но обеспечивают визуальное различие между их содержимым (.block__content).

Преимущество этого заключается в том, что вам не нужно включать интервал в свои расчеты для ширины или гибкой основы. Если вы хотите изменить интервал, просто обновите padding.

* Обратите внимание, что вам нужно изменить блочную модель ваших элементов на border-box, чтобы воспользоваться этим.

[ 1113]
* {
  box-sizing: border-box;
}

.block {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  max-width: 900px;
  border: 1px solid lightgrey;
  padding: 2px;
}

.block__item {
  flex: 0 1 calc(100% / 3);
  padding: 2px;
}

.block__content {
  height: 20px;
  background-color: grey;
  color: white;
  font-size: 10px;
  font-weight: 700;
  line-height: 20px;
  text-align: center;
}

@media (max-width: 400px) {
  .block__item {
    flex-basis: 50%;
  }
}
<div class="block">
  <div class="block__item">
    <div class="block__content">1</div>
  </div>
  <div class="block__item">
    <div class="block__content">2</div>
  </div>
  <div class="block__item">
    <div class="block__content">3</div>
  </div>
  <div class="block__item">
    <div class="block__content">4</div>
  </div>
  <div class="block__item">
    <div class="block__content">5</div>
  </div>
</div>

0
ответ дан chazsolo 15 January 2019 в 16:27
поделиться

Первоначально вы были на правильном пути, используя justify-content: flex-start. Это был justify-content: space-between, который давал вам пробел во втором ряду, поэтому я убрал это, и все выстроилось в линию. Я также изменил поля и отступы, чтобы соответствовать интервалу.

.block {
  border: 1px solid lightgrey;
  display: flex;
  flex-wrap: wrap;
  padding: 5px 3px 5px 5px;
  max-width: 900px;
  justify-content: flex-start;

}

.block__item {
  background: grey;
  height: 20px;
  margin-bottom: 2px;
  width: calc(33.3% - 2px);
  margin-right:2px;
}
<div class="block">
  <div class="block__item"></div>
  <div class="block__item"></div>
  <div class="block__item"></div>
  <div class="block__item"></div>
  <div class="block__item"></div>
</div>

0
ответ дан jleggio 15 January 2019 в 16:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: