You could do this by blocking all link behavior until the page transition ends, then advancing to the next page. Though I'm with you, I wouldn't necessarily recommend this behavior.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<style>
body {
transition: 5s;
}
.red {
background: red;
}
</style>
</head>
<body>
<a href="http://www.google.com">test</a>
<script>
var pageTransition=function(){
// save url for later
var nextLink;
var links=document.querySelectorAll('a');
var body=document.querySelector('body');
// I was transitioning the body, you'll need browser-specific listeners
body.addEventListener('transitionend', function(e){
// navigate to next page after transition
window.location=nextLink;
});
// disable all links, save url for later
for(i=0; i<links.length; i++){
links[i].addEventListener('click', function(e){
nextLink=e.target.href;
body.className+=" red";
e.preventDefault();
});
}
}();
</script>
</body>
</html>