Параллакс, маска, переходы (о боже!) для IE без отсечения

Я столкнулся с тем, что я считаю уникальной ситуацией, главным образом потому, что я не могу найти ничего, что могло бы мне помочь. Я пытаюсь добавить эффект параллакса внутри замаскированного элемента. Перед тем, как элемент можно будет ""параллаксировать"?"... он должен проскользнуть в поле зрения внутри замаскированного контейнера.

В Chrome у меня нет проблем, так как я могу использовать:

-webkit-mask-image: url(path/to/image.png);

Для Firefox у меня нет проблем, так как я могу использовать:

<svg><defs><clipPath id="clip-elem"><polygon points="0 0, 891 300, 0 944"></polygon></clipPath></defs></svg>

и примените клип svg к контейнеру, который создаст маску для большего элемента с помощью:

clip-path:url("#clip-elem");

Для поддержки IE 10 и 11 единственным возможным рабочим решением для создания эффекта маски является отсечение. Это создает иллюзию маски, но на самом деле обрезает элемент. Как только он начинает скользить вверх или вниз, вы сразу видите, что он обрезан, так как он выходит за пределы области, где он должен быть замаскирован.

Может ли кто-нибудь предоставить рабочий пример (или представление) в IE о маскировании с помощью элемента, который анимируется вверх и вниз (translateY) без использования отсечения?


person Webreality    schedule 28.12.2016    source источник


Ответы (1)


IE не поддерживает маскирование CSS или обрезку произвольных форм. Если вам нужно замаскировать HTML-элементы, возможно, лучшее, что вы можете сделать, это поместить перед вашими элементами изображение цвета фона с прозрачным отверстием в нем.

В качестве альтернативы, возможно, вы могли бы жить с IE, используя прямоугольную область клипа вместо треугольника.

Или последний вариант — преобразовать все в SVG. Обрезка и маскирование работают внутри SVG.

person Paul LeBeau    schedule 28.12.2016
comment
Спасибо за ответ. К сожалению, требования клиентов незыблемы, поэтому с прямоугольной клипсой жить невозможно. Кроме того, я подумал о добавлении изображения перед элементом. Тем не менее, область слишком велика, и изображение, которое будет перемещаться под ней (тот, который будет показан), также слишком велико - я говорю о 1000 пикселей в высоту, что означает, что закрывающее изображение должно быть не менее 2500 пикселей в высоту. . это повлияет на производительность, не говоря уже о том, что если браузер масштабируется, он больше не будет соответствовать. - person Webreality; 28.12.2016
comment
Покрывающее изображение (маска) должно быть размером с треугольник. Вы можете вырезать остальные, используя overflow: hidden на контейнере. - person Paul LeBeau; 28.12.2016