2016-12-28 1 views
0

Я столкнулся с тем, что, по моему мнению, является уникальной ситуацией, главным образом потому, что я не могу найти ничего, чтобы помочь мне в этом. Я пытаюсь добавить эффект параллакса внутри маскированного элемента. Перед тем, как элемент может быть ... «parallaxed?» ... он должен скользить в поле зрения внутри маскированного контейнера.Parallax, Mask, Transitions (oh my!) Для 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) без использования обрезки?

ответ

0

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

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

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

+0

Спасибо за ответ. К сожалению, клиентские приложения установлены в камне, поэтому нет возможности жить с прямоугольным клипом. Кроме того, добавление изображения перед элементом было моей мыслью. Тем не менее, область слишком велика, и изображение, которое будет двигаться под ней (тот, который будет обнаружен) тоже слишком велик - я говорю высотой 1000 пикселей, что означает, что изображение покрытия должно быть не менее 2500 пикселей , что повлияло бы на производительность, не говоря уже о том, будет ли браузер масштабироваться, он больше не будет соответствовать. – Webreality

+0

Покрытие (маска) должно быть только размером с треугольник. Вы можете обрезать остальную часть, используя 'overflow: hidden' на контейнере. –

Смежные вопросы