Я полагаю, что выбранный вами ответ не будет работать:
http://jsfiddle.net/cNsXh/
edit:
Извините, приведенный выше пример сначала не был корректным.Теперь это.
/ edit
Как видите, div #b
переместится под div #a
, потому что margin-left
(или padding-left
) будет добавлено к30%
.И поскольку здесь мы смешиваем процентное соотношение со значениями в пикселях, мы не сможем определить значения, которые гарантированно всегда будут составлять ровно 100%.
Вам потребуется использовать обертку для div #b
которая будет иметь 30%
ширину и не будет определять ширину для div #b
, а будет определять margin-left
.Поскольку div
является блочным элементом, он автоматически заполнит оставшееся пространство внутри div-оболочки:
http://jsfiddle.net/k7LRz/
Таким образом, вы обойдете возможности CSS <3 блочной модели, которыекак ни странно, это было определено так, что определение размера (ширина / высота) НЕ вычтет поля и / или отступы и / или ширину границы. <br>Я полагаю, что блочная модель CSS 3 предоставит здесь более гибкие параметры.Но, по общему признанию, я еще не уверен насчет кросс-браузерной поддержки этих новых функций.