CSS3 эквивалентно ширине: calc (100% - 10px)

Я ищу альтернативу миграции моего CSS - уже работаю над FF и Chrome - потому что QtWebKit не предоставляет некоторую функцию CSS3 yeat.

У меня есть следующие вещи:

.fit {
    width: -moz-calc(100% - 10px);
    width: -webkit-calc(100% - 10px);
    width: -o-calc(100% - 10px);
    width: calc(100% - 10px);
}

Я хочу, чтобы класс соответствовал всем элементам, отображаемым в примере каркаса.

enter image description here

Примечание.. Почти все функции CSS3 могут быть идеально отображены, но, как сказано перед *-calc(), есть проблемы и не могут найти другое решение, например. используя margin-right, padding-right и т.д.

@EDIT: Я создал скрипку http://jsfiddle.net/dj3hh/, чтобы показать ожидаемое поведение. Вы можете изменять размер скрипта и все поля уважают 10px справа. Я хочу новый способ сделать это с помощью calc()

Ответ 1

Если вы измените рендеринг модели коробки на box-sizing: borderbox, то дополнение будет включено в общую ширину вместо того, чтобы быть добавленным к ней. В этом примере я предполагаю, что вы добавляете класс в элементы упаковки.

.fit { 
    width:100%
    padding-right:10px
    -moz-box-sizing: border-box; 
    -webkit-box-sizing: border-box;     
    box-sizing: border-box; 

}

Поддержка браузера очень хороша; все современные браузеры. Только вам понадобится polyfill для IE7 и ниже.

Для получения дополнительной информации: paulirish.com/2012/box-sizing-border-box-ftw/


EDIT:

Это решение, которое, как я считаю, полностью соответствует вашему краткому изложению, см. скрипту: http://jsfiddle.net/David_Knowles/UUPF2/

.fit { 
    width:100%
    -moz-box-sizing: border-box; 
    -webkit-box-sizing: border-box;     
    box-sizing: border-box; 
}

td {
    padding-right: 10px;
}

Ответ 2

Поместите position: relative в родительский элемент, затем выполните...

.fit {
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    right: 10px;
}