Установить правое поле для неплавающего элемента
JSFiddle
Единственное требование - вы должны заранее определить ширину вашего плавающего элемента. Тогда он может иметь любую высоту, которая вам нравится, и неплавающее содержимое (при применении правого поля) не будет растягиваться под плавающим элементом.
Как это работает?
- Элемент с плавающей точкой справа имеет width = X
- У нас есть обычный контент, но мы установили его right margin = X + s , где s - это некоторое заранее заданное пространство между вашим контентом и плавающим элементом, чтобы они не касались.
И это все.
Поскольку у вас есть несколько элементов содержимого (заголовки, абзацы), вы должны поместить их в контейнер с этой настройкой правого поля.
<div id="parent">
<div id="floated">Foo bar</div>
<div id="content">
<h2>Foo</h2>
<p>Text!</p>
</div>
</div>
И CSS:
#floated
{
float: right;
padding: 1em;
background: #ccc;
width: 10em;
}
#content
{
margin-right: 13em; /* 10em width + 2 x 1em padding + 1em space */
}
Почему это решение лучше, чем настройка ширины основного контента?
Поскольку настройка ширины основного содержимого будет работать только тогда, когда вы хотите ограничить содержимое документа фиксированной шириной (например, сетка 960). Но если вы хотите, чтобы ваш контент занимал всю ширину окна браузера, это решение будет работать независимо от размера окна браузера.
И небольшой совет
Избегайте использования встроенных стилей, когда это возможно, потому что поддержка вашего приложения / сайта станет кошмаром.