2013-04-27 2 views
0

У меня есть заголовок/контейнер без указанной ширины (поэтому он до тех пор, пока родительский). Внутри этого, у меня есть два меньших div. Теперь первый должен содержать только картинку (с установленным размером), а другой должен быть таким большим, как осталось место. Я не могу использовать ширину набора, потому что я не знаю ширины заголовка. Как это сделать с помощью чистого CSS?Сделать div заполнить остальную часть родительского

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

Вот картина так легче понять:

Example

Спасибо, Александр

EDIT 1:

HTML:

<div class="header"> 
    <div class="header_left"> 
    <div class="pic"><img width="35px" src="http://upload.wikimedia.org/wikipedia/commons/1/1a/Volkswagen_Logo.png" /></div> 
    </div> 
    <div class="header_right"> 
    <div class="time">18m ago</div> 
    <div class="name">Volkswagen</div> 
    </div> 
</div> 

CSS:

.header { 
} 

.header_left { 
    display: inline-block; 
} 
    .pic { 
    margin: 5px; 
    } 

.header_right { 
    display: inline-block; 
} 
    .time { 
    margin: 5px; 
    float: right; 
    } 
    .name { 
    margin: 5px; 
    float:left; 
    } 

Это своего рода»грязный прямо сейчас, потому что я просто пытался много вещей, и это последнее дело.

+2

Было бы намного проще с вашим кодом. Отправьте его, чтобы мы могли посмотреть, что вы попробовали, и сообщить, где проблема: – BackSlash

+0

Спасибо за отзыв, я добавил код (хотя это может не сильно помочь, потому что я просто хочу знать, как это сделать. Мой код, вероятно, мусор: P) – Aleksander

ответ

1

Было бы проще, если отображается ваш HTML. Вот пример, основанный на вашем описании. Вы можете увидеть это работает в скрипку здесь http://jsfiddle.net/Z68ds/18/

.header { 
    overflow:hidden; 
    padding: 4px; 
    background: #ddd; 
} 

.caption { 
    float: right; 
    font-size: 0.9em; 
} 

.avatar { 
    float: left; 
} 

.title { 
    margin: 14px 0 0 38px; 
} 

<div class="header"> 
    <div class="caption"> 
     texty text2 
    </div> 
    <img class="avatar" src="http://i.stack.imgur.com/5dv0i.jpg?s=32&g=1" /> 
    <div class="title">texty text1</div> 
</div> 
+0

Мне нужно иметь возможность ссылаться на texty text1 позже (через использование ID), и поэтому он должен быть в div (или в абзаце или что-то еще) , Но когда я использую div, без какой-либо дополнительной разметки, он подбрасывается ниже картинки. Как я могу это решить? – Aleksander

+0

Я обновил разметку.Если вы знаете высоту и ширину изображения, это должно сработать. Если у вас разные высоты изображения/ширины, макет будет немного сложнее. – antony

+0

Спасибо, теперь он работает :) – Aleksander

0

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

#left { 
    float: left; 
    width: 100px; 
} 

#right { 
    overflow: hidden; 
} 

Это заставит #right элемент, чтобы покрыть оставшуюся часть своего родителя. Никакой дополнительной разметки не требуется.

jsFiddle

0

Является ли это то, что вы хотите для того чтобы достигнуть?

<div id="header"> 
    <img id="logo" src="http://blog.grio.com/wp-content/uploads/2012/09/stackoverflow.png" /> 
    <p id="textRight">texty text2</p> 
    <p id="textLeft">texty text1</p> 
    <div class="clearer"></div> 
</div> 

/* CSS */ 

#logo { 
    float: left; 
} 
#textRight { 
    float: right; 
} 
#textLeft { 
    clear: right; 
    float: left; 
} 
.clearer { 
    clear: both; 
} 

Вот скрипка:

http://jsfiddle.net/T26cD/

+0

Он почти работает, но проблема в том, что «texty text1» не выровнена с нижней частью изображения, когда изображение имеет высоту 35 пикселей, а шрифт довольно большой ... Любой способ решить эту проблему без изменения размера изображения или размера шрифта? См. Скрипку: http://jsfiddle.net/T26cD/1/ – Aleksander

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