J'essaie de créer un graphique horizontal à barres empilées à 100% en utilisant HTML et CSS. J'aimerais créer les barres à l'aide de fichiers DIV avec des couleurs d'arrière-plan et des largeurs de pourcentage dépendant des valeurs que je veux représenter graphiquement. Je veux aussi avoir une grille pour marquer une position arbitraire le long du graphique.
Lors de mes expérimentations, j'ai déjà obtenu l'empilement des barres horizontalement en attribuant la propriété CSS float: left
. Cependant, je voudrais éviter cela, car cela semble vraiment déranger la mise en page de manière confuse. En outre, les lignes de la grille ne semblent pas très bien fonctionner lorsque les barres sont flottantes.
Je pense que le positionnement CSS devrait être capable de gérer cela, mais je ne sais pas encore comment le faire. Je veux pouvoir spécifier la position de plusieurs éléments par rapport au coin supérieur gauche de leur conteneur. Je rencontre régulièrement ce type de problème (même en dehors de ce projet de graphique), alors j'aimerais une méthode:
Vous avez raison, le positionnement CSS est la voie à suivre. Voici un bref aperçu:
position: relative
mettra en forme un élément par rapport à lui-même. En d'autres termes, les éléments sont disposés en flux normal, puis supprimés du flux normal et compensés par les valeurs que vous avez spécifiées (haut, droite, bas, gauche). Il est important de noter que, comme il est supprimé du flux, les autres éléments qui l'entourent ne seront pas modifiés (utilisez plutôt des marges négatives si vous souhaitez ce comportement).
Cependant, vous êtes probablement intéressé par position: absolute
qui positionnera un élément par rapport à un conteneur. Par défaut, le conteneur est la fenêtre du navigateur, mais si un élément parent est défini par position: relative
ou position: absolute
, il agira en tant que parent pour le positionnement des coordonnées de ses enfants.
Démontrer:
<div id="container">
<div id="box"> </div>
</div>
#container {
position: relative;
}
#box {
position: absolute;
top: 100px;
left: 50px;
}
Dans cet exemple, le coin supérieur gauche de #box
serait 100 pixels vers le bas et 50 pixels à gauche du coin supérieur gauche de #container
. Si #container
n'avait pas défini position: relative
, les coordonnées de #box
seraient relatives au coin supérieur gauche du port de vue du navigateur.
J'espère que cela pourra aider.
Vous devez définir explicitement la position du conteneur parent avec la position du conteneur enfant. La façon typique de le faire est quelque chose comme ceci:
div.parent{
position: relative;
left: 0px; /* stick it wherever it was positioned by default */
top: 0px;
}
div.child{
position: absolute;
left: 10px;
top: 10px;
}
Je sais que je suis en retard, mais j'espère que cela aidera.
Voici les valeurs pour la propriété position.
position: statique
C'est par défaut. Cela signifie que l'élément se produira à une position normale.
#myelem {
position : static;
}
position: fixe
Cela va définir la position d'un élément par rapport à la fenêtre du navigateur (viewport). Un élément positionné fixe reste dans sa position même lorsque la page défile.
(Idéal si vous voulez un bouton de défilement vers le haut dans le coin inférieur droit de la page).
#myelem {
position : fixed;
bottom : 30px;
right : 30px;
}
position: relative
Pour placer un élément à un nouvel emplacement par rapport à sa position d'origine.
#myelem {
position : relative;
left : 30px;
top : 30px;
}
Le CSS ci-dessus déplacera l'élément #myelem 30px vers la gauche et 30px à partir du haut de son emplacement actuel.
position: absolu
Si nous voulons qu'un élément soit placé à une position exacte dans la page.
#myelem {
position : absolute;
top : 30px;
left : 300px;
}
Le CSS ci-dessus positionnera l'élément #myelem à une position située à 30px du haut et à 300px de la gauche de la page et défilera avec la page.
Et enfin...
position relative + absolue
Nous pouvons définir la propriété position d'un élément parent sur relatif, puis définir la propriété position de l'élément enfant sur absolu. De cette façon, nous pouvons positionner l'enfant par rapport au parent dans une position absolue.
#container {
position : relative;
}
#div-2 {
position : absolute;
top : 0;
right : 0;
}
Nous pouvons voir dans l'image ci-dessus que l'élément # div-2 est positionné dans le coin supérieur droit de l'élément #container.
GitHub: Vous pouvez trouver le code HTML de l'image ci-dessus ici et CSS ici .
J'espère que ceci tutorial _ aide.
Le positionnement absolu positionne un élément par rapport à son ancêtre le plus proche. Donc, mettez position: relative
sur le conteneur, puis pour les éléments enfants, top
et left
seront relatifs par rapport au coin supérieur gauche du conteneur tant que les éléments enfants auront position: absolute
. Plus d'informations sont disponibles dans la spécification CSS 2.1 .
Si vous devez d'abord positionner un élément par rapport à son élément conteneur, vous devez ajouter position: relative
à l'élément conteneur. L'élément enfant que vous souhaitez positionner par rapport au parent doit avoirposition: absolute
. La façon dont fonctionne le positionnement absolu est que cela se fait par rapport au premier élément parent relativement (ou absolument) positionné}. Dans le cas où il y a aucun relatif parent positionné, l'élément sera positionné par rapport au élément racine (directement à l'élément HTML).
Donc, si vous souhaitez positionner votre élément enfant en haut à gauche du conteneur parent, procédez comme suit:
.parent {
position: relative;
}
.child {
position: absolute;
top: 0;
left: 0;
}
Vous bénéficierez grandement de la lecture cet article . J'espère que cela t'aides!