2015-11-22 2 views
1

У меня есть следующий фрагмент кода, который работает в хроме и исследователя, однако я не могу показаться, чтобы получить Firefox, чтобы сделать левый бар .leftpanel растянуть на всю высоту родителя .viewerFirefox игнорируя высота: 100%

JSfiddle

Отрывок

html, 
 
body { 
 
    border: 0; 
 
    padding: 0; 
 
    margin: 0; 
 
    width: 100%; 
 
    height: 100%; 
 
} 
 
ul { 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
li { 
 
    display: inline-block; 
 
    list-style-type: none; 
 
} 
 
.fullscreen { 
 
    width: 100%; 
 
    height: 100%; 
 
    position: absolute; 
 
    background-color: pink; 
 
    display: table; 
 
    z-index: 1; 
 
} 
 
.centeralign { 
 
    vertical-align: middle; 
 
    width: 100%; 
 
    height: 100%; 
 
    display: table-cell; 
 
    background-color: blue; 
 
    text-align: center; 
 
    padding: 2em; 
 
} 
 
.viewer { 
 
    text-align: left; 
 
    display: inline-block; 
 
    width: 90%; 
 
    height: 90%; 
 
    position: relative; 
 
    background-color: green; 
 
    padding: 1em; 
 
    min-height: 35.45em; 
 
} 
 
.leftpanel { 
 
    width: 15em; 
 
    /*Alter depending on how much space this takes*/ 
 
    float: left; 
 
    height: 100%; 
 
    position: relative; 
 
    background-color: yellow; 
 
} 
 
.leftpanel .slide { 
 
    width: 15em; 
 
    height: 9.706em; 
 
    display: block; 
 
    margin-bottom: 1em; 
 
    background-color: red; 
 
} 
 
.leftpanel .comments_container { 
 
    display: table; 
 
    position: absolute; 
 
    left: 0; 
 
    bottom: 0; 
 
    height: 14em; 
 
    width: 15em; 
 
    background-color: orange; 
 
}
<ul class="fullscreen"> 
 
    <li class="centeralign"> 
 
    <ul class="viewer"> 
 
     <li class="leftpanel"> 
 
     <ul class="slide"> 
 
      <li class="slide_image"> 
 
      </li> 
 
      <li class="slide_menu"> 
 
      </li> 
 
     </ul> 
 
     <ul class="slide"> 
 
      <li class="slide_image"> 
 
      </li> 
 
      <li class="slide_menu"> 
 
      </li> 
 
     </ul> 
 
     <ul class="comments_container"> 
 
      <li class="comments"> 
 
      <span class="comment">Test</span> 
 
      </li> 
 
      <li class="new_comment"> 
 
      <form action="new_comment.php"> 
 
       <input type="text" name="comment" /> 
 
       <input type="submit" name="Send" /> 
 
      </form> 
 
      </li> 
 
     </ul> 
 
     </li> 
 
     <li class="viewport"> 
 
     </li> 
 
     <li class="close"> 
 
     X 
 
     </li> 
 
    </ul> 
 
    </li> 
 
</ul>

+0

Вы пробовали сброс? Если нет, чешский https://github.com/murtaugh/HTML5-Reset –

+0

У меня действительно есть сбой!Но, увы, это не решает проблему – tomc

+1

Хотя я признаю, что это не сброс, я запускаю – tomc

ответ

1

Хотя ваш вопрос уже был дан ответ, вот это 'общее' решение:

.clearfix:before,

.clearfix:after { content: ''; display: table }

.clearfix:after { clear: both }

Ваш класс viewer нуждается в хорошо известном «clearfix», добавленном в HTML, выполните поиск Google для правильного объяснения. Измените своего зрителя HTML <ul class="viewer clearfix"> и добавьте класс в ваш глобальный CSS (для общего использования), и вам хорошо идти.

+0

Спасибо человеку! Я изменил принятый ответ, потому что ваше решение работало лучше для меня и позволило мне сохранить минимальную высоту! – tomc

+0

Всегда готов ..., ну вы знаете. Это неприятный маленький вопрос, который продолжает возвращаться, помните об этом! Digg в flexbox, это стоит вашего времени. –

+0

Проверьте мой код (http://codepen.io/renevanderlende/pen/pJpMrB), а не самый простой пример, но очень eleborate (и отзывчивый) ... –

-1

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

Решение простое, используйте display:flexвместоdisplay:inline-block на вашем .viewer элемента и дать детям, в этом случае .leftpanel элемент свойство align-items:stretch

Чтобы прочитать подробнее об этом проверить либо this css-tricks guide или this MDN guide.

Ваш обновленный код будет выглядеть следующим образом:

HTML: Ничего не изменилось.

CSS:

.viewer { 
    text-align: left; 
    display: flex; /* changed the display to flex */ 
    width: 90%; 
    height: 90%; 
    position: relative; 
    background-color: green; 
    padding: 1em; 
    min-height: 35.45em; 
} 

.leftpanel { 
    width: 15em; /*Alter depending on how much space this takes*/ 
    float: left; 
    height: 100%; 
    position: relative; 
    background-color: yellow; 
    align-items: stretch; /* Added the align-items property */ 
} 

JSFiddle

Надеется, что это помогает!

+0

Что происходит со старыми версиями Internet Explorer при использовании flex? Я действительно не читал об этом, потому что похоже, что он не будет работать на версиях ниже IE11. Хотя это, по-видимому, влияет только на около 2% пользователей прямо сейчас ... – tomc

+1

@tomc Вы можете использовать modernizr, чтобы определить, имеются ли возможности гибкости, и при необходимости предоставлять резервные стили. Modernizr добавит к элементу html классы, такие как 'flexbox',' no-flexbox' и 'flexbox-legacy', подробнее об этом [здесь] (http://stackoverflow.com/questions/24371408/flexbox-alternative- для-ie9) и [здесь (modernizr)] (https://modernizr.com/) – Simplicity

+0

@tomc Ofcourse, это только если вы действительно * должны достигнуть этого последнего 2% – Simplicity

1

На первый взгляд, ваш вопрос вы устанавливаете большой min-height к вашему родителю .viewer, так что просто удалить его, потому что вы уже установили height, как 90% в другого родителя.

html, 
 
body { 
 
    border: 0; 
 
    padding: 0; 
 
    margin: 0; 
 
    width: 100%; 
 
    height: 100%; 
 
} 
 
ul { 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
li { 
 
    display: inline-block; 
 
    list-style-type: none; 
 
} 
 
.fullscreen { 
 
    width: 100%; 
 
    height: 100%; 
 
    position: absolute; 
 
    background-color: pink; 
 
    display: table; 
 
    z-index: 1; 
 
} 
 
.centeralign { 
 
    vertical-align: middle; 
 
    width: 100%; 
 
    height: 100%; 
 
    display: table-cell; 
 
    background-color: blue; 
 
    text-align: center; 
 
    padding: 2em; 
 
} 
 
.viewer { 
 
    text-align: left; 
 
    display: inline-block; 
 
    width: 90%; 
 
    height: 90%; 
 
    position: relative; 
 
    background-color: green; 
 
    padding: 1em; 
 
    /* min-height: 35.45em; remove this line */ 
 
} 
 
.leftpanel { 
 
    width: 15em; 
 
    /*Alter depending on how much space this takes*/ 
 
    float: left; 
 
    height: 100%; 
 
    position: relative; 
 
    background-color: yellow; 
 
} 
 
.leftpanel .slide { 
 
    width: 15em; 
 
    height: 9.706em; 
 
    display: block; 
 
    margin-bottom: 1em; 
 
    background-color: red; 
 
} 
 
.leftpanel .comments_container { 
 
    display: table; 
 
    position: absolute; 
 
    left: 0; 
 
    bottom: 0; 
 
    height: 14em; 
 
    width: 15em; 
 
    background-color: orange; 
 
}
<ul class="fullscreen"> 
 
    <li class="centeralign"> 
 
    <ul class="viewer"> 
 
     <li class="leftpanel"> 
 
     <ul class="slide"> 
 
      <li class="slide_image"> 
 
      </li> 
 
      <li class="slide_menu"> 
 
      </li> 
 
     </ul> 
 
     <ul class="slide"> 
 
      <li class="slide_image"> 
 
      </li> 
 
      <li class="slide_menu"> 
 
      </li> 
 
     </ul> 
 
     <ul class="comments_container"> 
 
      <li class="comments"> 
 
      <span class="comment">Test</span> 
 
      </li> 
 
      <li class="new_comment"> 
 
      <form action="new_comment.php"> 
 
       <input type="text" name="comment" /> 
 
       <input type="submit" name="Send" /> 
 
      </form> 
 
      </li> 
 
     </ul> 
 
     </li> 
 
     <li class="viewport"> 
 
     </li> 
 
     <li class="close"> 
 
     X 
 
     </li> 
 
    </ul> 
 
    </li> 
 
</ul>

+0

Невозможно установить минимальную высоту, потому что дочерние элементы, чтобы вырваться из 'viewer', когда браузер изменился на слишком маленькую высоту? – tomc

+0

Я предполагаю, что не понял ваш вопрос, но я попытаюсь объяснить вам. ваш родительский '.viewer' имеет (min)' height' 5000px (пример), но ваш левый слой вашего ребенка использует только 1000px 'height' поэтому до 4000px вниз от конца ребенка до конца родительского Так что, если вы удалите' min-height', конец ребенка закончится рядом с концом родительского 'height' – dippas

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