2015-07-27 2 views
2

Я использовал display: свойство table, но таблицы-ячейки по-прежнему не будут равны по высоте. Есть ли способ сделать их равными без использования JavaScript или jQuery? Следует учитывать совместимость с Internet Explorer.Выравнивать высоту всех divs, используя только CSS

<div class="envelope"> 
    <div class="fill col"> 
     ABC 
     <br><br><br> 
    </div> 
    <div class="fill ">DEF</div> 
    <div class="fill col"> 
      XYZ 
      <br><br><br> 
      <br><br><br> 
    </div> 
</div> 

Это CSS

.envelope{ 
    border:1px solid #000; 
    border-radius:5px; 
    display:table; 
    width:300px; 

} 

.fill{ 
    background:#dddddd; 
    border-right:1px solid #000; 
    float:left; 
    width:30%; 
    padding:1%; 
    display:table-cell; 
} 

.col{ 
    background:#ff44ff; 
} 

https://jsfiddle.net/sayrandhri/yt18kLos/

+1

https: //philipwalton.github .io/resolved-by-flexbox/demos/grid/ – Quentin

+0

Почему вы использовали свойство float? Если вы поплаваете, тогда у вас не будет такой же высоты, если вы отложите поплавок, будет работать –

+0

, какую версию IE вы должны поддерживать? –

ответ

2

Все ответили, но никто не сказал, почему это например:

  • Когда вы используете свойство float, плавающий элемент берется из нормального потока и помещается вдоль левой или правой стороны его контейнера.

float может изменить расчетную величину значений отображения:

  • В вашем случае display: table-cell становится display: block.
  • Так что, да решение иметь такую ​​же высоту, если вы не хотите, чтобы установить значение height (возможно, так как оно вычисляется как display: block) его удалить float:left
+0

Не могли бы вы также изучить эту проблему? http://stackoverflow.com/questions/31602011/dynamic-width-of-div-elements-inside-a-fixed-width-div – madhavi

1

обновление CSS, как этот

.fill{ 
    background:#dddddd; 
    border-right:1px solid #000; 
    width:30%; 
    padding:1%; 
    display:table-cell; 
} 

Я удалили float:left

1

Re перемещение поплавка: левый будет решить вашу проблему:

https://jsfiddle.net/yt18kLos/1/

.envelope{ 
    border:1px solid #000; 
    border-radius:5px; 
    display:table; 
    width:300px; 

} 

.fill{ 
    background:#dddddd; 
    border-right:1px solid #000; 
    /*float:left;*/ 
    width:30%; 
    padding:1%; 
    display:table-cell; 
} 

.col{ 
    background:#ff44ff; 
} 
1

Удаление float:left; решить проблему

CSS

.fill{ 
    background:#dddddd; 
    border-right:1px solid #000; 
    width:30%; 
    padding:1%; 
    display:table-cell; 
}