J'ai 3 niveaux de div
:
- (En vert ci-dessous) Un niveau supérieur
div
avecoverflow: hidden
. C'est parce que je veux que du contenu (non montré ici) à l'intérieur de cette boîte soit rogné s'il dépasse la taille de la boîte. - (En rouge ci-dessous) À l'intérieur, j'ai
div
avecposition: relative
. La seule utilisation pour cela est pour le niveau suivant. - (En bleu ci-dessous) Enfin un
div
je sors du flux avecposition: absolute
mais que je veux positionner par rapport au rougediv
(pas à la page).
J'aimerais que la boîte bleue soit retirée du flux et s'étende au-delà de la boîte verte, mais soit positionnée par rapport à la boîte rouge comme dans:
Cependant, avec le code ci-dessous, j'obtiens:
Et en supprimant le position: relative
sur la boîte rouge, maintenant la boîte bleue est autorisée à sortir de la boîte verte, mais n'est plus positionnée par rapport à la boîte rouge:
Existe-t-il un moyen de:
- Gardez le
overflow: hidden
sur la boîte verte. - La boîte bleue s'est-elle étendue au-delà de la boîte verte et est-elle positionnée par rapport à la boîte rouge?
La source complète:
#d1 {
overflow: hidden;
background: #efe;
padding: 5px;
width: 125px;
}
#d2 {
position: relative;
background: #fee;
padding: 2px;
width: 100px;
height: 100px;
}
#d3 {
position: absolute;
top: 10px;
background: #eef;
padding: 2px;
width: 75px;
height: 150px;
}
<br/><br/><br/>
<div id="d1" >
<div id="d2" >
<div id="d3"></div>
</div>
</div>
css
overflow
css-position
avernet
la source
la source
position: fixed
ignorera leoverflow:hidden
de tout élément contenant.Réponses:
Une astuce qui fonctionne est de positionner la case n ° 2 avec
position: absolute
au lieu deposition: relative
. Nous mettons généralement unposition: relative
sur une boîte extérieure (ici la boîte # 2) lorsque nous voulons qu'une boîte intérieure (ici la boîte # 3)position: absolute
soit positionnée par rapport à la boîte extérieure. Mais rappelez-vous: pour que la case n ° 3 soit positionnée par rapport à la case n ° 2, la case n ° 2 doit juste être positionnée. Avec ce changement, nous obtenons:Et voici le code complet avec ce changement:
la source
position: static
et cela a mieux fonctionné pour moiposition: static
case n ° 2 au lieu deposition: absolute
.absolute
ne coupe pas maisrelative
fait?Il n'y a pas de solution magique pour afficher quelque chose en dehors d'un conteneur caché de débordement.
Un effet similaire peut être obtenu en ayant un div positionné absolu qui correspond à la taille de son parent en le positionnant à l'intérieur de votre conteneur relatif actuel (le div que vous ne souhaitez pas couper doit être en dehors de ce div):
N'oubliez pas que si vous n'avez qu'à découper le contenu sur l'axe des x (ce qui semble être votre cas, car vous n'avez défini que la largeur du div), vous pouvez utiliser
overflow-x: hidden
.la source
Je ne vois pas vraiment de moyen de le faire tel quel. Je pense que vous devrez peut-être supprimer le
overflow:hidden
de div # 1 et ajouter un autre div dans div # 1 (c'est-à-dire en tant que frère de div # 2) pour contenir votre «contenu» non spécifié et ajouter leoverflow:hidden
à la place. Je ne pense pas que le débordement puisse être (ou devrait pouvoir être) surchargé.la source
S'il y a un autre contenu qui n'est pas affiché à l'intérieur de la div externe (la boîte verte), pourquoi ne pas avoir ce contenu enveloppé dans une autre div, appelons-le
"content"
. Avoir le débordement caché sur ce nouveau div interne, mais garder le débordement visible sur la boîte verte.Le seul hic, c'est que vous devrez ensuite déconner pour vous assurer que le contenu div n'interfère pas avec le positionnement de la boîte rouge, mais il semble que vous devriez être en mesure de résoudre ce problème avec peu de maux de tête.
la source