Вот один из способов сделать это с помощью общего кода:
HTML:
<div id="container">
<div id="content"></div>
<div id="sidebar"></div>
</div>
CSS:
Установите явную ширину контейнера и содержимого, оставляя место для боковой панели в контейнере. Горизонтально отцентрируйте контейнер.
#container {
width: 200px;
margin: 0 auto;
}
#content {
width: 150px;
}
Теперь мы собираемся position: fix
на боковой панели относительно центра страницы, а не относительно правого края страницы. Сделайте так, чтобы ширина оставшегося пространства в контейнере оставалась равной margin-left
(или padding-left
, в зависимости от других вещей, которые вы можете захотеть с ним делать), равной ширине содержимого. Затем установите right: 50%
(для правой боковой панели измените эти значения на left
для левой боковой панели) и margin-right
на отрицательную половину ширины контейнера:
#sidebar {
width: 50px;
margin-left: 150px;
position: fixed;
right: 50%;
margin-right: -100px;
/* other styles such as "top", etc. */
}
Измените размер окна, и оно останется плотно прилегающим к содержимому и расположится вертикально там, где вы его разместите.
Вот скрипка (с некоторыми дополнительными стилями для наглядности): http://jsfiddle.net/blineberry/UkEkS/