J'ai flotté des images et des encadrés en haut d'un conteneur en utilisant float: right (or left) plusieurs fois. Récemment, j'ai ressenti le besoin de faire flotter un div dans le coin inférieur droit d'un autre div avec l'habillage de texte normal que vous obtenez avec float (texte enveloppé au-dessus et à gauche uniquement).
Je pensais que cela devait être relativement facile, même si float n'a pas de valeur minimale, mais je n'ai pas pu le faire en utilisant un certain nombre de techniques et la recherche sur le Web n'a rien trouvé d'autre que d'utiliser un positionnement absolu, mais cela ne fonctionne pas donner le comportement de retour à la ligne correct.
J'avais pensé que ce serait une conception très courante, mais apparemment ce n'est pas le cas. Si personne n'a de suggestion, je devrai diviser mon texte dans des zones distinctes et aligner la div manuellement, mais c'est plutôt précaire et je détesterais devoir le faire sur chaque page qui en a besoin.
EDIT: Juste une note pour quiconque vient ici. La question liée ci-dessus en tant que doublon n'est en fait pas un doublon. L'exigence que le texte entoure l'élément inséré le rend complètement différent. En fait, la réponse à la réponse la plus votée ici montre clairement pourquoi la réponse dans la question liée est erronée en tant que réponse à cette question. Quoi qu'il en soit, il ne semble toujours pas y avoir de solution générale à ce problème, mais certaines des solutions publiées ici et dans la question liée peuvent fonctionner pour des cas spécifiques.
Réponses:
Définissez le div parent sur
position: relative
, puis le div intérieur sur ...... et c'est parti :)
la source
Un moyen de le faire fonctionner est le suivant:
Faites pivoter la div parent de 180 degrés à l'aide de
JSfiddle: http://jsfiddle.net/wcneY/
Maintenant, faites pivoter tous les éléments qui flottent à gauche (donnez-leur une classe) à 180 degrés pour les remettre en place. Voila! ils flottent au fond.
la source
Après avoir lutté avec diverses techniques pendant quelques jours, je dois dire que cela semble impossible. Même en utilisant javascript (ce que je ne veux pas faire) cela ne semble pas possible.
Pour clarifier pour ceux qui n'ont peut-être pas compris - c'est ce que je recherche: en publiant, il est assez courant de mettre en page un encart (image, tableau, figure, etc.) de sorte que son bas soit aligné avec le bas du dernier ligne de texte d'un bloc (ou d'une page) avec du texte qui circule naturellement dans l'encart au-dessus et à droite ou à gauche selon le côté de la page où l'encart se trouve. En html / css, il est trivial d'utiliser le style float pour aligner le haut d'un encart avec le haut d'un bloc, mais à ma grande surprise, il semble impossible d'aligner le bas du texte et de l'encart malgré le fait qu'il s'agit d'une tâche de mise en page courante .
Je suppose que je devrai revoir les objectifs de conception de cet article à moins que quelqu'un n'ait une suggestion de dernière minute.
la source
J'ai obtenu cela dans JQuery en plaçant un élément d'entretoise de largeur nulle au-dessus du flotteur droit, puis en dimensionnant l'entretoise (ou le tuyau) en fonction de la hauteur du parent moins la taille flottante de l'enfant.
Avant que js n'intervienne, j'utilise l'approche absolue de la position, qui fonctionne mais permet le flux de texte derrière. Par conséquent, je passe en position statique pour permettre l'approche de la jambe de force. (l'en-tête est l'élément parent, la découpe est celle que je veux en bas à droite et le tuyau est ma jambe de force)
CSS
Le tuyau doit venir en premier, puis la découpe, puis le texte dans l'ordre HTML.
la source
Cela met un div fixe en bas de la page et se fixe en bas lorsque vous faites défiler vers le bas
la source
Placez le div dans un autre div et définissez le style du div parent sur
position:relative;
Then sur le div enfant, définissez les propriétés CSS suivantes:position:absolute; bottom:0;
la source
Si vous êtes d'accord avec seulement la ligne la plus basse du texte allant sur le côté du bloc (par opposition à complètement autour et en dessous, ce que vous ne pouvez pas faire sans terminer le bloc et en commencer un nouveau), c'est pas impossible de faire flotter un bloc à l'un des coins inférieurs d'un bloc parent. Si vous placez du contenu dans une balise de paragraphe dans un bloc et que vous souhaitez faire flotter un lien dans le coin inférieur droit du bloc, placez le lien dans le bloc de paragraphe et définissez-le sur float: right, puis placez une balise div avec clear : les deux sont placés juste en dessous de la fin de la balise de paragraphe. La dernière div est de s'assurer que la balise parent entoure les balises flottantes.
la source
Si vous définissez l'élément parent sur position: relative, vous pouvez définir l'enfant sur la position de réglage inférieure: absolue; et en bas: 0;
la source
Si vous voulez que le texte se termine bien: -
la source
Je sais que ce truc est vieux, mais j'ai récemment rencontré ce problème.
utiliser des conseils de divs de position absolue est vraiment stupide, parce que le flottant perd en quelque sorte le point avec des positions absolues ..
maintenant, je n'ai pas trouvé de solution universelle, mais dans de nombreux cas, prople utilise des divs flottants juste pour afficher quelque chose d'affilée, comme une série d'éléments span. et vous ne pouvez pas l'aligner verticalement.
pour obtenir un effet similaire, vous pouvez le faire: ne faites pas flotter le div, mais définissez sa propriété d'affichage sur
inline-block
. alors vous pouvez l'aligner verticalement comme bon vous semble. il vous suffit de la propriété des parents div ensemblevertical-align
soittop
,bottom
,middle
oubaseline
J'espère que cela aide quelqu'un
la source
Avec l'introduction de Flexbox , cela est devenu assez facile sans beaucoup de piratage.
align-self: flex-end
sur l'élément enfant l'alignera le long de l' axe transversal .Production:
Afficher l'extrait de code
la source
J'avais également trouvé cette solution pendant longtemps. Voici ce que j'obtiens:
align-self: flex-end;
lien: https://philipwalton.github.io/solved-by-flexbox/demos/vertical-centering/ Cependant, je ne me souviens pas d'où j'ai ouvert ce lien. J'espère que ça aide
la source
Je ferais juste un tableau.
Et le CSS:
Voyez-le en action:
http://jsfiddle.net/mLphM/1/
la source
J'ai essayé plusieurs de ces techniques, et les suivantes ont fonctionné pour moi, donc si tout le reste ici si tout le reste échoue, essayez ceci parce que cela a fonctionné pour moi :).
la source
A a choisi cette approche de @ dave-kok. Mais cela ne fonctionne que si tout le contenu convient sans défilement. J'apprécie si quelqu'un s'améliore
Voici le code http://jsfiddle.net/d9t9joh2/
la source
Cela est désormais possible avec la boîte flexible. Réglez simplement l '«affichage» du div parent sur «flex» et définissez la propriété «margin-top» sur «auto». Cela ne déforme aucune propriété des deux div.
la source
Pas sûr, mais un scénario publié plus tôt semblait fonctionner si vous utilisez position: relative au lieu d'absolu sur la division enfant.
Et pas de tables ...!
la source
Si vous avez besoin d'un alignement relatif et que les DIV ne vous donnent toujours pas ce que vous voulez, utilisez simplement des tableaux et définissez valign = "bottom" dans la cellule dont vous voulez que le contenu soit aligné en bas. Je sais que ce n'est pas une excellente réponse à votre question car les DIV sont censés remplacer les tableaux, mais c'est ce que j'ai dû faire récemment avec une légende d'image et cela a fonctionné parfaitement jusqu'à présent.
la source
J'ai également essayé ce scénario publié plus tôt;
Le positionnement absolu fixe le div à la partie la plus basse du navigateur lors du chargement de la page, mais lorsque vous faites défiler vers le bas si la page est plus longue, elle ne défile pas avec vous. J'ai changé le positionnement pour qu'il soit relatif et cela fonctionne parfaitement. Le div va directement au fond lors de la charge, vous ne le verrez donc pas avant d'arriver au fond.
la source
Une approche intéressante consiste à empiler quelques éléments flottants droits les uns sur les autres.
Le seul problème est que cela ne fonctionne que lorsque vous connaissez la hauteur de la boîte.
la source
La réponse de Stu est la plus proche de travailler jusqu'à présent, mais elle ne tient toujours pas compte du fait que la hauteur de votre div externe peut changer, en fonction de la façon dont le texte s'enroule à l'intérieur. Ainsi, le repositionnement du div intérieur (en changeant la hauteur du "tuyau") une seule fois ne sera pas suffisant. Ce changement doit se produire à l'intérieur d'une boucle, afin que vous puissiez continuellement vérifier si vous avez encore atteint le bon positionnement et réajuster si nécessaire.
Le CSS de la réponse précédente est toujours parfaitement valide:
Cependant, le Javascript devrait ressembler davantage à ceci:
la source
Je sais que c'est un fil très ancien mais je voudrais quand même répondre. Si quelqu'un suit les css et html ci-dessous, alors cela fonctionne. Le div de pied de page enfant collera avec le fond comme de la colle.
la source
Pour utiliser la
margin-top
propriété css dans le but de placer le pied de page au bas de son conteneur. Et d'utiliser latext-align-last
propriété css pour définir le contenu du pied de page au centre.la source
Oh, les jeunes .... Vous êtes ici:
Pas de position absolue! Sensible! Vieille école
la source
Assez vieille question, mais quand même ... Vous pouvez faire flotter un div au bas de la page comme ceci:
Vous pouvez voir où la magie opère. Je pense que vous pourriez faire de même pour le faire flotter au bas d'une div parent.
la source
simple ...... dans le fichier html à droite .... ayez le "footer" (ou le div que vous voulez en bas) en bas. Alors ne faites pas ça:
FAITES CECI: (ayez le pied de page en dessous.)
Après cela, vous pouvez aller dans le fichier css et faire flotter la "barre latérale" vers la gauche. puis faites flotter le "contenu" vers la droite, puis "pied de page" effacez les deux.
cela devrait fonctionner.
la source
J'ai obtenu que cela fonctionne du premier coup en ajoutant
position:absolute; bottom:0;
à l'ID div à l'intérieur du CSS. Je n'ai pas ajouté le style parentposition:relative;
.Il fonctionne parfaitement dans Firefox et IE 8, ne l'ont pas encore essayé dans IE 7.
la source
une autre réponse est l'utilisation judicieuse des tables et des lignes. en définissant toutes les cellules du tableau sur la ligne précédente (à l'exception de celle du contenu principal) sur rowpan = "2", vous obtiendrez toujours un trou d'une cellule au bas de votre cellule de tableau principale que vous pouvez toujours mettre valign = "bottom".
Vous pouvez également définir sa hauteur pour être le minimum dont vous avez besoin pour une ligne. Ainsi, vous obtiendrez toujours votre ligne de texte préférée en bas, quel que soit l'espace occupé par le reste du texte.
J'ai essayé toutes les réponses div, je n'ai pas pu les faire faire ce dont j'avais besoin.
la source
voici ma solution:
la source
Vous pouvez essayer d'utiliser un élément vide avec une largeur de 1px et le faire flotter. Désactivez ensuite l'élément que vous souhaitez réellement positionner et utilisez la hauteur de l'élément vide pour contrôler jusqu'où il va.
http://codepen.io/cssgrid/pen/KNYrey/
la source