The most common way is to take a train from Venice Santa Lucia station to Trieste (on the Italian border with Slovenia) which takes almost 2 hours. From there you can either take a bus direct to Zagreb which takes around 3 hours. Alternatively and more frequently you can take a train or bus to Ljubljana (around 1.5 hours) and an express train to Zagreb (around 1.5 hours).
There may also be some flights between Venice and Zagreb but as the distance is so short and the damage to the environment by short flights so high only Americans would even consider such a journey.