e il restante deve scorre su altre pagine
Non so esattamente cosa intendi.
Se intendii semplicemente dare un'impaginazione, be, allora utilizzi
LIMIT init,range
nella query sql. Chiaramente init sarà una variabile letta per esempio come GET.
Codice PHP:
$start = (isset($_GET['start']))?$_GET['start']:0;
$query "tua query"." LIMIT $start, 40";
/*
* Ovviamente vedi di filtrare $start, altrimenti uo ci mette di tutto dentro  e ti modifica la query
*/ 
Cioè la prima query avrà LIMIT 0,40, e con queste 40 immagini costruisci la tabella, poi metti il link per la pagina successiva che punta allo stesso indirizzo ma che so con parametro start=41, cosi quando la pagina viene ricaricata avrai LIMIT 41,40 e ottieni le successive 40 immagini.
Intendevi una cosa del genere?
Se invece parli di effetti e roba simile, quindi senza ricaricamento di pagina o parte di essa devi utilizzare javascript e non ti serve limitare la query.