2014-02-04 4 views
0

У меня есть div div внутри div main_content, но у них нет слота внутри родителя.Ребенок, расширяющийся из родителя

Я сделал свое исследование, и я попытался плавать: оставил родителя, но, к сожалению, он разрушает изогнутые края и тень, поэтому что-то явно не так.

Внутри дочерних divs у меня есть флажок, который при тике, расширяет панель текста, но та же проблема возникает, когда divdoes не увеличивается в размере, это рассматривается отдельно от того, что должно быть дочерним.

jsfiddle http://jsfiddle.net/aNgVj/

Вот HTML

<div id="wrapper"> 
    <div id="main_content"> 
     <h1 class="standard">Team Directory</h1> 
     <div class="plaque_left"> 
      <h2>Blackhawks</h2> 
      <h3>EB Netball CLub</h3> 
      <p>www.random.com</p> 
      <p>More text</p> 
      <p>and more...</p> 
      <p>and more</p> 
      <p>finally...</p> 
       <input type="checkbox" name="show" id="show"/> 
       <label for="show">Named Players</label> 
       <article class="small">More content here 
        <br/> 
         <br/>and here 
         <br/>end 
       </article> 
     </div> 
    </div> 
</div> 

И связанный CSS

#wrapper { 
    background: white; 
    position: relative; 
    width: 77em; 
    height: 100%; 
    margin-left: auto; 
    margin-right: auto; 
    border: 2px solid white; 
    -webkit-border-radius: 8px; 
    -webkit-box-shadow: 0 0 40px black 
} 
#main_content { 
    background: white; 
    position:relative; 
    width: 76em; 
    height: 100%; 
    margin-left: auto; 
    margin-right: auto 
} 

и (только левые дивы, как код одинаков для правых див, кроме поплавок: правый)

.plaque_left { 
    display:block; 
    height: 23.5em; 
    margin: 1em 1em 1em 5em; 
    padding: 0 1em 0 1em; 
    background: white; 
    -webkit-box-shadow: 0 0 10pt grey; 
    float:left; 
    width:38%; 
    -webkit-border-radius:10pt 
} 
.plaque_left article { 
    background:#d0a9f5; 
    -webkit-border-radius: 10pt; 
    overflow:hidden; 
    height: 0px; 
    position: relative; 
    z-index:10; 
    -webkit-transition: height 0.3s ease-in-out 
} 
.plaque_left input:checked ~ article { 
    -webkit-transition: 0.5s ease-in-out 
} 
.plaque_left input:checked ~ article.small { 
    height: 140px; 
    position:relative 
} 

Чтобы подтвердить, первая проблема заключается в том, что дивизии .plaque не включены в div #main_content. Во-вторых, когда флажок расширяется, чтобы показать дополнительный контент, он разливает outdie div бляшки, если я не выбираю auto, что означает, что я могу прокручивать, но это не то, что я ищу, я хочу, чтобы div бляшки изменялся, чтобы позволить расширенный содержание.

Заранее спасибо

+0

Вы можете поместить это в jsfiddle или показать нам, что происходит? – helion3

+0

jsfiddle http://jsfiddle.net/aNgVj/ – DJC

+0

Есть ли причина, по которой вы используете относительное позиционирование? На первый взгляд кажется, что вам не нужно его использовать. Обычно вы хотите использовать только относительное позиционирование, когда вы полностью позиционируете другие элементы внутри него. Попробуйте удалить относительное позиционирование и посмотреть, не изменилось ли это. –

ответ

1

Я предлагаю вам добавить overflow: hidden к #wrapper:

#wrapper {overflow: hidden;} 

Это самый простой способ, чтобы заставить обертку вложить плавали предметы.

+0

[Это не устраняет проблему] (http://jsfiddle.net/9gSEX/1/) –

+0

Это исправляет проблему, поскольку я понимать это. Я бы предпочел услышать об этом от ОП. –

+0

«Я хочу, чтобы div блейка изменялся, чтобы расширять содержимое», похоже, что это скрывает его ... –

2

plaque_left ДИВ не расширяется в высоту, потому что у вас есть это исправлено: height: 23.5em;. Вы можете использовать min-height или полностью удалить высоту.

0

Добавьте элемент, такой как div, который очистит поплавки и не позволит им свернуть. Вы можете использовать этот стиль:

.clearFloat{ 
    clear: both; 
} 

Тогда вы можете создать пустой DIV в нижней части основного содержания, что будет ясно (освободить место для) элементов, расположенных над ним. Вы можете увидеть поведение в следующей скрипке:

http://jsfiddle.net/aNgVj/1/

+1

Лучше использовать CSS для решения проблемы CSS, а не добавлять дополнительные, не смысловые HTML-элементы. :-) 'overflow: hidden;' - это самое простое решение, и оно прекрасно, если вам не нужны элементы (например, абсолютно позиционированные) для зависания за пределами контейнера. –

+0

Ahh, только что увидел, что происходит с флажком. Вам также нужно будет удалить высоту с .plaque_left, как указано выше. –

+0

Ralph.m Это правда. Хорошая точка зрения. –

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