Comment appliquer un positionnement absolu à un élément jQuery mon script jQuery actuel est et mon CSS actuel est le suivant: p> #sm {
margin:0;
padding:0;
}
#sm {
list-style:none;
top:240px;
left:300px;
width:604px;
height:286px;
display:block;
overflow:hidden;z-index: 200;
position:absolute;
}
#sm li {
float:left;
display:inline;
overflow:hidden;z-index: 200;
position:relative;
}
6 Réponses :
Utilisez la fonctionnalité .CSS code>:
devrait probablement saisir certaines informations de position avec .Position () code> ou
.Offset () code>.
Je suis nouveau à JQuery comment puis-je incorporer le fichier .position () ou .Offset () dans ce script?
Quelqu'un peut-il me dire comment incorporer cela dans mon script?
devrait ressembler à: Cela devrait s'assurer que l'élément restera à la position qu'il était auparavant. p> p>
Suis-je en train de mettre des valeurs à l'intérieur des éléments de position ()? Par exemple position (10px) .top,
Je suis également confondu sur la manière dont cela comprend dans mon code ci-dessus, où dois-je le mettre et qui est $ elem. et qui est #someelement_id
Stephanie, c'est juste pour clarifier ce que Jandy a démontré, avec un peu de ma propre réponse. Mais, toujours relativement nouveau à JQuery moi-même, je peux comprendre votre confusion. Prenons l'écart de Code de Jandy et répondons à vos commentaires.
Je suis également confondu sur la manière dont cela se comporte dans mon code ci-dessus, où est-ce que je le placé et qui est $ elem. et qui est #someelement_id p> BlockQuote>
Dans le code de Jandy, l'élève $ est l'élément que vous essayez de positionner. Il utilise
#someelement_id code> juste pour faire son exemple générique. Si spécifique à votre code, son p>
var $ elem = $ ('# quelqueelement_id'); code> p>
deviendrait p>
< Code> var $ elem = $ ('# sm'); code> p>
dans votre code. Tout ce qu'il fait, il fait stocker l'élément (objet) référence à la variable
$ elem code>. Rien d'aimer là-bas, je ne pense pas. Je ne sais pas pourquoi il achète
$ code> sur le nom de la variable ...? Je crois que
var elem = $ ('# sm'); code> fonctionnerait la même chose, à moins que je ne manque quelque chose. Donc, cela vous obtient simplement l'élément que vous voulez travailler. P>
am je mettons des valeurs à l'intérieur des éléments de position ()? Par exemple, position (10px) .top p> BlockQuote>
Non. Pas si votre objectif est de garder l'élément absolument positionné dans sa position actuelle. Si nous prenons séparé cette ligne de son code,
elem.position () code> retournera un objet contenant les propriétés
TOP code> et
gauche code>. Vous pouvez lire sur la méthode de position ici ici position de l'API de jQuery (Découvrez Décalage de l'API JQuery également car il fournit des informations différentes et vous permet de fournir des coordonnées pour une nouvelle position pour l'élément). De plus que je puisse dire, alors que Jandy dit dans sa réponse, son code fixera la position absolue de l'élément à son emplacement actuel, le maintenant donc en place. P>
Je ne pense pas que ce serait ce que vous voulez si vous souhaitez réellement déplacer un élément de son endroit actuel à un autre endroit. Pour cela, vous définissez le haut et laissé comme répondit par Matt Asbury, ou vous pouvez utiliser une combinaison des deux réponses si vous souhaitez déplacer l'élément vers une nouvelle position par rapport à son emplacement actuel. Par exemple, p>
xxx pré>
On dirait que vous le faites correctement, mais vous avez oublié de mettre votre script à l'intérieur du Ceci assure Votre script n'est pas exécuté tant que l'ensemble du DOM est chargé dans le navigateur. Sinon, il essaiera d'appliquer le CSS avant de connaître l'élément Je suggérerais également de supprimer le $ (document) .Ready () code>.
#sm code>. Puisque tout ce que vous faites est de créer un style, y a-t-il une raison pour laquelle vous ne pouvez pas simplement ajouter ceci à votre fichier CSS à la place? P>
surcharger code> de votre étiquette
slidemenu.build () code> dans le
$ (document) .Readady () code> fonction, ainsi que . p> p>
Je vois, je vois que vous avez édité cela. Cette réponse s'applique à la jQuery que vous avez modifiée dans votre question.
Si vous utilisez p>
Position: Absolute; P> blockQuote>
Votre conteneur absolu augmentera lorsque vous faites défiler la page. P>
essayer avec p>
Position: fixe; p> blockQuote>
C'est la meilleure solution. Et votre conteneur de positionnement sera visible même si vous faites défiler la page P>
Voici une manière générique d'absolutisation tout élément:
function absolutize(selector_expression) { element = jQuery(selector_expression).eq(0); if (element.css('position') == 'absolute') { return element; } element.css({ position: 'absolute', top: element.offset().top + 'px', left: element.offset().left + 'px', width: element.width() + 'px', height: element.height() + 'px' }); return element; }
Pourquoi vous devez réserver votre élément avec jQuery? Pourquoi pas CSS?
#sm {position: fixe; TOP: 10PX; à gauche: 10px; } code>