Если вкратце - то средствами CSS возможности сделать это нет и не будет, по крайней мере в обозримом будущем.
По поводу причин рекомендую почтитать
вот этот ответ на SO,
вот это обсуждение рабочей группы CSS и
общую позицию CSS working group по этому и похожим функциям в CSS.
Решение которое можно применить в современных браузерах - это
IntersectionObserver.
Поддерживается в Firefox и Chrome, для остальных есть
polyfill.
Здесь можно посмотреть демку,
здесь - её описание.