CSS position:fixed positionné à l'intérieur d'un élément
J'ai positionné div dont le contenu peut être trop long donc les barres de défilement apparaissent (overflow:auto
set). Il fonctionne comme une boîte de dialogue dans une application ajax. Je tiens à corriger un bouton de fermeture sur le coin en haut à droite ainsi, lorsque l'utilisateur fait défiler la div ne pas défilement.
J'ai essayé avec position:fixed; right:0; top:0
mais il a placé le bouton en haut à droite de la page, pas dans la div (dans firefox).
Est-il possible de ce faire, l'emplacement des boutons à l'aide de CSS sans le piratage avec le offsetWidth/Hauteur en js sur chaque événement scroll?
ps: le div de la hauteur et la largeur n'est pas une valeur fixe, il dépend de la taille et de la fenêtre du navigateur de la taille. L'utilisateur peut également redimensionner si il veulent.
- Il pourrait être utile d'envisager d'utiliser un div avec une position fixe de l'image de fond pour le bouton.
- semble être une bonne idée, mais comment voulez-vous cliquez sur le bouton alors?
- Aussi longtemps que la hauteur et la largeur de la div sont définies pour correspondre à celle de l'image d'arrière-plan, il doit être cliquable. Pour la gestion de la cliquez sur, cela dépend si vous êtes à l'aide de HTML ou JS. Si c'est juste du HTML, vous pouvez envelopper le div dans un
a
étiquette avec unhref
(ou même simplement utiliser una
balise au lieu d'undiv
et le définir commedisplay: inline-block
). Si c'est du JS, vous pouvez écouter un clic sur lediv
. Ai-je bien compris votre question correctement? - oui, je crois que vous avez fait merci, mais la hauteur et la largeur sera "réglé pour correspondre à" utilisation de JS aussi, je suppose? comme dans le cas des OP question de "la div, la hauteur et la largeur n'est pas une valeur fixe", c'est pourquoi je me demandais
- Je vois. J'ai raté cette partie. Dans ce cas, je pense que vous avez raison, certains JS aurait pour gérer la taille de la div.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
position:fixed;
, mais sansleft
ettop
. Ensuite, vous le poussez vers la droite à l'aide demargin-left
, pour la placer dans la bonne position que vous souhaitez.Vérifier une démo ici: http://jsbin.com/icili5
fixed
élément de cette façon, lorsquetop
etleft
ne sont pas spécifiés? stackoverflow.com/questions/8712047/...La sélection de la solution semble avoir mal compris le problème.
L'astuce consiste à utiliser ni absolue ni correction du positionnement. Au lieu de cela, avoir le bouton fermer de l'extérieur de la div avec ses de la position relative des et un flotteur gauche de sorte qu'il est immédiatement à droite de la div. Ensuite, définissez un négatif de la marge de gauche, et une positive z index de sorte qu'il apparaît au-dessus de la div.
Voici un exemple:
Position:fixed
donne une position absolue concernant la fenêtre du NAVIGATEUR. alors bien sûr, il y va.Tout
position:absolute
se réfère à l'élément parent, de sorte que si vous placez votre<div>
bouton à l'intérieur de la <div>
du récipient, il doit placer l'endroit où vous signifiait qu'il soit.Quelque chose comme
EDIT: merci à @Sotiris, qui a un point, une solution peut être réalisé à l'aide d'un position:fixed et une marge à gauche. Comme ceci: http://jsfiddle.net/NeK4k/
Je sais que c'est un vieux post, mais j'ai eu la même question, mais n'ai pas trouver de réponse que l'ensemble de l'élément fixe par rapport à un parent
div
. La barre de défilement sur medium.com est un grand pur CSS solution pour mettre quelque chose deposition: fixed;
par rapport à un élément parent au lieu de la fenêtre d'affichage (un peu*). Il est réalisé en plaçant le parentdiv
àposition: relative;
et d'avoir un bouton wrapper avecposition: absolute;
et le bouton de cours estposition: fixed;
comme suit:exemple de travail
*Étant donné que les éléments fixes, ne pas faire défiler la page de la position verticale sera toujours par rapport à la fenêtre d'affichage, mais la position horizontale par rapport au parent avec cette solution.
Semble, css transformations peuvent être utilisés
"‘transformer’ propriété établit un nouveau système de coordonnées local à l'élément",
mais ... ce n'est pas cross-browser, semble seulement à l'Opéra fonctionne correctement
Essayer position:collant sur la div parent de l'élément que vous voulez être fixe.
J'ai réussi à avoir un élément à une position fixe (wiewport), mais par rapport à la largeur de son parent.
J'ai juste eu à envelopper mon élément fixe et de donner à la mère une largeur de 100%. Dans le même temps, le enveloppés élément fixe et la mère sont dans un div dont la largeur en fonction des changements de la page, contenant le contenu du site web. Avec cette approche, je peux avoir l'élément fixe toujours à la même distance du contenu, en fonction de la largeur de celui-ci. Dans mon cas, c'était un "haut" du bouton, montrant toujours à 15px à partir du bas et 15px droit de le contenu.
https://codepen.io/rafaqf/pen/MNqWKB
Si votre bouton de fermeture va être du texte, cela fonctionne très bien pour moi:
Alors votre
HTML
peut-être simplement: