Olá pessoal,
Estou editando o CSS usando JS. Estou criando uma animação em um input de login, onde o texto que está disfarçado de placeholder fica no centro, mas quando clico ele sobe. Meu script funciona, porém ele não retorna ao estado anterior quando eu clico em outro lugar.
let loginFormEmailInput = document.querySelector('.login__form-email-input')
let loginFormEmailLabel = document.querySelector('.login__form-email-label')
let loginFormSenhaInput = document.querySelector('.login__form-senha-input')
let loginFormSenhaLabel = document.querySelector('.login__form-senha-label')
loginFormEmailInput.addEventListener('click',deslocaLabelEmail)
loginFormSenhaInput.addEventListener('click',deslocaLabelSenha)
function deslocaLabelEmail(){
loginFormEmailLabel.style.paddingTop = "0px"
}
function deslocaLabelSenha() {
loginFormSenhaLabel.style.paddingTop = "0px"
}
Dessa forma toda vez que eu tiver que fazer uma animação tenho que escrever uma nova função, então para refatorar o script pensei em algo assim:
let loginFormEmailInput = document.querySelector('.login__form-email-input')
let loginFormEmailLabel = document.querySelector('.login__form-email-label')
let loginFormSenhaInput = document.querySelector('.login__form-senha-input')
let loginFormSenhaLabel = document.querySelector('.login__form-senha-label')
loginFormEmailInput.addEventListener('click',desloca)
loginFormSenhaInput.addEventListener('click',desloca)
function desloca (elemento){
elemento.style.paddingTop = "0px"
}
desloca(loginFormEmailLabel)
desloca(loginFormSenhaLabel)
Assim eu teria apenas uma função e várias chamadas, porém assim ao carregar a página a animação de mover o texto já acontece, nem preciso clicar no input. Tem alguma forma de criar uma função genérica e fazer várias chamadas? Ou até mesmo uma forma de colocar todas animações em uma função.
Abraço.