Je recherche un code CSS qui déplace le texte de substitution au-dessus de l'entrée sélectionnée. J'ai trouvé ce code ici . Ce code est parfait, mais ma balise d’entrée est insérée dans <span>
et, pour cette raison, le sélecteur de frères et sœurs ne fonctionne pas. Des idées comment éditer ce css?
<div>
<span class='blocking-span'>
<input type="text" class="inputText" />
</span>
<span class="floating-label">Your email address</span>
</div>
Vous pouvez utiliser le pseudo-sélecteur CSS :placeholder-shown
dans ce cas pour détecter le moment propice pour déplacer un faux paramètre fictif. Voir exemple ci-dessous:
label {
margin:20px 0;
position:relative;
display:inline-block;
}
span {
padding:10px;
pointer-events: none;
position:absolute;
left:0;
top:0;
transition: 0.2s;
transition-timing-function: ease;
transition-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);
opacity:0.5;
}
input {
padding:10px;
}
input:focus + span, input:not(:placeholder-shown) + span {
opacity:1;
transform: scale(0.75) translateY(-100%) translateX(-30px);
}
/* For IE Browsers*/
input:focus + span, input:not(:-ms-input-placeholder) + span {
opacity:1;
transform: scale(0.75) translateY(-100%) translateX(-30px);
}
<label>
<input placeholder=" ">
<span>Placeholder Text</span>
</label>
Avec les liens CSS donnés, etc., déplacez simplement le floating-label
dans le blocking-span
.
En utilisant position: relative
sur la div
, le floating-label
sera toujours repositionné comme s'il se trouvait en dehors du blocking-span
div {
position: relative; /* make label relate to div */
padding-top: 10px; /* make space for label */
}
.inputText {
font-size: 14px;
width: 200px;
height: 25px;
}
.floating-label {
position: absolute;
pointer-events: none;
left: 15px;
top: 18px;
transition: 0.2s ease all;
}
input:focus ~ .floating-label,
input:not(:focus):valid ~ .floating-label {
top: -6px;
}
<div>
<span class='blocking-span'>
<input type="text" class="inputText" required/>
<span class="floating-label">Your email address</span>
</span>
</div>
Si vous modifiez la structure html
, votre exemple de référence est work, mais si vous ne souhaitez pas modifier la structure html
, vous devez écrire un peu de jQuery. Vous pouvez vérifier cela.
$(function(){
$('.blocking-span input').on('focus', function(){
$(this).parents('.parents-Elm').addClass('foucs-content'); // When focus the input area
});
$(document).mouseup(function(e){
if($(e.target).parents('.blocking-span input').length==0 && !$(e.target).is('.blocking-span input')){
$('.parents-Elm').removeClass('foucs-content');
}
});
});
div{
position: relative;
}
.blocking-span{
display: block;
}
.blocking-span input{
border: 1px solid #eaeaea;
height: 80px;
padding-top: 30px;
padding-left: 20px;
padding-right: 20px;
width: 100%;
}
.floating-label{
display: inline-block;
font-size: 15px;
left: 20px;
line-height: 20px;
position: absolute;
top: -webkit-calc(50% - 10px);
top: -moz-calc(50% - 10px);
top: calc(50% - 10px);
transition: top 0.3s ease-in-out 0s;
}
.foucs-content .floating-label{
top: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="parents-Elm">
<span class='blocking-span'>
<input type="text" class="inputText" />
</span>
<span class="floating-label">Your email address</span>
</div>
J'ai utilisé le formulaire de contact 7 et il m'a donné cette durée supplémentaire. Mais j'ai déjà trouvé une solution pour bloquer cette extension supplémentaire. Il existe un filtre qui peut supprimer ce formulaire de contact 7 span. Voici le lien .