Як встановити стовпчик з фіксованою шириною за допомогою флекси CSS


149

CodePen: http://codepen.io/anon/pen/RPNpaP .

Я хочу, щоб червоне поле було шириною лише 25 ем, коли воно розташоване поруч - я намагаюся досягти цього, встановивши CSS у цьому медіа-запиті:

@media all and (min-width: 811px) {...}

до:

.flexbox .red {
  width: 25em;
}

Але коли я це роблю, це відбувається:

http://i.imgur.com/niFBrwt.png

Будь-яка ідея, що я роблю неправильно?

Відповіді:


334

Ви повинні використовувати майно flexабо flex-basisвластивість, а не width. Детальніше читайте на MDN .

.flexbox .red {
  flex: 0 0 25em;
}

flexВластивість CSS властивість є узагальнюючим вказавши здатність гнучкого елемента , щоб змінити його розміри , щоб заповнити вільний простір. Це містить:

flex-grow: 0;     /* do not grow   - initial value: 0 */
flex-shrink: 0;   /* do not shrink - initial value: 1 */
flex-basis: 25em; /* width/height  - initial value: auto */

Проста демонстрація демонструє, як встановити перший стовпець на 50pxфіксовану ширину.


Перегляньте оновлений коден на основі вашого коду.


22
Не зрозумів, що мені доведеться перекрити flex-shrink, дякую, хорошу відповідь.
Пол Редмонд

Не вдалося отримати гнучку основу: автоматично працювати, поки я не зрозумів, що сітка бібліотеки мого компонента (Semantic UI React) не мала правила css, встановивши ширину за замовчуванням стовпця 😅 medium.freecodecamp.org/…
Roman Scher

1

У випадку, якщо хтось хоче мати чуйний флексбокс із відсотками (%), це набагато простіше для медіа-запитів.

flex-basis: 25%;

Це буде набагато плавніше при тестуванні.

// VARIABLES
$screen-xs:                                         480px;
$screen-sm:                                         768px;
$screen-md:                                         992px;
$screen-lg:                                         1200px;
$screen-xl:                                         1400px;
$screen-xxl:                                        1600px;

// QUERIES
@media screen (max-width: $screen-lg) {
    flex-basis: 25%;
}

@media screen (max-width: $screen-md) {
    flex-basis: 33.33%;
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.