Элементарный CSS. Создаёшь контент иконки, бордер и закрасишь. При hover меняешь width и контент меняешь на текст
P.S. Подобное вроде на JS пишут, но с помощью CSS тоже можно, правда там менять придётся текст при hover для каждого баннера. Всё же, никто не отменял вариант ждать решения от нормального программиста)