Dynamic content is already automatically generated when BarChart
is rendered with the default PerformanceGoal->Quality
so rather than reinvent the wheel you can modify the output.
d = RandomSample@Range@10;
tmp = BarChart[d, ChartLabels -> Placed[Style[#, 15] & /@ d, Above]]

Rather than use animators you can mouse over.
tmp /. x_EdgeForm :> FaceForm[RGBColor[1, 0, 0]]
or if you want to keep the edge form
tmp /. DynamicBox[{_, x_}] :>
DynamicBox[
Flatten@{If[
CurrentValue["MouseOver"], {FaceForm[RGBColor[1, 0, 0]],
EdgeForm[{GrayLevel[0.5`], AbsoluteThickness[1.5`],
Opacity[0.66`]}]}, {}, {}], x}]

..and if you want to automatically animate it all then:
ListAnimate@
Table[With[{n = n},
tmp /. DynamicBox[{_, x : RectangleBox[_, {_, z_}, ___]}] :>
DynamicBox[
Flatten@{If[
n == z, {FaceForm[RGBColor[1, 0, 0]],
EdgeForm[{GrayLevel[0.5`], AbsoluteThickness[1.5`],
Opacity[0.66`]}]}, {}, {}], x}]], {n, d}]
