С помощью JavaScript страница прокручивает первый блок на нужное количество пикселей.
Первый блок имеет меньший z-index, и второй наезжает на него.
Также футер имеет меньший z-index и при скролле открывается.
+ все оформлено простой анимацией появления при скроле на определенную высоту (с помощью JavaScript)
Например, отсюда можно взять https://daneden.github.io/animate.css/
Ctrl + Shift + I появится консоль разработчика (Chrome)
Выбираете нужный элемент на странице.
И на вкладке style будут его стили.
И справа показан файл, где эти стили прописаны.
По его адресу можете найти файл на хостинге
1) При наведении на блок, весь заливается черным цветом, а дочерний центральный белым цветом https://codepen.io/anon/pen/vqLbdW
p.s. hover не дает эффекта на родителя, поэтому эффект на весь блок