Как поместить один div слева и два div вертикально справа

#html #css

#HTML #css

Вопрос:

У меня очень классический макет, которого я добиваюсь довольно часто, и я всегда импровизирую, как я могу это сделать. Я разделил три div на картинке (красные линии). Моя проблема всегда связана с правым нижним: даже если я исправлю размер левого Div, я помещаю верхний div как float:right. Мне все еще приходится обманывать проблемный div и играть с отрицательными полями.

Для этого примера это довольно просто, поскольку два div (левый и верхний) имеют фиксированные размеры, но я хотел бы иметь шаблон для гибких гибких макетов.

Я уже искал в Интернете, у каждого человека есть свое собственное решение, но я не нахожу никакого четкого чистого вкусного решения.

есть идеи?

три div, два вертикальных справа

Ожидаемое поведение :

  1. на самом деле нет фиксированных размеров, вообще нет размеров (пусть элементы занимают нужное им место)
  2. если справа осталось свободное место, не переходите на новую строку.
  3. если места больше нет, перейдите на новую строку, но полностью перейдите влево (как и ожидалось с display:inline-block помощью)

Вот пример jsfiddle:

даже если для div достаточно места (по ширине) id='2' , он переходит на новую строку (потому display:inline-block что пытается добавить этот div справа от id='2' , и когда он не находит, он переходит на новую строку вместо перехода справа от id='1' )

http://jsfiddle.net/zhamdi/zu5sU/6/

Я знаю, что для этого есть js-сетки, например http://gridster.net /

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

Комментарии:

1. можете ли вы предоставить скрипку или ссылку на это?

2. Не уверен, правильно ли я понимаю, но если вы поместите два правых div s в другое содержимое div , разве это не решит вашу проблему? (Нам действительно нужен код, предпочтительно jsFiddle, чтобы точно знать, в чем ваша проблема)

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

4. Привет @myfunkyside Естественно, идея такова: если по вертикали осталось свободное место, не переходите на новую строку. Точно такое же поведение (которое работает по умолчанию, если два вертикальных div были слева: когда вы говорите «display: inline-block», все идет вправо, если есть место

Ответ №1:

Быстрый способ сделать это — использовать макет столбца.

Вы бы поместили оба раздела в свои собственные, содержащие divs:

Пример JSFiddle

HTML

 <div class="container">
    <div class="column">
        <div class="content one">
        </div>
    </div>
    <div class="column">
        <div class="content two">
        </div>
        <div class="content two alt">
        </div>
    </div>
</div>
  

CSS

 .column{
    float: left;
}
.content{
    width: 100px;
}
.content.one{
    height: 200px;
    background: red;
}
.content.two{
    height: 100px;
    background:blue;
}
.content.two.alt{
    background:green;
}
  

Комментарии:

1. Спасибо, Матиас, но вы используете фиксированные размеры, я хочу что-то с процентами: если справа есть пробел, я не хочу, чтобы div переходил на новую строку, но без фиксированных размеров

2. @ZiedHamdi пожалуйста, также обратите внимание, что я просто показываю наименьшее количество кода, чтобы донести суть.

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

4. Вы прекрасно выражаете себя. Вы просто не понимаете концепцию. В какой-то момент вам нужно будет определить ширину jsfiddle.net/A23s4/2

5. :-), я только что отредактировал свой вопрос, вот пример jsfiddle: jsfiddle.net/zhamdi/zu5sU