简体   繁体   中英

Placeholder overlapping on input focus

My input is overlapping with the text in its place holder after text is already in its spot.

顶部是我要修复的内容,底部是我希望取消选择输入字段后的外观。

My HTML For this Form:

<form action="./includes/login.inc.php" method="post">
    <div class="group">
        <input type="text" name="emailuid"/><span class="highlight"></span><span class="bar"></span>
        <label>Email</label>
    </div>
    <div class="group">
        <input type="password" name="pwduid"/><span class="highlight"></span><span class="bar"></span>
        <label>Password</label>
    </div>
    <div class="btn-box">
        <button class="btn btn-submit" type="submit" name="login-submit">Sign in</button>
    </div>
</form>

And here is my style sheet, just for this form and nothing else:

form {
  width: 320px;
  margin: 45px auto;

}
form h1 {
  font-size: 3em;
  font-weight: 300;
  text-align: center;
  color: #2196F3;
}
form h5 {
  text-align: center;
  text-transform: uppercase;
  color: #c6c6c6;
}
form hr.sep {
  background: #2196F3;
  box-shadow: none;
  border: none;
  height: 2px;
  width: 25%;
  margin: 0px auto 45px auto;
}
form .emoji {
  font-size: 1.2em;
}

.group {
  position: relative;
  margin: 45px 0;
}

textarea {
  resize: none;
}

input,
textarea {
  background: none;
  color: #4F4F4F;
  font-size: 18px;
  padding: 10px 10px 10px 5px;
  display: block;
  width: 320px;
  border: none;
  border-radius: 0;
  border-bottom: 1px solid #4F4F4F;
}
input:focus,
textarea:focus {
  outline: none;
}
input:focus ~ label,
textarea:focus ~ label {
  top: -14px;
  font-size: 12px;
  color: #FF3B3F;
}
input:focus ~ .bar:before,
textarea:focus ~ .bar:before {
  width: 335px;
}

input[type="password"] {
  letter-spacing: 0.3em;
}

label {
  color: #4F4F4F;
  font-size: 16px;
  font-weight: normal;
  position: absolute;
  pointer-events: none;
  left: 5px;
  top: 10px;
  -webkit-transition: 300ms ease all;
  transition: 300ms ease all;
}

.bar {
  position: relative;
  display: block;
  width: 320px;
}
.bar:before {
  content: '';
  height: 2px;
  width: 0;
  bottom: 0px;
  position: absolute;
  background: #FF3B3F;
  -webkit-transition: 300ms ease all;
  transition: 300ms ease all;
  left: 0%;
}

.btn {
  background: #fff;
  color: #959595;
  border: none;
  padding: 10px 20px;
  border-radius: 3px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-decoration: none;
  outline: none;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
  -webkit-transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
  transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}
.btn:hover {
  color: #752021;
  box-shadow: 0 7px 14px rgba(0, 0, 0, 0.18), 0 5px 5px rgba(0, 0, 0, 0.12);
}
.btn.btn-link {
  background: #FF3B3F;
  color: #d3eafd;
}
.btn.btn-link:hover {
  background: #0d8aee;
  color: #deeffd;
}
.btn.btn-submit {
  background: #FF3B3F;
  color: white;
}
.btn.btn-submit:hover {
  background: #752021;
  color: white;
}
.btn.btn-cancel {
  background: #eee;
}
.btn.btn-cancel:hover {
  background: #e1e1e1;
  color: #8b8b8b;
}

.btn-box {
  text-align: center;
  margin: 50px 0;
}

To be clear I want it to look like the bottom "Password" field when you deselect from the box. The text when its on top of the input moves back down to the bottom and overlaps it when you are deselecting.

Thanks for any help.

You can achieve that with jQuery .focus() and . blur() functions. First of all create a class with the focused style of your label. On input focus check if it has some value. If it has the focused class remains, otherwise remove it. Check the code bellow:

css

label.focused {
    top: -14px;
  font-size: 12px;
  color: #FF3B3F;
}

jQuery

$('input').focus(function() {
  $(this).siblings('label').addClass('focused');
}).blur(function () {
  if($(this).val().length == 0) {
    $(this).siblings('label').removeClass('focused');
  }
});

Full code

 $('input').focus(function() { $(this).siblings('label').addClass('focused'); }).blur(function () { if($(this).val().length == 0) { $(this).siblings('label').removeClass('focused'); } }); 
 form { width: 320px; margin: 45px auto; } form h1 { font-size: 3em; font-weight: 300; text-align: center; color: #2196F3; } form h5 { text-align: center; text-transform: uppercase; color: #c6c6c6; } form hr.sep { background: #2196F3; box-shadow: none; border: none; height: 2px; width: 25%; margin: 0px auto 45px auto; } form .emoji { font-size: 1.2em; } .group { position: relative; margin: 45px 0; } textarea { resize: none; } input, textarea { background: none; color: #4F4F4F; font-size: 18px; padding: 10px 10px 10px 5px; display: block; width: 320px; border: none; border-radius: 0; border-bottom: 1px solid #4F4F4F; } input:focus, textarea:focus { outline: none; } /*input:focus ~ label, textarea:focus ~ label { top: -14px; font-size: 12px; color: #FF3B3F; }*/ label.focused { top: -14px; font-size: 12px; color: #FF3B3F; } input:focus ~ .bar:before, textarea:focus ~ .bar:before { width: 335px; } input[type="password"] { letter-spacing: 0.3em; } label { color: #4F4F4F; font-size: 16px; font-weight: normal; position: absolute; pointer-events: none; left: 5px; top: 10px; -webkit-transition: 300ms ease all; transition: 300ms ease all; } .bar { position: relative; display: block; width: 320px; } .bar:before { content: ''; height: 2px; width: 0; bottom: 0px; position: absolute; background: #FF3B3F; -webkit-transition: 300ms ease all; transition: 300ms ease all; left: 0%; } .btn { background: #fff; color: #959595; border: none; padding: 10px 20px; border-radius: 3px; letter-spacing: 0.06em; text-transform: uppercase; text-decoration: none; outline: none; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); -webkit-transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); } .btn:hover { color: #752021; box-shadow: 0 7px 14px rgba(0, 0, 0, 0.18), 0 5px 5px rgba(0, 0, 0, 0.12); } .btn.btn-link { background: #FF3B3F; color: #d3eafd; } .btn.btn-link:hover { background: #0d8aee; color: #deeffd; } .btn.btn-submit { background: #FF3B3F; color: white; } .btn.btn-submit:hover { background: #752021; color: white; } .btn.btn-cancel { background: #eee; } .btn.btn-cancel:hover { background: #e1e1e1; color: #8b8b8b; } .btn-box { text-align: center; margin: 50px 0; } 
 <form action="./includes/login.inc.php" method="post"> <div class="group"> <input type="text" name="emailuid"/><span class="highlight"></span><span class="bar"></span> <label>Email</label> </div> <div class="group"> <input type="password" name="pwduid"/><span class="highlight"></span><span class="bar"></span> <label>Password</label> </div> <div class="btn-box"> <button class="btn btn-submit" type="submit" name="login-submit">Sign in</button> </div> </form> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM