Life on hit is one of the many ways of gaining like in Diablo 3 (besides life steal, heal spells, potions, health globes, life regeneration). You also restore all your life when you level up, kill a boss, quit/rejoin the game, and receive a blessing.
How does it work ?
Every time a monster is affected by your attack or a spell, you gain life. The amount of life that you gain is calculated as follow:
life_gained = life_on_hit * nb_monsters_hit * skill_modifier
life_on_hit
is the total life on hit that you have from your gear
nb_monsters_hit
is the number of monsters affected by your attack or spell (if you cleave and hit 3 enemies, then it's 3)
skill_modifier
is ticky: every spell in the game has a modifier attached to it, and its a number between 0 and 1. It is used to balance some spells. If that modifier didn't exist, some spells would give you too much life on hit and be overpowered as a result.
Also note that nb_monsters_hit
may be capped for some skills, thought not sure, hitting more than 3 enemies with cleave does not give you additional life_gained
.
The modifiers for each skills can be found here: for barb, monk & dh, for wizard.
Why are you getting +20 numbers instead of the +10 life_on_hit
that you have ?
The heal numbers that appear on your character are aggregated over time to be more readable. As I said in my comment: If you attack two times between each tick, the next tick will be the sum of the total life gained since the last tick (the two attacks)
.
If you want to know how much life you get from 1 attack, just hit once and wait for the number to show up.
The heal numbers may also benefit from crit (sometimes they have the crit animation). But I don't know much about that.