Такое поведение имеет место, поскольку foo
является одинаковой переменной в обоих классах.
Это аналог глобальной переменной в модуле и возможность видеть, что две разные функции в этом модуле могут видеть и изменять эту глобальную переменную.
Возможное исправление:
class Parent(object):
foo = 'bar'
class Child(Parent):
foo = Parent.foo
Parent.foo = 'zoo'
print(Child.foo)
Вывод:
bar
ЭМС действительно работает как проценты в этом, основной размер шрифта всегда 1em, и.7em составил бы 70% из того (таким же образом 1.2em, будет эквивалентно из 120% основного размера шрифта). Чтобы это работало правильно, хотя необходимо определить основной размер шрифта на теле документа. Посредством экспериментирования я нашел тот размер шрифта: 77%; дает Вам хороший основной размер во всех браузерах (который является им, делает 1em рендеринг в "нормальном" и читаемом размере). Можно хотеть попробовать другие значения между 75% и 80% в зависимости от того, какое семейство шрифтов Вы хотите использовать. Также примите во внимание, что относительные размеры шрифта наследованы накапливаемо - например:
<style>
small { font-size: .8em; }
span.tiny { font-size: .8em }
</style>
<small>This text is 80% of base size where as
<span class="tiny">this text is 80% of 80% (or 64%) of base size</span>
</small>
Это работает в Вашу пользу, поскольку необходимо было бы только дать классу кнопки размер шрифта.7em для достижения того, что Вы хотите (кнопки затем всегда имели бы размер шрифта, который составляет 70% его родительского объекта). Счастливое кодирование!
Редактирование 2014 года:
Стоит указать, что поддержка браузера для Корня, единица EM теперь столь хороша*, что, если Вы уже не используете его, это стоит изучить. Корень EM (rem) связывается с корнем (документ) размер шрифта, и в отличие от "нормального" EM, это незатронуто вложением - это всегда, касается корневого размера шрифта. В то время как em
все еще очень полезны для большей части текстовой калибровки, точно потому что она действительно уважает вложение, rem
является большим для вещей как поля и дополнение, которое Вы не можете хотеть изменять размер с вложением (это - частая причина для неправильно выровненных левых полей), но который Вы действительно хотите изменить размер наряду с корнем html
размер шрифта (обычно использующий мультимедийные запросы).
Можно читать больше об ЭМСЕ по сравнению с R.E.M на Лачуге Дизайна.
*) IE8 является единственным общим браузером (~5%), который не поддерживает его - если необходимо поддерживать IE8, просто включать эквивалентный размер в пиксели перед rem
объявление.
В CSS при предоставлении относительной единицы это по умолчанию относительно размера, которому Вы наследовались. Это означает, Вы могли просто определить размер шрифта кнопки как "70%".
Существует также две других относительных единицы, удобные для размеров шрифта: их и напр. 1 их ширина буквы 'M', 1 исключая высотой буквы 'x' - очевидно, также наследованный.
Вы не должны использовать пкс в качестве размера шрифта, в качестве в Вашем примере. пкс не повинуется DPI экрана. Например, на моем экране, и 10 пкс и 26 пкс были бы маленькими. Необходимо использовать 'pt' или даже запуститься с 'них'.
Попытка:
font-size: 0.7em;
Вот еще некоторая информация: Как Измерить текст в CSS в Списке Независимо
<input style="font-size: 70%" class="button" type="submit" value="Go">
?