2015-04-16 2 views
0

У меня есть родительский div с position:absolute и дочерний div с контентом. Однако, когда я добавляю слишком много текста в дочерний div, он переполняется в родительском div. У контейнера div родителя есть position:relative.Абсолютное содержимое переполнено за относительным родителем

Если кто-нибудь может помочь мне в этом вопросе, я был бы признателен.

То, что я не хочу, это overflow:scroll. Я хочу, чтобы контейнер расти, с высоты, с ребенком.

JSFiddle

#main{ 
 
    \t float:left; 
 
    \t width:100%; 
 
    \t padding:75px 0 55px 0; 
 
     background-color:#999; 
 
     position: relative; 
 
    } 
 
    
 
    .contentpage img{ 
 
    \t display:block; 
 
    \t margin-bottom:40px; 
 
    } 
 
    
 
    #leftsection{ 
 
    \t width:50%; 
 
    \t float:left; 
 
    } 
 
    
 
    #leftcontent{ 
 
    \t width:480px; 
 
    \t float:right; 
 
    } 
 
    
 
    #leftcontent img{ 
 
    \t background:red; 
 
     height:453px; 
 
     width:453px; 
 
    } 
 
    
 
    #rightsection{ 
 
    \t width: -moz-calc(50% - 150px); 
 
     width: -webkit-calc(50% - 150px); 
 
     width: calc(50% - 150px); 
 
    \t margin:-75px 0 0 150px; 
 
    \t padding-bottom:20px; 
 
    \t height:100%; 
 
    \t float:left; 
 
    \t background-color:#f3f5f7; 
 
     position: absolute; 
 
     top: 0; 
 
     bottom: 0; 
 
     right: 0; 
 
    } 
 
    
 
    #rightsection > #rightcontent{ 
 
    \t padding:85px 0 20px 35px; 
 
    \t max-width:330px; 
 
    } 
 
    
 
    #rightcontent{ 
 
    \t width:auto; 
 
    \t float:left; 
 
    }
<div id="main" class="contentpage"> 
 
     <div id="leftsection"> 
 
      <div id="leftcontent"> 
 
       <div id="breadcrumbs">Bread/crumbs</div> 
 
    \t \t \t <img src="images/afbeelding1.png"/> 
 
    \t \t \t <img src="images/afbeelding2.png"/> 
 
    \t \t </div> 
 
    \t </div> 
 
     <div id="rightsection"> 
 
    \t \t <div id="rightcontent"> 
 
    \t \t \t <h1>Title</h1> 
 
    \t \t \t <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Lorem ipsum dolor sit amet.</p> 
 
    \t \t \t \t \t 
 
    \t \t \t <h2>Things:</h2> 
 
    \t \t \t <ul> 
 
    \t \t \t  <li>Lorem ipsum dolor sit amet.</li> 
 
    \t \t \t \t <li>Lorem ipsum dolor sit amet.</li> 
 
    \t \t \t \t <li>Lorem ipsum dolor sit amet.</li> 
 
    \t \t \t \t <li>Lorem ipsum dolor sit amet.</li> 
 
    \t \t \t \t <li>Lorem ipsum dolor sit amet.</li> 
 
    \t \t \t </ul> 
 
    \t \t </div> 
 
    \t </div> 
 
    </div>

+0

Является ли [это] (http://jsfiddle.net/hs4o003o/2/), что вы хотите? – Abhi

+0

@ Abhi Нет, извините. Я забыл быть более ясным в своем вопросе. Мне не нужна полоса прокрутки. Я хочу, чтобы контейнер расти с дочерним div, по высоте. – Vasco

ответ

-1

Вы не сказали, как обрабатывать переполнение, поэтому я обновил свою скрипку, чтобы работать с scroll: http://jsfiddle.net/hs4o003o/1/

Кроме того, так как вы сказали " текст ", я должен был предположить, что вы говорили о #rightcontent, правильно?

Я просто добавил две строки CSS для #rightsection > #rightcontent:

overflow-y: scroll; 
max-height: 100%; 

Первый должен говорить сам за себя, а второй один необходимо сообщить браузеру, с какой точки на overflow-y собственности должны вступить в силу.

0

Задача в height:100%; из div с положением: absolute ;. Это означает 100% высоты дисплея. Будет лучше, если вы удалите position:absolute;http://jsfiddle.net/hs4o003o/6/

+0

Это не вариант. Если бы я отображал меньше текста в #rightsection, div не имел бы высоты 100%. Вот почему он имеет положение: абсолютное. – Vasco

0

Удалить height:100% на #rightsection div.

#rightsection{ 
    width: -moz-calc(50% - 150px); 
    width: -webkit-calc(50% - 150px); 
    width: calc(50% - 150px); 
    margin:-75px 0 0 150px; 
    padding-bottom:20px; 
    /*height:100%;*/ 
    float:left; 
    background-color:#f3f5f7; 
    position: absolute; 
    top: 0; 
    bottom: 0; 
    right: 0; 
} 
+0

Это не вариант. Если бы я отображал меньше текста в '# правах', div не имел бы высоты 100%. Вот почему у него есть «позиция: абсолютная». – Vasco

+0

Хорошо, я тебя достал. позвольте мне изменить снова. –

+0

Проверьте это сейчас. Теперь это работает для вас? –

0

Необходимо обменивать свойства, абсолютные для относительных. сделать дочерний элемент относительным, а родительский элемент - абсолютным. Тогда он будет расти вместе с ребенком.

DEMO

#main{ 
    float:left; 
    width:100%; 
    padding:75px 0 55px 0; 
    background-color:#999; 
    position: relative; 
} 

#rightsection{ 
    width: -moz-calc(50% - 150px); 
    width: -webkit-calc(50% - 150px); 
    width: calc(50% - 150px); 
    margin:-75px 0 0 150px; 
    padding-bottom:20px; 
    height:100%; 
    float:left; 
    background-color:#f3f5f7; 
    position: relative; 

} 

Вот еще DEMO2 ребенка будучи относителен.

Наконец-то я думаю, что это может быть решение, которое вы ищете. Я думаю, что если вы используете один и тот же div id #main elsewher, это может вызвать проблемы, но вот DEMO3

+0

Добавление 'position: absolute' в #main разрушает весь формат. – Vasco

+0

'# main' используется многостраничными страницами.Если позиционирование не работает. Я вынужден искать другой путь. – Vasco

+0

Хорошо, что я плохой, но вы также можете установить положение ребенка относительно, и родитель будет расти вместе с ним. – Kinburn101

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