Этот хитрый:
Если вы устанавливаете ширину на боковой панели, перемещаете ее, и не устанавливаете ширину содержимого (также не перемещайте содержимое также, поскольку это приведет к тому, что div будет «сжато-оберточным»). Тогда колонка будет вести себя так, как вам нужно.
#content { width: auto; display:block } /* not really necessary as these are default */
#sidebar { width: 30%; float: right }
Я хотел бы добавить, что это по своей сути неестественно и часто ограничивает. Лучше всего, если вы управляете макетом на стороне сервера (у вас есть какой-то скрипт, который генерирует макеты), а затем добавляйте классы CSS в документ до его визуализации.
Возможно чисто HTML-решение, но оно также зависит от этого конкретного поведения. Если вы хотите использовать плавающий #content div, он не будет работать (потому что вы будете вынуждены указывать размеры, чтобы избежать эффекта сжатия).
Вы также можете сделать это с помощью JavaScript. При этом следует обратить внимание на то, что при включении javascript вы можете получить FOUC (флеш-контент без стиля).
С помощью jQuery вы можете сделать что-то вроде подсчета соседних div, т. Е.
jQuery('#content').nextAll().length
Затем используйте результат, чтобы сделать что-то вроде:
jQuery('#content').addClass('has_sidebar').