Как сделать прелоадер на сайт в %?
демонстрация мокапов, очень много изображений которые очень высокого разрешения для ретины
Подгружайте картинки js'ом(lazy load). Пусть вся станица будет 10%, то каждая загруженная картинка будет 90% / n-image. Вот и обновляйте статус после каждой картинки.
Но изначально подход какой-то странный. Вы заставляете клиента ждать загрузки картинок всех? Почему не использовать lazy load? Под каждой картинкой pre-loader и по мере загрузки страницы меняйте pre-loader на картинку.  Пусть клиент смотрит на 1 пока остальные грузятся.
Ну и если уж совсем 'правильно', то делайте адекватную preview-картинку(маленького размера). Если ему понравится, то он перейдет на странице с полноразмерной картинкой
Может кто делал
Не встречал и вряд ли тут может быть полноценное решение даже в теорииЕсть идея замерить за сколько загрузится один файл с сервера и потом на основании этого
Файлы бываю разного размера, могут храниться на разных серверах, могут грузиться из кеша браузера, соответственно скорость загрузки 1 файла не скажет Вам ни о чем.
Добавим сюда асинхронно подгружаемые ресурсы, время на срабатывание js скриптов и т.д. В итоге логика, которая это все отследит, будет замедлять работу сайта больше чем все остальное.
Многие думали на этот счет и всегда правильный выход - эмуляция прогресса загрузки, а не его точное определение.