the best kinds of shampoos for semi permanent color are the natural kinds, low sulfate or sulfate free, and things with low alcohol content. to prevent from bleeding, you could wash each part that's a different color(like for instance my hair) seperately with cold water. hot water and heat opens the cuticle of the hair, which causes color molecules to come out. so the cold makes the cuticle more compact and prevents the color from fading out quicky and washing onto other parts of the hair. cold water alone isnt enough to do it though, so if your hair is drastically different, like maybe purple and blonde or something, bleeding is expected if you dont seperate each part out as best you can.
hope that helped smile