2013-12-07 4 views
2

У меня есть заголовок/маленький текст, расположенный в правой части контейнера div.Поместите элемент, разделенный на css

HTML:

<div id="img"></div> 
<h2>Heading<small>A long long text</small></h2> 

CSS:

#img { 
    width: 50px; 
    height: 50px; 
    background: red; 
    float: left; 
} 

FIDDLE: http://jsfiddle.net/U8BnX/

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

Result

Я попытался это следующим образом, но это не удается, когда контейнер DIV шире, так как прокладка устанавливаются на статическое значение , (http://jsfiddle.net/4p7qh/) Есть ли лучший способ сделать это?

+0

Можем ли мы изменить HTML с помощью JS? –

+0

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

+0

Мне любопытно, почему вы не можете изменить html-код, чтобы он мог представлять фактическую структуру документа? –

ответ

1

Вот чистый CSS решение:

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

<div class="container"> 
    <div id="img"></div> 
    <h2>Heading</h2> 
    <small>A long long text</small> 
</div> 

Изменено таблицы стилей:

/* Common styles */ 
#img { 
    width: 50px; 
    height: 50px; 
    background: red; 
    float: left; 
} 

/* Layout 1 */ 
.container h2 { display:inline; font-size:24px; } 
.container small { font-size:20px; font-weight:bold; } 


@media screen and (max-width: 500px) { 
    /* Layout 2 */ 
    .container { 
     position:relative;   
    } 

    .container h2 { position:absolute; top:-20px; left:0; } 
    .container { padding-top:40px; } 
} 

Живой пример:

http://jsfiddle.net/U8BnX/2/

ограничьте область просмотра , макет 2 срабатывает, когда ширина составляет 400 пикселей или ниже. Несмотря на то, что это не идеальное решение, это все равно работает, если вы измените размер элемента #img.

+0

Спасибо, но это не решает проблему, как я себе представлял: когда div расширяется (например, 80 пикселей), заголовок h2 остается не в том же месте. Я хочу, чтобы это работало с нестационарным по ширине. – priojewo

+0

Невозможно, если вы не измените HTML или не используете javascript для изменения DOM и/или пересчета позиций/ширины. – HaukurHaf

+0

Какую структуру HTML вы бы использовали для переключения между двумя выходами только с помощью css? – priojewo

0

Смотрите, если это помогает

#img { 
    width: 50px; 
    height: 50px; 
    background: red; 
    float:left; 
    margin-top:30px; 
} 
h2{ 
    left:-50px; 
    position:relative; 
} 
small{ 
    display:block; 
text-indent:60px; 
} 
+0

Спасибо, но это не решает проблему, как я себе представлял: когда div расширяется (например, 80 пикселей), заголовок h2 остается не в одном месте. Я хочу, чтобы это работало с нестационарным по ширине. – priojewo

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