Ширина ігнорується на елементах flexbox


78

http://jsfiddle.net/XW9Se/

Я встановив width: 200px;ліворуч, <div>але якщо я переглядаю його за допомогою інструмента інспектора браузера, то виявляється, що реальна ширина є випадковою або щось інше. Він постійно змінюється залежно від розміру вікна.

Чому ширина не набуває чинності?

РЕДАГУВАТИ : Якщо я видалю, width: 100%ширина залишається фіксованою. Але мені потрібно , що так #mainДІВ займає залишилася ширину :( Чи є спосіб , щоб мати бічну панель @ фіксовану ширину , а іншу <div>заливку решту ширини контейнера? width: auto;На #mainне працюють ..


2
Хіба не вся ідея flexbox в тому, що він змінюється при зміні розміру вікна?
gpgekko

2
так, але я хочу лише 1 гнучкий стовпець, щоб змінити ширину: P
Олексій

1
спробуйте додати flex-flow: wrap;до контейнера
user3338098

1
fyi: за замовчуванням flex-shrink - 1
Hayden Thring

Відповіді:



179

Відповідь від Adrift ідеальна; але зміна, щоб зробити її більш гнучкою , буде

#left{
    flex-basis: 200px;
    flex-grow: 0;
    flex-shrink: 0;
}

І повністю видаліть властивість width.

Це був би гнучкий спосіб сказати, що елемент буде мати незмінну ширину 200px


43
скорочення:flex: 0 0 200px;
Дан

23
Просто додайте flex-shrink: 0властивість, і ширина css буде дотримуватися.
Ashish Rawat

Це в поєднанні з order: 2(щоб перемкнути його вправо) спрацювало бездоганно, щоб зробити бічну панель. Дякую!
Роберт Моліна,

1
Просто хотів додати, що мені потрібно було лише flex-shrink: 0виправити свою особисту проблему (там, де flex: autoпоодинці цього не виправили)
Джавад,

19

Мені найкращий спосіб вирішити цю ситуацію - додати:

flex-shrink: 0;

Таким чином ви можете продовжувати використовувати widthу своєму контейнері Flex, і ви надали йому конкретну інформацію про те, як ви хочете, щоб цей елемент flex поводився.

Іншим варіантом, залежно від вимоги, є використання min-width, яке дотримується при використанні flex.


7

Дайте #leftДив а , min-widthв 200px, повинен робити цю роботу.



0

Також (якщо зверху нічого не працює)

Перевірте свою мінімальну ширину та максимальну ширину . Це вирішило ту саму проблему для мене, збільшивши їх діапазон.


0

Вирішив це з гнучкістю, не дотримуючись мінімальної ширини, коли для її заповнення не вистачало вмісту.

Додано правило CSS box-sizing: initial;для того самого елемента flex, який мав неробоче оголошення про мінімальну ширину.


-4

Додати display:inline-block;в лівому класі


1
OP використовує гнучкість :)
gavin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.