Как мне объединить фоновое изображение и CSS3 градиент на одном элементе?

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 избегает компромиссных деклараций интерфейса, поскольку они пытаются документировать код - это контракт, который лучше применяется с помощью лингвистических средств.

1161
задан John 25 February 2016 в 22:16
поделиться

1 ответ

Несколько фонов!

 тело {фон: # eb01a5; фоновое изображение: url ("IMAGE_URL"); / * запасной вариант * / background-image: url ("IMAGE_URL"), linear-gradient (# eb01a5, # d13531); / * W3C * /} 

Эти две строки являются резервным вариантом для любого браузера, который не поддерживает градиенты. См. Примечания для наложения изображений только IE <9 ниже.

  • Строка 1 устанавливает плоский цвет фона.
  • Строка 2 устанавливает резервное изображение фонового изображения.

Последняя строка устанавливает фоновое изображение и градиент для браузеров, которые могут их обрабатывать.

  • Строка 3 предназначена для всех относительно современных браузеров.

Почти все современные браузеры поддерживают несколько фоновых изображений и фонов 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);
}

То же самое относится к положению фона, повторению фона и т. Д.

1497
ответ дан 19 December 2019 в 20:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: