I'm not sure it's related to fabrics. Perhaps the quality of the dye or the method used? I'd be interested to know if anyone can provide input, as I just washed (in cold water) a black silk cardigan and a pair of black cotton/lycra pants, and they both lost a great deal of color. I'm taking the cardigan back to the store (it is now charcoal grey.). As for the pants, it did say "dry-clean only", so I don't have a case.
I don't know what's perfectly colorfast, outside of synthetics. In my washing experience, deep and rich colors go first. Everyone has the experience of fading indigo blue jeans, of course. But when I'm handwashing anything scarlet, or purple, or black, I wash it as briefly as possible, then take pains to rinse quickly and then dry it separately from everything else.