首页 > 解决方案 > 文本在 css 动画上轻推

问题描述

在遵循本教程的同时使用 html 和 css 制作动画登录屏幕。我注意到,每当您专注于输入字段时,文本都会像这样轻推:

问题说明

如何解决这个问题?通过测试我发现它与文本居中有关。

参考这里是原始代码

CSS:

body{
  margin: 0;
  padding: 0;
  font-family: sans-serif;
  background: #34495e;
}
.box{
  width: 300px;
  padding: 40px;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%,-50%);
  background: #191919;
  text-align: center;
}
.box h1{
  color: white;
  text-transform: uppercase;
  font-weight: 500;
}
.box input[type = "text"],.box input[type = "password"]{
  border:0;
  background: none;
  display: block;
  margin: 20px auto;
  text-align: center;
  border: 2px solid #3498db;
  padding: 14px 10px;
  width: 200px;
  outline: none;
  color: white;
  border-radius: 24px;
  transition: 0.25s;
}
.box input[type = "text"]:focus,.box input[type = "password"]:focus{
  width: 280px;
  border-color: #2ecc71;
}
.box input[type = "submit"]{
  border:0;
  background: none;
  display: block;
  margin: 20px auto;
  text-align: center;
  border: 2px solid #2ecc71;
  padding: 14px 40px;
  outline: none;
  color: white;
  border-radius: 24px;
  transition: 0.25s;
  cursor: pointer;
}
.box input[type = "submit"]:hover{
  background: #2ecc71;
}

标签: htmlcssanimation

解决方案


如果你的意思是过渡期间的颤抖,那么它确实与重新计算居中有关。如果我们正在谈论向右移动,那么您只需要从最终的过渡尺寸中减去双边框宽度。

body {
  margin: 0;
  padding: 0;
  font-family: sans-serif;
  background: #34495e;
}

.box {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 300px;
  padding: 40px;
  text-align: center;
  background: #191919;
}

.box h1 {
  color: white;
  text-transform: uppercase;
  font-weight: 500;
}

.box input[type="text"],
.box input[type="password"] {
  margin: 20px auto;
  display: block;
  width: 200px;
  padding: 14px 10px;
  text-align: center;
  border: 2px solid #3498db;
  border-radius: 24px;
  outline: none;
  color: white;
  background: none;
  transition: 0.25s;
}

.box input[type="text"]:focus,
.box input[type="password"]:focus {
  width: 276px;
  border-color: #2ecc71;
}

.box input[type="submit"] {
  display: block;
  margin: 20px auto;
  padding: 14px 40px;
  text-align: center;
  border: 2px solid #2ecc71;
  border-radius: 24px;
  outline: none;
  color: white;
  background: none;
  cursor: pointer;
  transition: 0.25s;
}

.box input[type="submit"]:hover {
  background: #2ecc71;
}
<form class="box" action="index.html" method="post">
  <h1>Login</h1>
  <input type="text" name="" placeholder="Username">
  <input type="password" name="" placeholder="password">
  <input type="submit" name="" value="Login">
</form>


推荐阅读