| Auteur | |
|---|---|
| Teruteru | # 14 Mar 2010 - 15:36:19 |
| 15 Posts |
Bonjour Je suis en galère ! Je voudrais, dans un bloc donné, placer à ma guise les deux div qui sont dedans en haut ou en bas, aux gré de mes envies, sans jamais toucher au code html. J'ai naîvement utilisé des float: bottom et float:top, en pensant que ça fonctionnerait comme avec float: left et float: right, mais rien n'y fait, je n'arrive pas à faire passer une div en dessous de l'autre et vice versa. Je m'arrache les cheveux lol. Quelqu'un peut-il m'éclairer ? Modifié par Teruteru (19 Mar 2010 - 12:09) |
| Raphael | # 14 Mar 2010 - 16:09:12 |
twitter.com/goetter Administrateur 12017 Posts |
Hello, Ce que tu demandes n'est pas réalisable avec la propriété Float (qui demeure actuellement très mal utilisée). Il faudrait voir exactement ton cas de figure, mais dans tous les cas, la gestion de l'alignement vertical est complexe dans un média non paginé qu'est celui du Web. Modifié par Raphael (14 Mar 2010 - 16:09) Le livre qui va vous permettre d'aller (vraiment) plus loin avec CSS : "CSS avancées - vers HTML5 et CSS3" |
| Teruteru | # 14 Mar 2010 - 17:35:36 |
| 15 Posts |
Je te remercie pour ta réponse... Ca a l'air assez complexe en effet. Je n'ai pas de soucis pour placer les choses à l'horizontale, mais dès que je veux fixer quelque chose à la verticale, et garder une certaine mobilité des éléments les uns par rapport aux autres, je bloque complètement. Y'a t-il un moyen de contourner le problème ? Voici le code des éléments en question. Voici le bloc dans lequel je veux placer les différents éléments:
Voici le code des éléments placés dans le block:
sachant qu'il y a également un menu codé comme suit :
J'ai également défini un style pour le texte qui sera présent dans ce block :
Bon je t'avoue que là y'a des float un peu partout, parceque j'étais un peu en train de tout essayer lol. J'imagine qu'il y a pas mal d'erreurs du coup. Qu'en penses-tu ? Ce que je souhaite faire, c'est placer la div "blocksample", qui concerne une image, en bas à droite dans le block de base, et je voudrais que le texte s'aligne gentiment à côté comme si j'avais juste mis les balises <img> dans mon paragraphe dans le code html... lol Du coup je m'y perds un peu et je ne sais plus quel code de positionnement sera le plus adapté pour ce que je veux faire, et le moins brouillon possible, car je tiens à faire les choses au mieux. Merci par avance. PS : si le float est si mal utilisé, que devrait on prendre à la place ? un positionnement absolu ? fixe ou relatif peut-être ? J'ai énormément de mal avec le relatif, je me demande toujours par rapport à quoi c'est relatif lol. J'utilise beaucoup l'absolu en général. Cette fois-ci j'avais voulu tenter les float, parceque je me demandais si c'était une bonne chose de tout placer en absolu... Modifié par Teruteru (14 Mar 2010 - 17:37) |
| Raphael | # 14 Mar 2010 - 17:52:55 |
twitter.com/goetter Administrateur 12017 Posts |
Teruteru a écrit : Un élément en relatif est décalé par rapport à sa position "normale" (dans le flux), tout simplement. Il ne faut pas chercher plus compliqué. Et surtout, il faut bien comprendre que le positionnement relatif... n'est pas un positionnement, mais un décalage. (re)Voir : http://www.alsacreations.com/tuto/lire/608-initiation-positionnement-css.html Teruteru a écrit : Disons que chacun des deux a ses avantages et inconvénients. Ce qui est sûr, c'est qu'un flottant sera forcément à droite ou à gauche. Rien d'autre. Je suis chez moi donc je n'ai pas forcément tous les outils pour visionner et débugger ta page, mais à priori pour positionner un élément en bas de son conteneur, il va falloir passer par du positionnement absolu, avec toutes les contraintes que cela va avoir. Mais sans voir ta page et sans connaître vraiment tes besoins, difficile de te conseiller. Le livre qui va vous permettre d'aller (vraiment) plus loin avec CSS : "CSS avancées - vers HTML5 et CSS3" |
| Teruteru | # 14 Mar 2010 - 18:07:09 |
| 15 Posts |
Je vais tester l'absolu alors. Si j'ai bien compris c'est pas si mal que ça, ça serait même mieux que mettre du float... En fait j'ai déjà lu plein de choses sur le positionnement, mais je voudrais avoir l'avis de quelqu'un qui maîtrise vachement bien pour savoir ce qui est le mieux (float ? absolute ? relative ? ou autre chose ? lol). Ma page n'est pas en ligne, pour l'instant je code sur mon pc uniquement. Sur le lien que tu me donnes pour positionner en bas du conteneur, on parle de margin mais j'ai justement passé des heures à tenter de placer les choses désespérément avec des margin, rien n'y fait, ça ne veut pas se placer l'un en dessous de l'autre. Ce n'est visiblement pas la bonne solution... Quand je mets un margin, tout descend. lol C'est pour ça que là je m'y perds et je ne comprends pas ce qui se passe. En même temps, c'est la première fois que je veux positionner les choses dans la verticalité lol ! Bien mal m'en a pris !!! en fait ce qui me rend hystérique depuis hier, c'est que je suis obligée de déplacer les div dans ma page html pour qu'elle s'affichent l'une au dessus de l'autre et vice versa. Ce que je veux, c'est ne pas avoir besoin de toucher du tout au code html pour changer le design de ma page. je veux un truc interactif, avec du php (déjà fait), qui switche de design sans changer au code html. Et là, je suis dans l'impasse, je suis sytématiquement obligée de toucher au code html pour déplacer mes div, et c'est pas bon, ça veut dire que ma feuille de style est pas bonne. ^^ lol Modifié par Teruteru (14 Mar 2010 - 18:17) |
| Raphael | # 14 Mar 2010 - 18:17:15 |
twitter.com/goetter Administrateur 12017 Posts |
Teruteru a écrit : Sans vouloir te vexer, je pense que tu as effectivement beaucoup de lacunes en terme de positionnement et le fait de tester plein de choses sans connaître et comprendre les bases n'aide pas. Que dirais-tu de potasser tranquillement cet article ? http://www.alsacreations.com/article/lire/53-guide-de-survie-du-positionnement-css.html Le livre qui va vous permettre d'aller (vraiment) plus loin avec CSS : "CSS avancées - vers HTML5 et CSS3" |
| Teruteru | # 14 Mar 2010 - 18:20:42 |
| 15 Posts |
Ah mais j'admets tout à fait avoir des lacunes lol Sinon je serais pas là lol !!! si je teste, c'est parceque j'ai du mal à apprendre avec uniquement la partie théorique. J'apprends mieux en faisant, en constatant les plus et les moins. tu vois ? Je suis en train de relire plein de choses, dont le lien que tu m'as donné, mais je me sens toujours un peu perdue pour savoir choisir ce qui est le mieux. Je suis complètement inculte en matière de gestion des navigateurs, du coup c'est difficile. Visiblement, ceci serait la meilleure solution pour moi : Dans le deuxième cas — le conteneur contient plusieurs éléments, dont certains doivent se positionner normalement en flux —, on utilisera le positionnement absolu, sur le bloc à positionner en bas du conteneur: #conteneur {position: relative;} #bas {position: absolute; bottom: 0;} Pour que le bloc #conteneur, parent ou ancêtre direct du bloc #bas, soit le référent de ce bloc, il faut le positionner, soit en relatif, soit en absolu. Si on ne le fait pas, alors le bloc #bas se positionnera tout en bas du premier bloc positionné parmi ses ancêtres, ou bien tout en bas de la fenêtre du navigateur. Pour ce dernier cas, voir cette page de démonstration: Positionnement absolu d'un bloc selon le positionnement du bloc conteneur. J'ai re-testé avec la position absolue, mais on en revient toujours à mon soucis de chevauchement lol. C'est pour ça que je ne voulais pas faire de l'absolu cette fois-ci. Modifié par Teruteru (14 Mar 2010 - 18:37) |
| gc-nomade | # 14 Mar 2010 - 19:15:32 |
gcyrillus en mode portable 789 Posts |
Bonjour, Peut-on avoir un visuel de ce que tu cherche a faire . Je comprend en gros que tu veut mettre cote a cote 2 elements et les centrer verticalement .... centrés rapport a quoi ? - les centrés mutuellement ? - les centrée dans un parent de hauteur définie ? - les centrés rapport a l'écran ? - fluide en largeur et/ou hauteur ou de taille fixes ? - etc ... Les pistes pour rester fluide dans le flux sont plutôt : table et display a mons sens , le positionement absolu demande aussi une reflexion afin de s'assurer que tout reste visuellement accessible selon les conditions (ex redimensionement de la fenetre , +- de contenu et taile d'affichage des caractéres , ...) GC GC rien , mais GC encore ... et ça marche via la V.A.E. je passe d'un B.E.P. a un B.T.S. ... ce qui apparemment ne flatte que mon ego !? Je vois le monde de ma porte, pas vous ? |
| Teruteru | # 14 Mar 2010 - 23:34:59 |
| 15 Posts |
Ben en clair je veux que mon image s'affiche en bas dans mon block, et que le menu et le texte se placent au dessus. Mais pour ça je voudrais ne pas avoir à toucher au code html. Je veux que le code html soit fixe, que seules les feuilles de style changent. C'est fou ça je pensais que ce serait aussi simple de positionner à la verticale qu'à l'horizontale, mais vraiment je n'y arrive pas ! C'est à croire que c'est impossible sans toucher au code html... je ne connais pas "display" à part pour les menus. comment on s'en sert pour positionner ? |
| 6l20 | # 15 Mar 2010 - 03:19:56 |
Les kiwis...quand je veux ! Modérateur 2204 Posts |
Hello,Teruteru a écrit : Cela doit vouloir dire que tu es prêt à retrousser tes manches pour combler ces lacunes, à te former sur les aspects que tu ne maitrises pas, à écouter les conseils, les appliquer, à chercher par toi même les infos qui te manquent (quitte à venir demander un complément d'informations sur les points qui ne sont pas suffisamment clair par la suite ) ? Et que tu as bien évidemment appliquer cette démarche en lisant la réponse de Raphael (et en "parcourant" les liens fournis ?) Teruteru a écrit : Ah ben non... Concernant la propriété css display (et sans chercher ni très loin, ni très longtemps...): "Quelques ressources" et tour d'horizon: ici L'article cité par Raphael en parle également : À relire... Des exemples en pratique dans le tutoriel de Benjamin... Aide-toi... XHTML: structure. CSS: présentation. Javascript: comportement. |
| gc-nomade | # 15 Mar 2010 - 09:41:02 |
gcyrillus en mode portable 789 Posts |
Teruteru a écrit : okay , et a quoi ressemble ta structure HTML que tu ne peut pas modifier ? ça permettrait de faire le tri dans les possibilité ... Bonne journée GC rien , mais GC encore ... et ça marche via la V.A.E. je passe d'un B.E.P. a un B.T.S. ... ce qui apparemment ne flatte que mon ego !? Je vois le monde de ma porte, pas vous ? |
| Nico3333fr | # 15 Mar 2010 - 11:37:24 |
| 353 Posts |
Sinon, il y a le positionnement flottant avec une margin en %... mais sans exemple de ton problème, je ne peux pas en dire plus. In tartiflette we trust ! (ou May the reblochon force be with you si vous préférez) |
| Teruteru | # 19 Mar 2010 - 12:00:38 |
| 15 Posts |
Ce n'est pas de la mauvaise volonté, j'ai lu les liens qu'on ma donné, mais je ne comprends que de manière superficielle... J'ai bien fouillé sur le site aussi, les liens que tu me montres, je suis tombée dessus et je les ai lu, mais j'ai du mal à tout comprendre. C'est pour ça que je suis venue sur le forum, en espérant des explications plus prosaïques lol J'ai beaucoup de mal avec les tuto théoriques purs, je me suis formée en autodidacte et j'ai forcément des manques en matière de technique pure parceque j'ai jamais réussi à me plonger dans un livre de code je décroche et je comprends rien. J'ai besoin de manipuler pour comprendre. Je sais faire des choses, mais je ne saurais pas forcément expliquer la technique derrière dans son entièreté. Je vais vous montrer le code html en question, j'ai juste changé le texte pour un texte lambda: Il y a une balise img dans le corps d'un paragraphe parceque j'ai placé mon image là en attendant de pouvoir faire mieux. Je l'ai encadrée de "!" pour la sortir du flux pendant que je fais des essais avec la feuille de style. Ce que je cherche à faire, c'est à ce que ça fonctionne uniquement avec la div "blocksample", sans que j'ai jamais besoin de la déplacer dans le code html. Je veux pouvoir déplacer l'image à ma guise en fonction des changements de design. Mon site sera interactif, avec plusieurs designs, et y'a aucun intérêt si je suis obligée de changer le code html, ce n'est pas ce que je cherche à obtenir. <div id="block"> Et je vous redonne le css qui concerne cette portion de code : #block {Y'a sûrement pleins de trucs inutiles dans le css là tout de suite, je fais des essais avec les positions relatives et les pourcentages, mais rien n'y fait lol... Mon image ne veut pas se mettre en bas... Ou alors elle s'y met, mais le texte ne se déroule plus librement à côté... |
| Teruteru | # 21 Mar 2010 - 15:19:15 |
| 15 Posts |
J'ai ramené mon problème à un test des plus simples et basiques. Je me suis dit que si j'y arrivais avec deux simples boîtes ce serait plus simple pour moi après... voilà le code CSS :
et voilà le code html:
Comment faire pour que la boite noire se place en dessous de la boite grise, sans changer l'ordre des boites dans le code html ? J'écarte le positionnement absolu, parceque ça va engendrer des problèmes de superpositions par la suite. Ce n'est pas la solution. J'ai compris que le float était impossible dans ce cas de figure. J'ai aussi compris que la position relative n'était qu'un décalage, et qu'ici, ce ne sera pas la solution à envisager non plus visiblement, parceque j'ai vu que le décalage ne devait pas être très important, juste de quelques pixels. Et ce n'est pas l'effet que je recherche. Vraiment je ne vois pas comment faire. Je devrais peut-être utiliser display: table ......... Mais je pensais qu'il y aurait un autre moyen Modifié par Teruteru (21 Mar 2010 - 15:22) |
| Teruteru | # 21 Mar 2010 - 15:41:00 |
| 15 Posts |
J'ai quand même voulu essayer la position relative, et j'arrive à échanger les boîtes de place, mais étant donné qu'il vaut mieux éviter d'utiliser la position relative pour autre chose qu'un léger décalage, je me demande si ma solution en est vraiment une. CSS :
HTML:
Qu'en pensez-vous ? En plus là ça marche pour deux petites boites toute simples, mais ce que je veux placer dans la verticale est plus compliqué que ça... j'ai une image, du texte, un bloc menu et deux titres... (voir le code plus haut) et je voudrais que l'image seule se place tout en bas, et que tout le reste se place dessus. Mais c'est pas tout, il faut que le texte continue de dérouler librement à côté. LOL Pour moi c'est un vrai casse tête lol. |
| Teruteru | # 21 Mar 2010 - 15:51:22 |
| 15 Posts |
Allez on continue.... Je change de problème. Une boite, et du texte. le code CSS :
et le code html :
Modifié par Teruteru (21 Mar 2010 - 16:01) |
| Heyoan | # 21 Mar 2010 - 16:00:45 |
| Modérateur 8101 Posts |
Salut, comme les hauteurs sont fixes dans ton exemple c'est relativement simple. On peut faire par exemple : ouCe serait beaucoup plus compliqué si les hauteurs n'étaient pas fixes et c'est d'ailleurs ce qui est préconisé pour les blocs conteneurs car cela leur permet de s'étirer automatiquement en fonction de leur contenu.Quoi qu'il en soit il est préconisé, sauf cas particulier, de ne pas modifier via css l'ordre des éléments html car tout le monde n'a pas forcément accès aux css (typiquement les utilisateurs de lecteurs d'écran) et donc si la boîte2 doit être placée avant la boîte1 ce devrait être le cas également dans le code html. |
| Teruteru | # 21 Mar 2010 - 16:10:16 |
| 15 Posts |
Merci beaucoup pour ta réponse. En effet je crois que mon exemple est trop simple, parceque je veux que ça marche dans une page où les hauteurs s'étirent en fonction du contenu... Donc c'est compliqué ! ça doit être une histoire de pourcentages mais je n'y connais pas grand chose. Là je suis en train d'essayer avec le texte, c'est déjà beaucoup plus compliqué... Je ne peux pas utiliser le float sinon le block noir sort du block conteneur lol. Et je n'arrive pas à faire remonter le texte quoi que je fasse... Par contre je n'ai pas bien compris ce que tu veux dire par tout le monde n'a pas forcément accès aux css (typiquement les utilisateurs de lecteurs d'écran) Je ne sais pas ce que c'est ? A ce moment là il faut peut-être que je fasse un truc en javascript ou php pour demander à déplacer un élément dans l'ordre de base en html... Après tout j'ai déjà fait ce qu'il fallait pour switcher d'un css à l'autre, je suis sûre qu'il y a moyen de le faire... Mais en fait j'aurais aimé y arriver en CSS uniquement. C'est pas recommandé mais pas impossible lol ^^ Plus sérieusement, ça serait si grave si je faisais ça via le CSS ? ça pourrait ne pas fonctionner chez certaines personnes ? Modifié par Teruteru (21 Mar 2010 - 16:12) |
| Heyoan | # 21 Mar 2010 - 16:47:50 |
| Modérateur 8101 Posts |
Teruteru a écrit :A priori non : que tu fixes les hauteurs en pixels ou en pourcentages ne change pas grand chose au problème qui est... de ne pas fixer de height. Une solution (qui ne fonctionnera pas sur tous les navigateurs) : Teruteru a écrit :Alors laisse moi faire la recherche pour toi. Teruteru a écrit :As-tu déjà entendu parler d'Accessibilité du Web ? |
| Teruteru | # 21 Mar 2010 - 17:10:40 |
| 15 Posts |
Oui c'est vrai j'ai pas fait la recherche, vu qu'on était en train de discuter, je posais la question à la personne "en face de moi", spontanément, quand on parle avec quelqu'un, on demande à la personne en face de soit, on ne court pas chercher un dico ^^ Je pars du principe que quand je parle à une personne, on peut discuter entre nous sans faire appel à une recherche google... Ca ne veut pas dire que je ne voulais pas le faire... C'était plus une question spontanée. Je suis venue ici demander de l'aide parceque mes recherches ne m'ont menée nulle part, et parceque c'est pas toujours évident de piger la théorie. Je me doute que beaucoup de gens viennent ici et attendent que vous leur donniez la solution sans rien faire , mais ce n'est pas mon cas. Seulement j'ai mes limites et malgré les recherches, je n'y arrive pas. Je suis au courant des problèmes d'accessibilité du web, je posais la question comme ça dans la discussion, parceque je ne voyais pas trop, vu que je ne connaissais pas les lecteurs d'écran, en quoi demander la modification de position via le CSS serait une gêne.... Par contre maintenant que tu m'as montré ce que c'était, et vu le public que je vise, je ne pense pas que ce serait un problème... en plus je doute qu'il y ait tant de gens que ça qui en utilisent... je me trompe peut-être. Si c'est le seul obstacle à ce que je veux faire, je pense que je peux continuer d'envisager de déplacer mes div sans toucher au code html. En tous cas, je te remercie pour ta solution, je vais faire des tests avec, cela me donnera peut-être des idées. IE pose toujours problème pour afficher certaines choses, c'est d'ailleurs un des freins principaux dans la conception web, et ça m'a plus d'une fois pourri la vie. J'ai commencé à réaliser des sites avec frontpage lol, et petit à petit je l'ai mis au placard pour apprendre avec notepad++, et je le regrette pas. C'est encore assez récemment que je me suis mise au CSS. Mais bon depuis tout ce temps, j'ai déjà bien tâté les différences entre les navigateurs, et c'est un problème. Modifié par Teruteru (21 Mar 2010 - 17:12) |