Есть два способа получить желаемый результат:
- поставить правильную полосу перед контентом
в HTML, удалите ширину из
содержание и дать ему право
поле вместо (ширина справа
бар + что-то лишнее)
- поместите правую полосу абсолютно справа, уберите ширину с
содержание и дать ему право
вместо этого поле (см. № 1)
Кстати, проблема в том, что вы смешиваете абсолютную и относительную ширину, и то, что вы видите, это именно то, что вы должны видеть.
Редактировать: Перечитав ваш вопрос, я думаю, что с переполнением: скрытый (делает его хорошим квадратным блоком) в части контента, вы можете заставить его работать в комбинации с 1. поле:
<style type="text/css">
#content {
overflow: hidden;
height: 500px;
border:2px solid #00ff00;
}
#rightbar {
max-width: 200px;
width: 17%;
float: right;
border:2px solid #ff0000;
}
#rightbar a {
display: block;
padding: 5px;
background-color: #F0F4FF;
margin: 3px;
}
#rightbar a:hover { background-color: #1D3E93; color: #fff; }
</style>
<div id="rightbar">
<a href="#">link 1</a>
<a href="#">link 2</a>
<a href="#">link 3</a>
</div>
<!-- content needs to be placed after rightbar -->
<div id="content">contents</div>