ABC являются артефактом C ++ и противоречат утиной печати. Если класс Animal не определил speak
, он сделает то, что вы намереваетесь, не прилагая никаких усилий.
>>> class Animal(object):
... pass
...
>>> class Dog(Animal):
... def speak(self):
... print "bark"
...
>>> animal = Animal()
>>> dog = Dog()
>>> animal.speak()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Animal' object has no attribute 'speak'
>>> dog.speak()
bark
C ++ и родственные языки заставляют вас создавать ABC, потому что ABC на самом деле является описанием интерфейса. Python избегает компромиссных деклараций интерфейса, поскольку они пытаются документировать код - это контракт, который лучше применяется с помощью лингвистических средств.
Несколько фонов!
тело {фон: # eb01a5; фоновое изображение: url ("IMAGE_URL"); / * запасной вариант * / background-image: url ("IMAGE_URL"), linear-gradient (# eb01a5, # d13531); / * W3C * /}
Эти две строки являются резервным вариантом для любого браузера, который не поддерживает градиенты. См. Примечания для наложения изображений только IE <9 ниже.
Последняя строка устанавливает фоновое изображение и градиент для браузеров, которые могут их обрабатывать.
Почти все современные браузеры поддерживают несколько фоновых изображений и фонов css.См. http://caniuse.com/#feat=css-gradients для поддержки браузера. Хороший пост о том, почему вам не нужны несколько префиксов браузера, см. В http://codepen.io/thebabydino/full/pjxVWp/
Layer Stack
Следует отметить, что первое определенное изображение будет наверху в стеке. В этом случае изображение находится НАверху градиента.
Для получения дополнительной информации о фоновых слоях см. http://www.w3.org/TR/css3-background/#layering .
ТОЛЬКО штабелирование изображений (без градиентов в объявлении). Для IE <9
IE9 и выше может складывать изображения таким же образом. Вы можете использовать это для создания градиентного изображения для ie9, хотя лично я бы этого не сделал. Однако следует отметить, что при использовании только изображений, то есть <9 будет игнорировать резервный оператор и не будет отображать никаких изображений. Этого не происходит, если включен градиент. Чтобы использовать одно резервное изображение в этом случае, я предлагаю использовать замечательный условный HTML-элемент Пола Айриша вместе с резервным кодом:
.lte9 #target{ background-image: url("IMAGE_URL"); }
Положение фона, размер и т. Д.
Другие свойства, которые будут применяться к одному изображение также может быть разделено запятыми. Если указано только 1 значение, оно будет применено ко всем изображениям в стеке, включая градиент. background-size: 40px;
ограничит изображение и градиент высотой и шириной 40 пикселей. Однако использование background-size: 40px, cover;
сделает изображение 40px, а градиент покроет элемент.Чтобы применить настройку только к одному изображению, установите значение по умолчанию для другого: background-position: 50%, 0 0;
или для браузеров, которые его поддерживают , используйте initial
: background-position: 50%, initial;
Вы также можете использовать сокращенное обозначение фона, однако это удаляет резервный цвет и изображение.
body{
background: url("IMAGE_URL") no-repeat left top, linear-gradient(#eb01a5, #d13531);
}
То же самое относится к положению фона, повторению фона и т. Д.