108 votes

position:relative laisse un espace vide

Le code est ici : http://lasers.org.ru/vs/example.html

Comment supprimer un espace vide sous le bloc principal (#page) ?

0 votes

Vous voulez dire le remplissage du fond, ou pour avoir l'ensemble centré verticalement ?

0 votes

Voulez-vous dire l'espace entre le texte dans le div #page et la bordure ? Sinon, je ne suis pas sûr de l'espace dont vous parlez.

0 votes

@Jeremy Battle Je n'arrive pas non plus à le comprendre. Guffa semble avoir .

224voto

plang Points 1783

Une autre astuce qui a bien fonctionné pour moi est d'utiliser une marge inférieure négative dans l'élément relatif que vous avez déplacé. Il n'est pas nécessaire d'utiliser le positionnement absolu.

Quelque chose comme :

position: relative;
left: 100px
top: -200px;
margin-bottom: -200px;

Similaire (sinon identique) à la solution que je vois maintenant, de vert.

35 votes

Une réponse excellente et simple. Et la preuve parfaite que le HTML/CSS est un phénomène de foire.

1 votes

@plang, ça ne semble pas fonctionner. Voir jsfiddle.net/u7sq8rL7/1 . Le fond vert s'étend au-delà du dernier élément.

1 votes

@Pacerier N'utilisez pas margin-bottom. Cela ne fonctionne évidemment pas (pensez-y) ; vous avez besoin de margin-top.

39voto

Guffa Points 308133

Dans ce cas, n'utilisez pas le positionnement relatif. L'élément occupe toujours l'espace où il se trouvait à l'origine lorsqu'il est positionné de manière relative, et vous ne pouvez pas vous en débarrasser. Vous pouvez par exemple utiliser le positionnement absolu à la place, ou faire en sorte que les éléments flottent l'un à côté de l'autre.

J'ai un peu joué avec la mise en page, et je suggère que vous changiez ces trois règles en :

#layout { width: 636px; margin: 0 auto; }
#menu { position: absolute; width: 160px; margin-left: 160px; }
#page { width: 600px; padding: 8px 16px; border: 2px solid #404241; }

33 votes

"et tu ne peux pas te débarrasser de ça." - Vous pouvez. Il suffit d'utiliser une marge négative, comme dans la réponse de Plang.

5 votes

@MichaK : Non, cela signifie seulement que vous chevauchez l'espace vide avec un autre élément, pas que vous vous débarrassez de l'espace vide. Vous pouvez uniquement utiliser des marges négatives pour recouvrir l'espace vide d'un positionnement relatif avec autant que la taille de l'élément.

0 votes

@MichaK : Le downvoting de cette réponse et d'autres réponses totalement sans rapport n'aide pas, vous ne pouvez toujours pas vous débarrasser de l'espace causé par le positionnement relatif.

2voto

Salman A Points 60620

Essayez cette règle :

#page {
  border: 2px solid #404241;
  bottom: 0;
  padding: 8px 16px;
  position: absolute;
  top: 70px;
  width: 600px;
}

J'ai changé la position en absolue, ce qui vous permet d'utiliser la fonction bottom: 0 propriété.

1voto

alex Points 186293
#page {
  padding-bottom: 0;
}

no bottom padding

0 votes

C'est la bonne réponse, mais je dirais qu'il est probablement préférable d'utiliser AVEC le remplissage, car il est plus facile à lire et plus standard sur le Web d'avoir un certain remplissage.

0 votes

@Jeremy Battle Sans aucun doute, le rembourrage est bien meilleur.

0 votes

@Kir Vous pouvez en fait simplement modifier votre style actuel en padding : 8px 16px 0px ; pour éviter d'avoir une ligne supplémentaire dans votre CSS.

0voto

UkrVolk11 Points 16

J'ai eu le même problème. La marge négative ne fonctionnait pas pour moi, car elle laissait une énorme zone blanche à l'endroit où elle se trouvait. J'ai résolu ce problème dans mon cas en saisissant manuellement la hauteur.

.maincontent {
    height: 675px;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X