Div avec la barre de défilement à l'intérieur de div avec position:fixed
J'ai un div avec position:fixed, c'est mon div conteneur pour certains menus. Je l'ai mis de top:0px, bottom:0px toujours remplir la fenêtre d'affichage. À l'intérieur de div que je veux avoir 2 autres divs, l'un en bas qui contient beaucoup de lignes et a overflow:auto. Je m'attends à ce qu'elle serait contenue dans le div conteneur, mais si il y a trop de lignes simplement, il se développe en dehors de l'fixe div. Ci-dessous mon code et une capture d'écran de préciser:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>MyPlan</title>
<meta name="X-UA-COMPATIBLE" value="IE=8" />
<style type="text/css">
#outerfixed { position:fixed; width:200px; background-color:blue; padding:5px; top:0px; bottom:30px;}
#innerstatic1 { width:100%; background-color:yellow; height:100px;}
#innerstatic2 { overflow:auto; background-color:red; width:100%;}
</style>
</head>
<body>
<div id="outerfixed">
<h3>OUTERFIXED</h3>
<div id="innerstatic1">
<h3>INNERSTATIC1</h3>
</div>
<div id="innerstatic2">
<h3>INNERSTATIC2</h3>
line<br />
...lots of lines
line<br />
</div>
</div>
</body>
</html>
Est-il de toute façon pour moi de faire cela? Encore une fois, je veux #innerstatic2 être correctement contenues dans #outerfixed et obtenir des barres de défilement si il est plus grand que l'espace dont il dispose à l'intérieur de #outerfixed.
Je sais qu'il y a quelques possibilités de hack en en fixant #innerstatic2, mais je voudrais vraiment qu'il soit au sein de l'écoulement à l'intérieur de #outerfixed si possible, de sorte que si je déplace #outerfixed quelque part, à l'intérieur de l'élément viendrait avec elle.
EDIT: je sais que je peux le mettre overflow:auto sur le #outerfixed et obtenir une barre de défilement sur l'ensemble de la chose, mais j'ai particulièrement envie d'une barre de défilement juste sur #innerstatic2, c'est une grille et je veux faire défiler juste la grille.
Quelqu'un? Possible?
Vous devez vous connecter pour publier un commentaire.
Il y a une solution en deux étapes pour cela, mais il arrive à quelque chose d'un coût:
overflow-y: scroll;
à la css pour#innerstatic2
.height
(oumax-height
) pour#innerstatic2
, sinon il ne de débordement, il va tout simplement continuer à augmenter sa hauteur (la valeur par défaut pour undiv
estheight: auto
).Édité parce que je ne peux pas arrêter de moi-même, parfois.
J'ai posté une démo sur jsbin de montrer un jQuery mise en œuvre de ce qui va calculer un
height
pour vous (ce n'est pas généralisé, il travaille uniquement avec votre html en cours).overflow: hidden
à la css pour#outerfixed
, mais cela ne veut pas regard particulièrement jolie, malheureusement.Je l'ai résolu en donnant la position absolue de l'ul et de la hauteur de 100%
découvrez ce VIOLON
ul
(il se complique pas montrer la dernièreli
exemple)overflow-y:scroll;
Et d'ajouter ce pour les appareils iOS. Il donne un meilleur défilement de l'utilisation du tactile. L'overflow-y doit être de défilement! pour sécuriser les raisons. auto coutume de travail pour certaines personnes. ou, au moins, c'est ce que j'ai entendu.
-webkit-overflow-scrolling: touch;
vous devez définir la hauteur pour outerfixed et max-height pour innerstatic2
voir ce qui pourrait être utile DÉMO
C'est le div conteneur qui doit être avec le overflow:auto attribut. Dans ce cas, le #outerfixed div
La seule manière de la figure, est de innerstatic2 de position absolue (de sorte que vous pouvez utiliser le haut et le bas de la taille par rapport à outerfixed), puis à l'intérieur de innerstatic2 créer un autre div où vous mettez votre texte. Ensuite vous donner innerstatic2 le "overflow: auto;" indication. L'inconvénient de cette méthode, qui innerstatic2 ne se déplace pas vers le bas, lorsque innerstatic1 grandit, car c'est la position absolument. Si elle a besoin de se déplacer, elle doit être "position: relative", mais ensuite, vous devez définir une hauteur fixe pour elle. Donc de toute façon vous avez à régler pour un compromis.
Une fois tous les navigateurs supportent CSS3, comme le calcul de soutien, il y aura de meilleures options pour ce faire, sans ces inconvénients.
Pas idéal, mais cela devrait vous obtenez 90% de la manière