2015-07-23 3 views
2

Учитывая два плавающих divs, ширина которых составляет 50% их контейнера при выравнивании бок о бок, возможно ли, чтобы их ширина до 100% увеличивалась, когда экран уменьшался до точки, где второй div должен быть сдвинут на один ряд вниз?Расширение ширины плавающего div

Возьмите, например, codepen и сжимайте окно горизонтально, пока зеленый div и его контейнер не перейдут под красный. Возможно ли, чтобы ширина #wrap1 и #wrap2 простиралась вплоть до #container, так что #one и #two центрированы относительно #container? то есть он будет выглядеть как this.

+5

Добро пожаловать на переполнение стека! Вопросы, требующие помощи по отладке («почему этот код не работает?») Должны включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для его воспроизведения ** в самом вопросе **. Хотя вы указали ссылку на пример, если ссылка стала недействительной, ваш вопрос не будет иметь значения для других будущих пользователей SO с той же проблемой. –

+1

Не автоматически использовать поплавки ... но «flexbox» абсолютно. –

+0

Попробуйте использовать медиа-запросы. Когда браузер сжимается до определенной ширины пикселей, он будет использовать то, что когда-либо css вы ему скажете: https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries – IE5Master

ответ

0

flexbox решение..не требуется медиа-запрос как таковой.

#container { 
 
    background: rgba(0, 0, 0, .1); 
 
    display: flex; 
 
    flex-wrap: wrap; 
 
} 
 
[class^="wrap"] { 
 
    flex-grow: 1; 
 
    flex-shrink: none; 
 
} 
 
.wrap1 { 
 
    background: rgba(100, 10, 10, .2); 
 
} 
 
.wrap2 { 
 
    background: rgba(10, 100, 10, .2); 
 
height: 100px; 
 
} 
 
#one { 
 
    width: 200px; 
 
    height: 200px; 
 
    background: rgba(100, 100, 0, .1); 
 
    margin: 0 auto; 
 
} 
 
#two { 
 
    width: 300px; 
 
    height: 100px; 
 
    background: rgba(100, 100, 0, .1); 
 
    margin: 0 auto 
 
}
<div id="container"> 
 

 
    <div class="wrap1"> 
 
    <div id="one"> 
 
    </div> 
 
    </div> 
 

 
    <div class="wrap2"> 
 
    <div id="two"> 
 

 
    </div> 
 
    </div> 
 

 
</div>

Codepen Demo

+0

Я пойду с этим, так как ему не нужны медиа-запросы. веселит. – kenj

1

Вы должны использовать flexbox. Here is your Pen edited

CSS:

#container{ 
    background: rgba(0,0,0,.1); 
    width:100%; 
    height:auto; 
    position: relative; 
    overflow: hidden; 
    display: flex; 
} 

@media screen and (max-width: 800px) { 
    #container{ 
    flex-direction: column; 
    } 
} 

.wrap1{ 
    background: rgba(100,10,10,.2); 
    flex-grow: 1; 
} 
.wrap2{ 
    background: rgba(10,100,10,.2); 
    height: 100px; 
    flex-grow: 1; 
} 
0

Вы можете сделать это с помощью Bootstrap CSS. Вы хотите создать контейнер для жидкости, а затем создать два внутренних div. Внутренние divs будут иметь класс col-md-6, который будет 50% для больших экранов и col-xs-12 для маленьких экранов. Это автоматически изменится с помощью браузера.

<div class="container-fluid"> 
    <div class="col-md-6 col-xs-12">Div 1</div> 
    <div class="col-md-6 col-xs-12">Div 2</div> 
</div> 
2

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

В противном случае вам нужно обратиться к flexbox bevhaviour - this guide by Dimitar Stojanov имеет несколько примеров обертывания.

[Изменить:] фиксированная ссылка.

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