2015-06-20 2 views
2

Как можно изменить размер окна в следующем примере, можно ли отключить и отключить .small, а оба его и .big остались там, где они есть?Предотвращение разрыва и сбрасывания

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

http://jsfiddle.net/7q9jbuns/

.main { 
 
    display: table; 
 
    border: 1px solid black; 
 
} 
 
.big { 
 
    float: left; 
 
} 
 
.small { 
 
    float: right; 
 
}
<div class="wrapper"> 
 
    <div class="main"> 
 
     <p>Using display table so the box will wrap to this text</p> 
 
     <p>Ref. <a href="http://stackoverflow.com/questions/27190514/making-divs-inside-flex-boxes-shrink-wrap">StackOverflow #27190514</a></p> 
 
     <div class="big"> 
 
      <img src="http://placehold.it/200/200" /> 
 
     </div> 
 
     <div class="small"> 
 
      <img src="http://placehold.it/50/50" /> 
 
     </div> 
 
    </div> 
 
</div>

+1

Если вы не хотите маленький ДИВ падать вниз, что будет происходить? изменить размер большой div или запустить прокрутку? – Stickers

+0

Можно ли изменить размер большого div? –

+0

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

ответ

1

Использование CSS макет таблицы. Оберните два divs в контейнер.

JsFiddle Demo

.main { 
 
    display: inline-block; 
 
    border: 1px solid black; 
 
} 
 
.images { 
 
    display: table; 
 
    width: 100%; 
 
} 
 
.big, .small { 
 
    display: table-cell; 
 
    vertical-align: top; 
 
} 
 
.small { 
 
    text-align: right; 
 
}
<div class="wrapper"> 
 
    <div class="main"> 
 
     <p>Using display table so the box will wrap to this text</p> 
 
     <p>Ref. <a href="http://stackoverflow.com/questions/27190514/making-divs-inside-flex-boxes-shrink-wrap">StackOverflow #27190514</a></p> 
 
     <div class="images"> 
 
      <div class="big"> 
 
       <img src="http://placehold.it/200/200" /> 
 
      </div> 
 
      <div class="small"> 
 
       <img src="http://placehold.it/50/50" /> 
 
      </div> 
 
     </div> 
 
    </div> 
 
</div>

Использование CSS Flexbox. Снова, требуется добавить контейнер.

JsFiddle Demo

.main { 
 
    display: inline-block; 
 
    border: 1px solid black; 
 
} 
 
.images { 
 
    display: -webkit-flex; 
 
    display: -ms-flexbox; 
 
    display: flex; 
 
    -webkit-flex-direction: columns; 
 
    -ms-flex-direction: columns; 
 
    flex-direction: columns; 
 
} 
 
.big { 
 
    -webkit-flex: 1; 
 
    -ms-flex: 1; 
 
    flex: 1; 
 
}
<div class="wrapper"> 
 
    <div class="main"> 
 
     <p>Using display table so the box will wrap to this text</p> 
 
     <p>Ref. <a href="http://stackoverflow.com/questions/27190514/making-divs-inside-flex-boxes-shrink-wrap">StackOverflow #27190514</a></p> 
 
     <div class="images"> 
 
      <div class="big"> 
 
       <img src="http://placehold.it/200/200" /> 
 
      </div> 
 
      <div class="small"> 
 
       <img src="http://placehold.it/50/50" /> 
 
      </div> 
 
     </div> 
 
    </div> 
 
</div>

0

Это то, что вы ищете?

white-space: nowrap; 
/* (overflow: hidden;) */ 
+0

К сожалению, нет, контейнер сам должен обернуть для максимальной текучести. Вы можете увидеть справочный вопрос SO для получения дополнительной информации. –

2

Одним из решений является добавление min-width к вашему .main, с шириной требуется, чтобы сохранить его от упаковки.

http://jsfiddle.net/xqg3r8f3/

+1

Хорошее решение, но, к сожалению, ширина '.main' изменяется от статьи к статье. –

+1

Спасибо, Марк. Вы можете использовать JavaScript (или независимо от того, какая структура вашего приложения предусматривает динамическое назначение стилей), чтобы установить «минимальную ширину» по мере необходимости, но это может оказаться невыполнимым в вашем случае. Может быть решение flexbox, которое удовлетворяет ваши потребности, используя только CSS, но я не знаком с ним. – tavnab

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