и если ввести значение и сфокусировать ввод, он все равно останется сверху, но если ввод пуст и пользователь щелкнет за пределами ввода, метка снова вернется в положение
То есть вы хотите, чтобы ярлык снова опустился, если пользователь не заполнил поле?И если они что-то заполнили, то это должно остаться выше?
Единственный способ (на полпути) достичь этого только с помощью CSS, это сделать поле ввода required
, а затем использовать :valid
псевдокласс:
<html>
<head>
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js"></script>
</head>
<style>
.form{width:600px; margin:auto; }
.input-conatiner{ width:400px; margin:60px auto ; text-align:center; height:35px ;width:320px; position:relative; }
.input-conatiner input{position:absolute; background:none; top:0; left:0; height:100%; width:100%; }
.input-conatiner label{position:absolute; top:0; left:0; z-index:9; transition:300ms ;}
.input-conatiner:hover input + label,
.input-conatiner input:valid + label {color:red; transform:translatey(-150%);}
</style>
<body>
<form>
<div class="input-conatiner">
<input type="text" required/>
<label>HI there</label>
</div>
</form>
</body>
</html>
Если вам нужно что-то большее, вам, возможно, придется использовать JavaScript.