J'essaie de donner à un div (position: fixe) la largeur de 100% (par rapport à son div parent). Mais j'ai quelques problèmes ...
EDIT: Le premier problème est résolu en utilisant inherit, mais cela ne fonctionne toujours pas. Je pense que le problème est que j'utilise plusieurs div qui prennent la largeur de 100% / hériter. Vous pouvez trouver le deuxième problème sur la mise à jour de jsfiddle: http://jsfiddle.net/4bGqF/7/
Exemple de Fox
#container {
width: 800px;
}
#fixed {
position: fixed;
width: 100%;
}
et le html
<div id="container">
<div id="fixed">Sitename</div>
<p>
blaat
</p>
</div>
Ou vous pouvez l'essayer: http://jsfiddle.net/4bGqF/
Le problème semble être que l' élément fixe prend toujours la largeur de la fenêtre / du document . Quelqu'un sait-il comment résoudre ce problème?
Je ne peux pas donner à mon élément fixe un fixe avec, car j'utilise le plugin jScrollPane. Cela dépend du contenu, qu'il y ait une barre de défilement ou non.
Merci beaucoup!
PS: Le texte des 2 divs est superposé. Ceci n'est qu'un exemple, donc cela n'a pas vraiment d'importance.
inherit
et comment utilisermax-width:inherit
avecwidth:inherit
conserve le même rapport conteneur / contenu tout en restant réactif et gérableRéponses:
Je ne sais pas quel est le deuxième problème (basé sur votre modification), mais si vous appliquez
width:inherit
à toutes les div internes, cela fonctionne: http://jsfiddle.net/4bGqF/9/Vous voudrez peut-être rechercher une solution javascript pour les navigateurs que vous devez prendre en charge et qui ne le prennent pas en charge
width:inherit
la source
width: inherit
n'est pas la première chose à laquelle j'aurais penséComme beaucoup de gens l'ont commenté, le design réactif définit très souvent la largeur par%
width:inherit
héritera de la largeur CSS PAS de la largeur calculée - ce qui signifie que le conteneur enfant héritewidth:100%
Mais, je pense, presque aussi souvent des ensembles de conception responsive
max-width
, donc:Cela a fonctionné de manière très satisfaisante pour résoudre mon problème consistant à restreindre un menu collant à la largeur d'origine du parent chaque fois qu'il était "bloqué"
Le parent et l'enfant adhéreront à la
width:100%
si la fenêtre est inférieure à la largeur maximale. De même, les deux adhéreront aumax-width:800px
lorsque la fenêtre est plus large.Il fonctionne avec mon thème déjà réactif de manière à pouvoir modifier le conteneur parent sans avoir à modifier également l'élément enfant fixe - élégant et flexible
ps: personnellement je pense que ce n'est pas grave du tout que IE6 / 7 n'utilise pas
inherit
la source
min-width: inherit
fait l'affaire.la position fixe est un peu délicate (voire impossible), mais la position: sticky fait très bien l'affaire:
voir l'exemple codepen
la source
Vous pouvez également le résoudre par jQuery:
Cela m'a été très utile car ma mise en page était réactive et la
inherit
solution ne fonctionnait pas avec moi!la source
Utilisez ce CSS:
L'élément #fixed héritera de la largeur de son parent, donc il en sera à 100%.
la source
inherit
. Je ne sais pas si cela mattesr.Le positionnement fixe est censé définir tout ce qui concerne la fenêtre, donc
position:fixed
va toujours le faire. Essayezposition:relative
plutôt d' utiliser sur le div enfant. (Je me rends compte que vous pourriez avoir besoin du positionnement fixe pour d'autres raisons, mais si c'est le cas - vous ne pouvez pas vraiment faire correspondre la largeur à son parent sans JS sansinherit
)la source
Voici un petit hack que nous avons rencontré lors de la résolution de certains problèmes de rafraîchissement sur une grande application.
Utiliser
-webkit-transform: translateZ(0);
sur le parent. Bien sûr, cela est spécifique à Chrome.http://jsfiddle.net/senica/bCQEa/
la source
Il existe une solution simple pour cela.
J'ai utilisé une position fixe pour le div parent et une largeur maximale pour le contenu.
Vous n'avez pas besoin de trop penser aux autres conteneurs car la position est fixe uniquement par rapport à la fenêtre du navigateur.
la source
Cette solution répond aux critères suivants
Pour autant que je sache, ce critère ne peut pas être rempli sans Javascript (malheureusement).
Cette solution utilise jQuery, mais pourrait également être facilement convertie en JS vanilla:
la source
Vous devez donner le même style à l'élément fixe et à son élément parent. L'un de ces exemples est créé avec des largeurs maximales et dans l'autre avec des rembourrages.
la source