2015-01-26 5 views
0

enter image description hereОбтекание текста вокруг изображения, CSS только

Что является наиболее эффективным способом для создания этого эффекта, зная, что:

  • HTML структура не может быть изменен
  • вы можете использовать только чистый CSS
  • размеры изображения являются переменными
  • ширина основного контейнера является переменной
  • сумма из текста переменной, может быть 100 символов или 5000

<div> 
 

 
    <div class="image"> 
 
    <img src="https://placekitten.com/g/320/150"> 
 
    </div> 
 

 
    <h1>Lorem ipsum dolor sit amet</h1> 
 

 
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ut risus quam. Curabitur lectus nisi, congue a risus sit amet, dignissim posuere enim. Mauris eu arcu id augue sollicitudin dictum. Curabitur id lorem eu magna luctus molestie. Pellentesque ut est purus. Sed id scelerisque elit, nec condimentum augue. Nullam nibh nunc, dictum eget consectetur id, ullamcorper sit amet diam.<br><br>Quisque scelerisque massa ac nisi volutpat, eu posuere metus malesuada. Etiam ligula ante, faucibus sagittis dolor posuere, dignissim pulvinar velit. Nam bibendum neque sed nisl dignissim convallis. Fusce convallis sit amet neque commodo hendrerit. Nunc placerat aliquet libero, nec tincidunt ligula pretium nec. Nam a enim finibus, ultrices lectus ut, accumsan magna. Vestibulum quis vehicula libero. Aenean congue tellus vitae enim feugiat, quis varius eros porta. Proin mattis quam nec fringilla venenatis. Nulla mollis arcu non velit laoreet sodales. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam at cursus sapien.</p> 
 
    
 
</div>

+0

Ну, я посмотрел и не нашел однозначного ответа. Вы можете мне помочь? – c97

+1

Установите '.image'' 'float: left;' и установите '.image ~ *' на 'float: right;', может быть. – TylerH

+0

Этот путь? http://jsfiddle.net/ogexL9sr/ – c97

ответ

0

без изменения разметки очень трудно управлять этим. Хотя вы можете использовать так:

.image{ 
    float: left; 
    margin-bottom: 20em;/* you should set as your around paragraph height */ 
} 

<div> 
 

 
    <div class="image" style="float:left;margin-bottom:30em;"> 
 
    <img src="https://placekitten.com/g/320/150"> 
 
    </div> 
 

 
    <h1>Lorem ipsum dolor sit amet</h1> 
 

 
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ut risus quam. Curabitur lectus nisi, congue a risus sit amet, dignissim posuere enim. Mauris eu arcu id augue sollicitudin dictum. Curabitur id lorem eu magna luctus molestie. Pellentesque ut est purus. Sed id scelerisque elit, nec condimentum augue. Nullam nibh nunc, dictum eget consectetur id, ullamcorper sit amet diam.<br><br>Quisque scelerisque massa ac nisi volutpat, eu posuere metus malesuada. Etiam ligula ante, faucibus sagittis dolor posuere, dignissim pulvinar velit. Nam bibendum neque sed nisl dignissim convallis. Fusce convallis sit amet neque commodo hendrerit. Nunc placerat aliquet libero, nec tincidunt ligula pretium nec. Nam a enim finibus, ultrices lectus ut, accumsan magna. Vestibulum quis vehicula libero. Aenean congue tellus vitae enim feugiat, quis varius eros porta. Proin mattis quam nec fringilla venenatis. Nulla mollis arcu non velit laoreet sodales. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam at cursus sapien.</p> 
 
    
 
</div>


Если вы собираетесь изменить разметку, то было бы легче управлять, что, окружив свой h1 и p в div и установка overflow:hidden;, который становится чище, чем установка поля в нижней части плавающего div.

+0

Я не знаю, сколько текста будет в текстовом контейнере. Если будет небольшое количество символов, скажем 100, то этот запас оставит гигантское отверстие под изображением. – c97

+0

Итак, вы должны изменить свою разметку, поскольку мой ответ говорит в последнем абзаце ... –

+0

Или, если вы можете пойти с @TylerH, упомянутым ... –

0

Этого не может быть достигнуто с учетом установленных вами критериев. Вам нужно будет изменить разметку. Если вы используете ответ Стива, текст будет обернут под изображение. Можно сделать это с помощью jQuery.

+0

Ой, подождите. Он НЕ хочет, чтобы текст обернулся, хотя он и так говорит в названии. Я собираюсь удалить свой ответ. –

+0

Итак, что вы называете этим типом эффекта? Мой английский довольно беден. – c97

+0

Да, изображение не имеет текстовой упаковки. Возможно, он хочет, чтобы текст обернулся, и просто не мог заставить изображение выглядеть правильно. Я не уверен. – ARWVISIONS

0

Попробуйте этот стиль:

<style> 
    .image { 
     padding: 3px; 
     margin: 0 7px 2px 0; 
     display: inline; 
     float: left; 
    } 

    .OuterDiv 
    { 
     display: inline-block; 
    } 
</style> 

OuterDiv это имя класса внешнего тега Div

<div class="OuterDiv"> 
      <div class="image"> 
      .... 
</div> 
+0

Это не работает http://jsfiddle.net/bg1mo7ms/ – c97

+0

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