Je souhaite positionner mon animation de chargement sur la même ligne, à l'intérieur de ma zone de saisie, à droite.
J'ai essayé :
<span>
<input id="searchbox" placeholder="Enter Catalog # " type="text" />
<img style="float:right;" id='loading' width="100px" src="http://rpg.drivethrustuff.com/shared_images/ajax-loader.gif"/>
</span>
Je reçois :
Je ne pouvais pas le faire apparaître dans ma boîte de saisie. :(
Vous pouvez également le faire en tant qu'image d'arrière-plan en CSS. Créez simplement une classe CSS et appliquez-la au moment du chargement des données. Une fois l'appel Ajax terminé, supprimez la classe CSS "en cours de chargement" de la zone de saisie de texte.
.loading {
background-color: #ffffff;
background-image: url("http://loadinggif.com/images/image-selection/3.gif");
background-size: 25px 25px;
background-position:right center;
background-repeat: no-repeat;
}
Vous pouvez le voir ici: http://jsfiddle.net/tejsoft/7pzgtevv/4/
Je suis d'accord avec @Sam en ce que cela pourrait être l'arrière-plan de l'élément et que tout ce que vous auriez à basculer serait une classe. Si vous le configurez comme:
input {
box-sizing: border-box;
border: 1px solid #ccc;
height: 30px;
padding: 10px;
}
input.loading {
background: url(http://www.xiconeditor.com/image/icons/loading.gif) no-repeat right center;
}
Et ensuite, vous pouvez basculer la classe pendant que vous passez votre appel ajax comme ceci:
$(document).on('blur', 'input', function(e) {
var $t = $(e.currentTarget);
$t.addClass('loading');
$.ajax({
url: $t.data('ajax'),
success: function(data) {
//dostuff
$t.removeClass('loading');
}
});
});
Ce serait, à mon avis, le moyen le plus simple et le plus efficace de le faire. Si vous voulez regarder plus loin, voici un violon
Placez les input
et les img
dans un div et faites en sorte que div
ressemble à une zone de texte. Je suis actuellement sur mon téléphone, donc ce n'est peut-être pas parfait, mais je pense que vous avez compris.
Essayez de jouer avec le positionnement absolu de l'élément.
violon
img {
position: absolute;
left: 112px;
top: -22px;
}
https://jsfiddle.net/kmbxawdd/2/
En outre, vous pouvez définir la position relative des éléments contenant cette option, ce qui signifie que vous pouvez appliquer directement un style à ces dimensions plutôt qu'aux documents.
Essayez ce qui suit:
Définissez position: relative;
sur l'image
top
pour décaler l'animation au point où elle se trouve directement au-dessus du champ de saisie.Ma solution: ajouter une classe à l'élément d'entrée qui définit une image de fond, puis modifier sa position avecbackground-position-xetbackground-position-y
.Loading {
background-image: url("bg.gif");
background-repeat: no-repeat ;
background-position-x: 99% ;
background-position-y: 50% ;
}
vous pouvez également utiliser des keywoords pour le positionnement
background-position-x: right;
background-position-y: center;
ou les combiner
background-position: center right;
ensuite, vous pouvez simplement ajouter ou supprimer cette classe pour afficher/masquer l'animation
il suffit d'inclure l'élément <img>
dans l'élément <input>
.Vous pouvez ensuite utiliser js pour afficher et masquer cette image à l'aide de l'attribut id.
<img class="loading" src="http://loadinggif.com/images/image-selection/3.gif" id="img-loading">
.loading {
position: absolute;
top: 206px;
right: 30px;
display: none;
}