2015-11-20 5 views
0

У меня есть тело, состоящее из 2 навигационных баров (сверху), верхнего графического (среднего) flexbox и содержимого flexbox (внизу).Детский элемент переполняет родителя

В верхней графической flexbox я хочу вставить черный ящик, в который я могу поместить текст. Когда я делаю этот ящик, он не переполняет верхнюю часть родительского поля, однако он переполняет нижнюю и правую части родителя, продолжая в поле содержимого, когда я изменяю размер страницы. Я хочу, чтобы мой ящик оставался внутри границ его родительского элемента и учитывал моего родителя, когда я устанавливал свою ширину/высоту, чтобы он не перекрывал содержимое flexbox при изменении размера веб-сайта.

.nav { 
 
    display: flex; 
 
    flex: 1; 
 
    background-color: white; 
 
    flex-direction: column; 
 
} 
 
.topnav { 
 
    flex: 1; 
 
    background-color: white; 
 
    border-bottom: ridge 1px; 
 
} 
 
.bottomnav { 
 
    flex: 1; 
 
    background-color: white; 
 
} 
 
.topgraphic { 
 
    overflow: hidden; 
 
    position: relative; 
 
    flex: 2; 
 
    background-color: lightblue; 
 
    z-index: -2; 
 
} 
 
.topgraphic img { 
 
    background-size: cover; 
 
    background-repeat: no-repeat; 
 
    position: absolute; 
 
    width: 100%; 
 
    height: 100%; 
 
    -moz-box-shadow: inset 0px 12px 15px -12px #696868; 
 
    -webkit-box-shadow: inset 0px 12px 15px -12px #696868; 
 
    box-shadow: inset 0px 12px 15px -12px #696868; 
 
    z-index: -1; 
 
} 
 
.topgraphic .textbox { 
 
    box-sizing: inherit; 
 
    position: absolute; 
 
    margin-right: 5%; 
 
    margin-bottom: 10%; 
 
    width: 30%; 
 
    height: 80%; 
 
    background-color: rgba(0, 0, 0, 0.6); 
 
} 
 
.content { 
 
    z-index: -5; 
 
    flex: 7; 
 
    background-color: white; 
 
    min-height: 25%; 
 
}
<div class="nav"> 
 
    <div class="topnav"></div> 
 
    <div class="bottomnav"></div> 
 
</div> 
 
<div class="topgraphic"> 
 
    <img alt="TopGraphic" class="auto-style1" src="Images/Topgraphic.jpg" /> 
 
    <asp:Image ID="Image1" runat="server" /> 
 
    <div class="textbox"> 
 
     <!-- <div class="topText"> 
 
     <h1>Demonstration</h1> 
 
     </div> --> 
 
    </div> 
 
</div>

+0

Демонстрационный фактического probelm будет useful..however, я не вижу в Поинг использования абсолютного позиционирования с Flexbox ... но, возможно, я что-то не хватает. –

+0

Умм, я могу дать вам пример того, что я пытаюсь достичь. www.elbek-vejrup.dk На этой странице вы можете увидеть, что на столе есть изображение, в котором есть синее текстовое поле с прозрачностью. Это именно то, что я пытаюсь достичь дайте мне минуту, я могу попробовать вставить свой код в jsfiddle –

+0

https://jsfiddle.net/5rkx5u93/ –

ответ

0

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

Это общий макет, который вы ищете?

* { 
 
    box-sizing: border-box; 
 
} 
 
html, body { 
 
    margin: 0; 
 
    width: 100%; 
 
    height: 100%; 
 
    color: gray; 
 
    padding: 1%; 
 
} 
 
.outer { 
 
    display: flex; 
 
    flex-flow: column; 
 
    height: 98%; 
 
    width: 90%; 
 
    margin: 0 auto; 
 
    box-shadow: 0px 0px 10px 0px #696868; 
 
} 
 
.top { 
 
    display: flex; 
 
    flex-flow: column; 
 
    background-color: white; 
 
} 
 
.middle { 
 
    background-color: lightblue; 
 
    background-image: url(http://lorempixel.com/400/100/sports/9/); 
 
    background-size: cover; 
 
    background-repeat: no-repeat; 
 
    clear: right; 
 
} 
 
    .middle .textbox { 
 
    float: right; 
 
    width: 30%; 
 
    height: 70px; 
 
    background-color: rgba(0,0,0,0.7); 
 
    } 
 
.content { 
 
    position: relative; 
 
    flex: 1 0 auto; 
 
    height: 0; 
 
} 
 
.content-inner { 
 
    background-color: white; 
 
    position: absolute; 
 
    left: 0; 
 
    top: 0; 
 
    right: 0; 
 
    bottom: 0; 
 
}
<div class="outer"> 
 
    <div class="top"> 
 
    <div class="top">top top</div> 
 
    <div class="bottom">top bottom</div> 
 
    </div> 
 
    <div class="middle"> 
 
     <div class="textbox"> 
 
      text box 
 
     </div> 
 
    </div> 
 
    <div class="content"> 
 
    <div class="content-inner">content</div> 
 
    </div> 
 
</div>

+0

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

+0

@JeppeC Обновлен мой ответ, лучше сейчас? – LGSon

+0

есть, спасибо! –

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