J'essaie de créer un graphique à barres horizontales empilées à 100% en utilisant HTML et CSS. Je voudrais créer les barres en utilisant DIVs
des couleurs d'arrière-plan et des largeurs de pourcentage en fonction des valeurs que je veux tracer. Je veux également avoir une grille pour marquer une position arbitraire le long du graphique.
Dans mon expérimentation, j'ai déjà fait empiler les barres horizontalement en attribuant la propriété CSS float: left
. Cependant, j'aimerais éviter cela, car cela semble vraiment déranger la mise en page de manière déroutante. De plus, les lignes de la grille ne semblent pas très bien fonctionner lorsque les barres flottent.
Je pense que le positionnement CSS devrait être capable de gérer cela, mais je ne sais pas encore comment le faire. Je souhaite 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 genre de problème (même en dehors de ce projet de graphique particulier), donc j'aimerais une méthode qui soit:
- Cross-browser (idéalement sans trop de hacks de navigateur)
- Fonctionne en mode Quirks
- Aussi clair / propre que possible, pour faciliter les personnalisations
- Fait sans JavaScript si possible.
la source
Réponses:
Vous avez raison, le positionnement CSS est la voie à suivre. Voici un bref aperçu:
position: relative
mettra en page un élément par rapport à lui-même. En d'autres termes, les éléments sont disposés en flux normal, puis ils sont supprimés du flux normal et décalé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 autour de lui ne changeront pas avec lui (utilisez plutôt des marges négatives si vous voulez ce comportement).Cependant, vous êtes probablement intéressé par
position: absolute
le positionnement d'un élément par rapport à un conteneur. Par défaut, le conteneur est la fenêtre du navigateur, mais si un élément parent possèdeposition: relative
ou estposition: absolute
défini dessus, il agira en tant que parent pour les coordonnées de positionnement de ses enfants.Démontrer:
Dans cet exemple, le coin supérieur gauche de
#box
serait 100 px vers le bas et 50 px à gauche du coin supérieur gauche de#container
. Si elle#container
n'a pas étéposition: relative
définie, les coordonnées de#box
seraient relatives au coin supérieur gauche du port d'affichage du navigateur.la source
Vous devez définir explicitement la position du conteneur parent ainsi que la position du conteneur enfant. La façon typique de faire cela est quelque chose comme ceci:
la source
Je sais que je suis en retard mais j'espère que cela aidera.
Voici les valeurs de la propriété position.
position: statique
C'est par défaut. Cela signifie que l'élément se produira à une position qu'il aurait normalement.
position: fixe
Cela définira la position d'un élément par rapport à la fenêtre du navigateur (fenêtre). Un élément positionné fixe restera 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).
position: relative
Pour placer un élément à un nouvel emplacement par rapport à sa position d'origine.
Le CSS ci-dessus déplacera l'élément #myelem 30px vers la gauche et 30px du haut de son emplacement réel.
position: absolue
Si nous voulons qu'un élément soit placé à une position exacte dans la page.
Le CSS ci-dessus positionnera l'élément #myelem à une position 30px du haut et 300px de la gauche dans la page et il défilera avec la page.
Et enfin...
position relative + absolue
Nous pouvons définir la propriété position d'un élément parent sur relative , puis définir la propriété position de l'élément enfant sur absolue . De cette façon, nous pouvons positionner l'enfant par rapport au parent à une position absolue.
Nous pouvons voir dans l'image ci-dessus que l' élément # div-2 est positionné dans le coin supérieur droit à l'intérieur de l' élément #container .
GitHub: Vous pouvez trouver le HTML de l'image ci-dessus ici et CSS ici .
J'espère que ce tutoriel vous aidera.
la source
Le positionnement absolu positionne un élément par rapport à son ancêtre positionné le plus proche. Donc, mettez
position: relative
le conteneur, puis pour les éléments enfants,top
etleft
sera relatif à la partie supérieure gauche du conteneur tant que les éléments enfants ontposition: absolute
. Plus d'informations sont disponibles dans la spécification CSS 2.1 .la source
Si vous devez d'abord positionner un élément par rapport à son élément
position: relative
conteneur, vous devez d'abord l'ajouter à l'élément conteneur . L'élément enfant que vous souhaitez positionner par rapport au parent doit avoirposition: absolute
. La façon dont le positionnement absolu fonctionne est qu'il est effectué par rapport au premier élément parent positionné de manière relative (ou absolue) . Dans le cas où il n'y a pas de parent relativement positionné, l'élément sera positionné par rapport à l' élément racine (directement à l'élément HTML).Donc, si vous souhaitez positionner votre élément enfant en haut à gauche du conteneur parent, vous devez faire ceci:
Vous bénéficierez grandement de la lecture de cet article . J'espère que cela t'aides!
la source