il problema è che usando position:absolute; si toglie l'elemento a cui è applicato dalla cascata del documento percui in realtà l'elemento ora non ha più genitori (e quando imposti dimensioni in % vengono date in base al genitore)

ora: è probabile che in queste situazioni il browser dia una dimensione "di default" (la larghezza massima della pagina quando non viene specificata dal CSS) alla larghezza facendo risultare l'effetto da te descritto... l'unica soluzione (che non è una soluzione) penso sia non usare position:absolute;... oppure specificare la larghezza in em o px...