Как сделать фиксированную webKit-маску для DIV блока?

Рейтинг: 1Ответов: 0Опубликовано: 15.11.2014

Допустим, у нас есть два блока div, наложенных друг на друга, единственное их отличие - это то, что в нижнем блоке div к контенту применен эффект - допустим, черно-белый фильтр -webkit-filter: grayscale(100%);:

<div id="p1" style="position:absolute;z-index:1;-webkit-filter: grayscale(100%);"></div>
<div id="p2" style="position:absolute;z-index:2;"></div>

Если блок p2 уменьшить в размере и синхронизировать скролл, то мы добьемся эффекта перехода цветного контента в черно-белый .
Однако сайт, который я пишу, предназначен для мобильных устройств, и в iOS возникла проблема невозможности определить динамичную позицию scroll'а.
Как вариант нужно переходит к нативному скроллу и использовать, ну, к примеру, iscroll. Но подобная реализация достаточно сильно грузит мобильное устройство.
Поэтому пришла идея обрезать блок div id="p2", используя маску webkit-mask, и зафиксировать эту маску относительно страницы.
Более подробно в анимации: http://outsins.com/mask.gif

Вот, собственно, сам код:

   <div id="scroll" style="-webkit-overflow-scrolling:touch;left:200px;width:500px;height:500px;">

    <div id="p1" style="position:absolute;width:500px;height:1000px;z-index:1;-webkit-filter: grayscale(100%);">
Некоторый текст
    </div>

    <div id="p2" style="position:absolute;width:500px;height:1000px;z-index:2; color: blue;
    -webkit-mask:url(heartmask.png) no-repeat center center;-webkit-mask-attachment: fixed;">
Некоторый текст
    </div>
    </div>

Я положил два наложенных блока в общий контейнер и добавил к нему тач-скролл.
Теперь во время скролинга будут двигаться одновременно два div'а (p1 и p2) на верхний слой я добавил маску -webkit-mask:url(heartmask.png) и сделал маску фиксированной -webkit-mask-attachment: fixed;.
Таким образом, контент должен обрезаться по маске, которая якобы должна не двигаться, и должен виднеться нижний слой с примененным эффектом.
Но -webkit-mask-attachment: fixed; не работает, и маска перемещается вместе со всей страницей, хотя поддерживается браузерами на ios и android. =(

Возможно, я что-то делаю неправильно, так как не нашел ни единого примера с фиксированной маской в Интернете. =(

В итоге получается так: http://outsins.com/mask2.gif

Где моя ошибка? Как можно исправить?
Ценю любую помощь...

Ответы

Ответов пока нет.