Jest to robione za pomocą pseudoelementów :before i :after. Nic trudnego tutaj nie ma. Na początku linie są po prostu pod pewnym kątem (rotate), a po najechaniu na element (div) jest inna wartość właściwości rotate. Płynne przejście uzyskane dzięki właściwości transition.
P.S.
Przydatne narzędzie - Chrome DevTools, żeby sprawdzać jak coś działa.