2016-05-08 5 views
0

Я пытаюсь создать контейнер div div, в котором все divs будут иметь одинаковую ширину (два div на строку, 50% ширины контейнера каждый из них).Flex свойство override max-width

Я установил div внутри контейнера с max-width: 50%;, потому что я хочу, чтобы они были равны, но, похоже, это не соответствует этому max-width, когда в этой строке есть только один элемент.

HTML:

<div id="container"> 
    <div id="left" class="block">Left</div> 
    <div id="center" class="block"> 
    <div class="flexContainer"> 
     <div class="flexDiv"></div> 
    </div> 
    <div class="flexContainer"> 
     <div class="flexDiv"></div> 
    </div> 
    <div class="flexContainer"> 
     <div class="flexDiv"></div> 
    </div> 
    </div> 
    <div id="right" class="block">Right</div> 
</div> 

CSS:

html, body{ 
    width: 100%; 
    height: 100%; 
} 

#container{ 
    display: flex; 
    height: 100%; 
    background-color: blue; 
} 

.block{ 
    flex: 1; 
} 

#left{ 
    background-color: green; 
} 

#center{ 
    display: flex; 
    flex: 1; 
    flex-wrap: wrap; 
    align-content: flex-start; 
} 

#right{ 
    background-color: orange; 
} 

.flexContainer{ 
    flex: 1; 
    min-width: 100px; 
    max-width: 50%; 
    height: 150px; 
    background-color: red; 
    padding: 10px; 
} 

.flexDiv{ 
    width: 100%; 
    height: 100%; 
    background-color: yellow; 
} 

JSFiddle, в котором вы можете увидеть, как ширина третьего элемента больше, чем другие.

Почему flex divs внутри контейнера не соблюдаются max-width property?

Заранее благодарен!

+0

Вы имеете в виду как это? - https://jsfiddle.net/yz9cd8e7/ –

+0

@Paulie_D Да, именно это. Если вы предоставите ему объяснение в ответе, я пометю его как принятый :) –

+0

Нет проблем ... в основном это была проблема с «коробкой-калибровкой». @GCyrillus уже предоставил ответ. –

ответ

1

вы можете сбросить или переключить модель коробки включить padding в width расчета:

https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing

https://www.w3.org/TR/css-ui-3/#box-sizing

.flexContainer{ 
    flex: 1; 
    min-width: 100px; 
    max-width: 50%; 
    height: 150px; 
    background-color: red; 
    padding: 10px; 
    box-sizing:border-box;/* includes borders & padding within width calculation 
} 

https://jsfiddle.net/b5h9rjcd/1/

Смежные вопросы