Fondamentalement, vous avez ajouté plus d'encombrement dans votre code, ce qui crée plus de confusion, donc j'essaie d'abord de supprimer l'encombrement qui empêche de comprendre le vrai problème.
Tout d'abord, nous devons établir que quelle est la vraie question?
C'est pour cela que l' inline-block
élément " " est poussé vers le bas.
Maintenant, nous commençons à le comprendre et à éliminer le désordre en premier.
1 -
Pourquoi ne pas donner aux trois div la même largeur de bordure?
Donnons-le.
2 - L'élément flottant a-t - il un lien avec l'élément de bloc en ligne poussé vers le bas? Non, cela n'a rien à voir avec ça.
Nous avons donc complètement supprimé cette division . Et vous êtes témoin du même comportement d'élément de bloc en ligne poussé vers le bas.
Voici le tour de la littérature pour saisir l'idée des boîtes de ligne et comment elles sont alignées sur la même ligne, surtout lisez attentivement le dernier paragraphe car c'est là que réside la réponse à votre question.
La ligne de base d'un "bloc en ligne" est la ligne de base de sa dernière boîte de ligne dans le flux normal, sauf si elle n'a pas de boîtes de ligne en flux ou si sa propriété "overflow" a une valeur calculée autre que "visible", dans auquel cas la ligne de base est le bord inférieur de la marge.
Si vous n'êtes pas sûr de la base, voici une brève explication en termes simples.
Tous les caractères sauf «gjpqy» sont écrits sur la ligne de base, vous pouvez penser à la ligne de base comme si vous dessiniez une simple ligne horizontale identique à celle soulignée juste en dessous de ces «caractères aléatoires», alors ce sera la ligne de base mais maintenant si vous écrivez l'un des «gjpqy» caractère (s) sur la même ligne puis la partie inférieure de ces caractères tomberait en dessous de la ligne.
Donc, nous pouvons dire que tous les caractères à l'exception de «gjpqy» sont écrits complètement au-dessus de la ligne de base tandis qu'une partie de ces caractères est écrite en dessous de la ligne de base.
3 - Pourquoi ne pas vérifier où se situe la ligne de base de notre ligne? J'ai ajouté quelques caractères qui montrent la ligne de base de notre ligne.
4 - Pourquoi ne pas ajouter aussi des personnages dans nos divs pour trouver leurs références dans les div? Ici, certains caractères ajoutés dans les divs pour clarifier la ligne de base .
Maintenant, lorsque vous comprenez la ligne de base, lisez la version simplifiée suivante sur la ligne de base des blocs en ligne.
i) Si le bloc en ligne en question a sa propriété de débordement définie sur visible (ce qui est par défaut, il n'est donc pas nécessaire de le définir). Alors sa ligne de base serait la ligne de base du bloc conteneur de la ligne.
ii) Si le bloc en ligne en question a sa propriété de débordement définie sur AUTRE QUE visible. Ensuite, sa marge inférieure serait sur la ligne de base de la ligne de la boîte contenant.
Maintenant, regardez à nouveau pour clarifier votre concept que ce qui se passe avec la div verte . En cas de confusion, des caractères sont ajoutés à proximité de la division verte pour établir la ligne de base du bloc contenant et la ligne de base de la division verte est alignée.
Eh bien, je prétends maintenant qu'ils ont la même base de référence? DROITE?
5 - Alors pourquoi ne pas les superposer et voir s'ils sont bien ajustés les uns aux autres? Donc, j'apporte le troisième div à gauche: 35px; pour vérifier s'ils ont la même ligne de base maintenant ?
Maintenant, nous avons fait prouver notre premier point.
Eh bien, après l'explication du premier point, le deuxième point est facilement digestible et vous voyez que le premier div qui a une propriété de débordement définie sur autre que visible (caché) a sa marge inférieure sur la ligne de base de la ligne.
Maintenant, vous pouvez faire quelques expériences pour l'illustrer davantage.
- Définissez le premier débordement div: visible (ou supprimez-le complètement) .
- Définir le deuxième débordement div: autre que visible .
- Définissez le débordement des deux divs: autre que visible .
Maintenant, ramenez votre fouillis et voyez si tout va bien pour vous.
- Ramenez votre div flotté (bien sûr, il est nécessaire d'
augmenter une certaine largeur du corps) Vous voyez que cela n'a aucun effet.
- Ramenez les mêmes marges impaires .
- Réglez le div vert sur le débordement: visible lorsque vous définissez votre question (ce désalignement est dû à l'augmentation de la largeur de la bordure de 1px à 5px, donc si vous ajustez la gauche à gauche, vous verrez qu'il n'y a pas de problème)
- Supprimez maintenant les caractères supplémentaires que j'ai ajoutés pour faciliter la compréhension . (et bien sûr, supprimez le négatif à gauche)
- Enfin, réduisez la largeur du corps car nous n'en avons plus besoin de plus large.
Et maintenant, nous revenons à notre point de départ.
J'espère avoir répondu à votre question.