Animer le placeholder avec :before
Je suis tombé sur une question sur Stackoverflow qui voulait animer le placeholder pour lui donner un effet d'apparition en animation avec pour piste d'agrandir la largeur.
PremiĂšre idĂ©e que j'ai eu Ă©tait d'appliquer un Ă©lĂ©ment qui aura le rĂŽle de calque par dessus le input avec :before et de l'animer. Le soucis c'est qu'on ne peut pas appliquer de pseudo-Ă©lĂ©ment Ă la balise input. Sachant qu'on peut appliquer du style au placeholer j'ai essayĂ© d'appliquer le pseudo-Ă©lĂ©ment au placeholder lui-mĂȘme et qui sera dans notre cas plus cohĂ©rent...et ça fonctionne ! Je trouve ça marrant et Ă©trange Ă la fois qu'on puisse appliquer des pseudo-Ă©lĂ©ments au placeholder mais pas au input. Du coup ça devient jouable :
@include keyframes(apparition) { 0% { width: 100%; } 100% { width: 0; } } input { height: 40px; width: 200px; @include input-placeholder { position: relative; &:before { background-color: #fff; content: ""; height: 100%; position: absolute; right: 0; top: 0; width: 100%; @include animation(apparition 5s infinite linear); } } }
Résultat : http://codepen.io/pik_at/pen/wBmmoY
Edit: Apparemment fonctionne uniquement sous webkit














