Я бы предложил использовать четыре элемента div и четыре изображения:
HTML:
<div id="container">
<div id="top"></div>
<div id="content"></div>
<div id="bottom"></div>
</div>
CSS:
#container { background: transparent url(shadow-repeat.jpg) repeat-y; }
#top { background: transparent url(top.jpg) no-repeat; }
#content { background: white url(gradient.jpg) repeat-x; }
#bottom { background: transparent url(bottom.jpg) no-repeat; }
- shadow-repeat.jpg - горизонтальный срез размером 1 пиксель от середины (по вертикали) поля, включающий белую рамку и тень
- top.jpg достаточно высок, чтобы покрыть верхние закругленные углы, и включает желтый фон
- градиент.jpg - вертикальный срез размером 1 пиксель, который включает градиент от нижней части top.jpg к белому
- bottom.jpg достаточно высок, чтобы покрыть нижние закругленные углы, и включает белый фон.
Идея состоит в том, что контейнер имеет белую границу и тень на боковых сторонах, которая повторяется вертикально, давая вам вертикальное расширение.
Верхний div имеет закругленные углы. Так как это JPG, он покроет жесткие углы фона контейнера и, будучи правильно расположен, будет выглядеть гладким. То же самое касается нижнего деления.
Другой трюк - это горизонтально повторяющийся вертикальный срез градиента. Если div содержимого расположен правильно, вы можете выстроить его так, чтобы он по-прежнему выглядел гладким. Поскольку он также имеет белый фон, он покроет все остатки, которые остаются посередине повторяющимся фоном контейнера.
Это может занять немного возиться с полями и позиционированием, чтобы получить права, но это основная идея
Редактировать
Обратите внимание, что вам также нужно будет задать ширину всех div и высоту #top и # bottom.