求助:点击输入框时CSS标签上移动画失效问题
表单标签动画不生效的问题修复
以下是导致动画失效的核心问题及修复方案:
- 类名大小写不匹配:CSS中定义的父容器类为
.inputBox(驼峰写法),但HTML里的输入框外层div使用的是.inputbox(全小写),导致父元素的position: relative未生效,绝对定位的.labelInput无法基于父容器定位,动画逻辑失效。 - 字体大小设置错误:CSS中写的
font-size: .85px不符合需求的12px,这会让标签几乎不可见,需改为font-size: 12px。 - 标签初始定位缺失:
.labelInput未设置初始top值,从默认的auto过渡到-20px不会产生平滑动画,需添加初始位置(比如top: 0)。 - HTML语法错误:
<from>应为<form>,虽不影响动画,但属于基础语法问题,建议修正。
修正后的完整代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Formulário | GN</title> <link rel="stylesheet" type="text/css" href="style.css"> <style> body{font-family: Arial, Helvetica, sans-serif; background-image: linear-gradient(to right, rgb(20, 220, 80), rgb(17, 54, 71)); } .box{ color: white; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: rgba(0, 0, 0, 0.6); padding: 15px; border-radius: 15px; width: 23%; } fieldset{ border: 3px solid greenyellow; } legend{ border: 1px solid greenyellow; padding: 10px; text-align: center; background-color: greenyellow; border-radius: 8px; color: black; } .inputBox{ position: relative; } .inputUser{ background: none; border: none; border-bottom: 1px solid white; outline: none; color: white; font-size: 14px; width: 100%; letter-spacing: 2px; padding-top: 20px; /* 添加内边距避免输入内容被标签遮挡 */ } #submit{ background-image: linear-gradient(to right, rgb(20, 220, 80), rgb(19, 169, 195)); width: 40%; border: none; padding: 10px; color: black; font-size: 17px; cursor: pointer; border-radius: 10px; text-align: center; } #submit1{ position: relative; left: 60px; background-image: linear-gradient(to right, rgb(20, 220, 80), rgb(19, 169, 195)); width: 40%; border: none; padding: 10px; color: black; font-size: 17px; cursor: pointer; border-radius: 10px; text-align: center; font-style: inherit; } #submit:hover{ background-image: linear-gradient(to right, rgb(20, 220, 80), rgb(7, 105, 40)); } #submit1:hover{ background-image: linear-gradient(to right, rgb(20, 220, 80), rgb(7, 105, 40)); } .labelInput{ position: absolute; border: none; pointer-events: none; transition: .5s; top: 0; /* 添加初始定位 */ color: white; /* 初始颜色,确保过渡自然 */ } .inputUser:focus ~.labelInput, .inputUser:valid ~ .labelInput{ top: -20px; font-size: 12px; /* 修正字体大小 */ color: greenyellow; } </style> </head> <body> <div class="box"> <form action = ""> <!-- 修正form标签拼写 --> <fieldset> <legend><b>Cadastro de Pacientes</b></legend> <br> <div class="inputBox"> <!-- 修正类名大小写 --> <label for = "nome" class="labelInput">*<b>Nome:</b></label> <input type="text" name="nome" id="nome" class="inputUser" required> </div> <br><br> <div class="inputBox"> <!-- 修正类名大小写 --> <label for ="email" class="labelInput"><b>Email:</b></label> <input type="text" name="email" id="email" class="inputUser" required> </div> <br><br> <div class="inputBox"> <!-- 修正类名大小写 --> <label for ="telefone" class="labelInput">*<b>Telefone:</b></label> <input type="text" name="telefone" id="telefone" class="inputUser" required> </div> <p>*<b>Sexo:</b></p> <input type="radio" id="feminino" name="genero" value="feminino" required> <label for="feminino">Feminino</label> <br> <input type="radio" id="masculino" name="genero" value="masculino" required> <label for="masculino">Masculino</label> <br><br><br> <div class="inputBox"> <!-- 修正类名大小写 --> <label for ="data_nascimento">*<b>Data de Nascimento:</b></label> <input type="date" name="data_nascimento" id="data_nascimento" class="inputUser" required> </div> <br><br> <div class="inputBox"> <!-- 修正类名大小写 --> <label for ="cidade" class="labelInput">*<b>Cidade:</b></label> <input type="text" name="cidade" id="cidade" class="inputUser" required> </div> <br><br> <div class="inputBox"> <!-- 修正类名大小写 --> <label for ="estado" class="labelInput">*<b>Estado:</b></label> <input type="text" name="estado" id="estado" class="inputUser" required> </div> <br><br> <div class="inputBox"> <!-- 修正类名大小写 --> <label for ="endereco" class="labelInput"><b>Endereço:</b></label> <input type="text" name="endereco" id="endereco" class="inputUser" required> </div> <br><br> <a href="file:///home/liniquer/Formul%C3%A1rio%20/pag1.html"> <button type="button" name="submit" id="submit" value= "< Voltar">< Voltar</button> </a> <a href="file:///home/liniquer/Formul%C3%A1rio%20/pag2.html"> <button type="button" name="submit" id="submit1" value="Avançar >">Avançar ></button> </a> </fieldset> </form> </div> </body> </html>
内容的提问来源于stack exchange,提问作者Grogu
相关产品推荐
相关产品推荐

