Nel tuo codice il div rect è vuoto, né per esso è impostata un'altezza, quindi di fatto il div occupa solo lo spazio del suo contenuto (nullo) e quindi lo sfondo non si vede. Soluzione: assegna al div un'altezza pari a quella dello sfondo (o inserisci del contenuto, ma in questo caso indica anche se l'immagine deve essere ripetuta oppure no)