Vous êtes ici Forums
  |  Connexion
 Forums
HomeHomeForums DNNForums DNNDéveloppementDéveloppementPositionnement des controles. Comment Faire ?Positionnement des controles. Comment Faire ?
Précédente
 
Suivante
Nouveau message
25/07/2007 20:02
 

Bonjour,

Je débute (et donc je galère) dans la conception de modules.

Pour mon premier essai, je tente l'exercice suivant.

Je place une image qui represente une carte de france.

Je voudrais maintenant placer des images (des drapeaux) représentant mes agences (Paris, lyon, Marseille etc)

Et là je bloque pour positionner ces images de drapeaux car en mode absolute, ils se positionnent en dehors de mon modules.

Si quelqu'un pouvait m'éclairer (mais interdiction de me conseiller de prendre Photoshop pour mettre mes drapeaux et n'afficher qu'une seule image !

 

D'avance merci

 
Nouveau message
26/07/2007 01:21
 

[EXEMPLE 1]

dd 0


<style type="text/css">
.Wrapper { padding:0; margin:0; position:relative; }
#Map { overflow:hidden; }
#Image1 { position:absolute; top:30px; left:28px;}
</style>
<div class="Wrapper">
<img alt="dd" src="http://www.dotnetnuke.fr/Portals/0/DNN.FR.gif" id="Map" />
<img alt="0" src="http://www.dotnetnuke.fr/DesktopModules/Forum/Themes/DNNSilver/Images/s_offline.gif" id="Image1" />
</div>

L'objet positionné en ABSOLUTE va prendre pour référence le premier objet parent positionné. Par défaut, il utilisera la fenêtre. J'inclue donc les images à positionner dans une DIV (Wrapper) que je positionne relativement à son environnement. Ensuite je rend l'overflow de l'image Map en caché au flux principal pour que les autres objets (les drapeaux (ici des ordis)) ne tiennent pas compte du display:Block qui va de pair avec l'utilisation d'une image, et je positionne le drapeau (le positionnement a donc lieu par rapport au Wrapper). J'aurai aussi pu mettre l'image Map en Background de Wrapper mais cette technique d'overFlow:hiden peut t'être utile si deux de tes drapeaux se chevauchent.
Ici  il n'y a que des images, mais j'imagine que tu veux mettre des liens sur les drapeaux... il va donc falloir utiliser des DIV plutôt que de simples images, comme ça tu pourras coller ce que tu veux dedans (LinkButton ...)

 

 
Nouveau message
26/07/2007 01:48
 

dd

<style type="text/css">
.Wrapper2 { padding:0; margin:0; position:relative; }
.Wrapper2 IMG { border:0; }
#Map2 { overflow:hidden; }
.Volante { position:absolute; top:30px; left:28px;}
.Volante a, .Volante a:link { text-decoration:none; border:0; }
.Volante a:hover { text-decoration:none; }
</style>
<div class="Wrapper2">
<img alt="dd" src="http://www.dotnetnuke.fr/Portals/0/DNN.FR.gif" id="Map2" />
<div class="Volante">
<a href="#nogo">
<img alt="0" src="http://www.dotnetnuke.fr/DesktopModules/Forum/Themes/DNNSilver/Images/s_offline.gif" />
</a>
</div>
</div>

0
 
Nouveau message
26/07/2007 01:56
 

Le même exemple avec plusieurs DIV positionnées.

<style type="text/css">
.Wrapper3 { padding:0; margin:0; position:relative; }
.Wrapper3 IMG { border:0; }
.Wrapper3 a, .Wrapper3 a:link, .Wrapper3 a:hover { text-decoration:none; border:0; }
#Map3 { overflow:hidden; }
.Volante0 { position:absolute; top:30px; left:28px;}
.Volante1 { position:absolute; top:10px; left:50px;}
.Volante2 { position:absolute; top:50px; left:50px;}
.Volante3 { position:absolute; top:30px; left:208px;}
.Volante4 { position:absolute; top:10px; left:195px;}
.Volante5 { position:absolute; top:50px; left:195px;}
</style>
<div class="Wrapper3"> <img alt="dd" src="http://www.dotnetnuke.fr/Portals/0/DNN.FR.gif" id="Ma32" />
  <div class="Volante0"> <a href="#nogo"> <img alt="0" src="http://www.dotnetnuke.fr/DesktopModules/Forum/Themes/DNNSilver/Images/s_offline.gif" /> </a> </div>
  <div class="Volante1"> <a href="#nogo"> <img alt="0" src="http://www.dotnetnuke.fr/DesktopModules/Forum/Themes/DNNSilver/Images/s_offline.gif" /> </a> </div>
  <div class="Volante2"> <a href="#nogo"> <img alt="0" src="http://www.dotnetnuke.fr/DesktopModules/Forum/Themes/DNNSilver/Images/s_offline.gif" /> </a> </div>
  <div class="Volante3"> <a href="#nogo"> <img alt="0" src="http://www.dotnetnuke.fr/DesktopModules/Forum/Themes/DNNSilver/Images/s_offline.gif" /> </a> </div>
  <div class="Volante4"> <a href="#nogo"> <img alt="0" src="http://www.dotnetnuke.fr/DesktopModules/Forum/Themes/DNNSilver/Images/s_offline.gif" /> </a> </div>
  <div class="Volante5"> <a href="#nogo"> <img alt="0" src="http://www.dotnetnuke.fr/DesktopModules/Forum/Themes/DNNSilver/Images/s_offline.gif" /> </a> </div>
</div>

 
Nouveau message
26/07/2007 02:06
 

Cela dit ça reste une question de CSSn donc tu en sauras plus par ici http://www.google.fr/search?hl=fr&q=CSS+positionnement&btnG=Rechercher&meta=lr%3Dlang_fr

Au passage notre module Aricie HTMLMapMaker te permettra de créer à la souris des polygones cliquables menant à d'autres cartes, pour créer des zooms sur la France, etc. et positionner tes drapeaux ;)

seb

www.aricie.com

 

 
Nouveau message
26/07/2007 09:40
 

SUPER !

Merci Seb pour toutes ces explications.
Effectivement c'est du CSS...

Je ne sais pas pourquoi je suis passé a coté de ca. C'est le coté ASP qui me perturbe...

Bon tel quel je n'ai pas réussi a faire fonctionné ton exemple (Le 1 ou le 2)... Certainement parceque le ASP nécéssite quelques adaptations.

Voici donc ce que j'ai écrit pour parvenir a mes fins

<style type="text/css>
.wrapper {padding:0;margin:0;position:relative
#map {overflow:hidden}
.pos59 { position:absolute; top:13px; left:68px; }
.pos93 { position:absolute; top:33px; left:72px; }
</style>

<div class="wrapper">
<Img src="/DotNetNuke/DesktopModules/MonModule/Images/France.jpg" id="map">
<asp:image ID="pos13" runat="serveur" ImageUrl="~/DesktopModule/MonModule/Image/Fanion.jpg" CssClass="pos59" />
<asp:image ID="pos93" runat="serveur" ImageUrl="~/DesktopModule/MonModule/Image/Fanion.jpg" CssClass="pos93" />
</div>

En fait la grande différence vient du fait que je suis obligé de spécifier le style CSS pour chacune de mes images, contrairement a tes exemples.

Je crois que j'ai encore beaucoup à apprendre !

 
Nouveau message
26/07/2007 11:44
 

Essaie avec Runat="Server" déjà ;)

Il y a une URL où je peux voir ça ?

seb

 
Nouveau message
26/07/2007 11:53
 

Ouarff... Dans VS2005 j'ai bien mis server et non pas serveur comme indiqué dans mon message.

Pas d'URL pour voir mais ce que j'ai écrit fonctionne bien.

La seule chose c'est que manquant de recul sur ASP je serais curieux de savoir pourquoi je suis obligé de spécifier la cssClass, alors que toi dans tes exemples tu t'en passes.

 
Nouveau message
26/07/2007 13:37
 

Les IDs sont récupérés par DNN et modifiés lors du rendu à l'écran.

seb

 
Nouveau message
27/07/2007 09:37
 

Bon j'y ai cru, mais c'est pas encore ca.

En effet sous IE pas de probleme mes points sont bien positionnés sur la carte de france

En revance sous Firefox (2.0.5) c'est la cata. Les points sont alignés a droite et la carte sort du container.
(Ci dessous la capture)

Capture

Pourquoi ?

 

 
Nouveau message
27/07/2007 10:11
 

Si je puis me permettre anthony, tu devrais jeter un oeil à notre module htmlmapmaker, qui, s'il n'a pas été mis à jour depuis un bail, présente néanmoins l'intéret de faire ce que tu cherches et bien plus encore.

-> tu charge une carte, tu dessine et tu places tes zones en ligne grâce à un petit éditeur intégré. Tu associe un lien, une icone (ton cas ici) et/ou un texte à chaque zone.

-> le module te generer la carte html (tag map) correspondante, il te redessine la carte avec le contenu pictural que tu as placé dessus, et si tu regardes l'algo de rollover, il te fait du clipping pour afficher les zones sur passage de la souris.

Ce n'est pas tout à fait ce que tu es en train de faire avec des css, mais ça y ressemble pas mal, et une fois le nez dans le code, tu verras que le gros du boulot est fait.

A+


Jesse
Société de conseil et de service en 
informatique et systèmes d'information
 
Nouveau message
27/07/2007 10:26
 

Je connais votre module, meme si je n'ai pas regarder son source.

Mais mon but n'est pas de placer des drapaux sur une carte.

Ce que je tente c'est de m'initier à la programmation ASP/VB/DNN/Et meme AJAX

Et aborder tout cela en Autodidacte ce n'est pas évident car l'ancien programmeur que je suis ne connais que Delphi et HTML.

Donc la petite carte de france, et les petits drapeaux n'est qu'un exercice. Le deuxième en fait aprés le classique "Hello Word !". Je n'ose meme pas imaginer la difficulté quand je vais aborder la base de données, ou encore les sécurité.

La difficulté est de plus amplifier par le manque de documentation. En dehors de ce qu'écrit M.Washington je ne trouve pas grand chose et en plus j'ai un peu de mal a comprendre ce qu'il écrit.

J'aimerais bien allé en formation chez Aricie

 
Nouveau message
27/07/2007 10:44
 
Le code CSS est valide ici dans son contexte, il doit y avoir des adaptations à faire en fonction du container. Essaie déjà de travailler dans un container DNNBlue pour voir si ca change qque chose.
Ensuite dans le code CSS que tu as copié collé il manque un ";}". Ca peut provoquer la non execution du code chez Firefox.
Si j'avais une url pour accèder à ton truc je pourrai te dire exactement ce qui pêche mais là ...

bon courage

seb
 
Nouveau message
27/07/2007 11:15
 

Dans le message dont tu parle je n'avais pas fait un copier/coller mais j'avais retaper a la va-vite mon code. Cela explique les nombreuses fautes.

J'ai suivi ton conseil, helas avec un container DNN_Blue c'est pareil. L'affichage sous Firefox n'est pas bon.

Effectivement pas moyen de te donner accés a ce site qui est pour le moment en local sur mon poste.

Sinon au niveau du code ca donne ca (là c'est du copier/collé)

<%@ Control Language="VB" AutoEventWireup="false" Inherits="AFI.Ping.view" CodeFile="ping.ascx.vb"  %>
<%@ Register Assembly="RadAjax.Net2" Namespace="Telerik.WebControls" TagPrefix="radA" %>
<style type="text/css">
.wrapper {padding:0;margin:0;position:relative;}
#map {overflow:hidden;}
.Pos59 {position:absolute;top:13px;left=68px;}
.Pos93 {position:absolute;top:33px;left=72px;}
.Pos44 {position:absolute;top:53px;left=30px;}
.Pos69 {position:absolute;top:90px;left=100px;}
.Pos13 {position:absolute;top:115px;left=95px;}
</style>

<div class="wrapper">
<radA:RadAjaxPanel ID="RadAjaxPanel1" runat="server" Height="116px"  Width="169px">
<asp:Image ID="map"  runat="server"   ImageUrl="~/DesktopModules/AFIPing/Images/small-france.gif"/>
<asp:Image ID="Pos59"  runat="server"  ImageUrl="~/DesktopModules/AFIPing/Images/test.gif" CssClass="Pos59"  style="z-index: 100"/>
<asp:Image ID="Pos93"  runat="server"  ImageUrl="~/DesktopModules/AFIPing/Images/test.gif" CssClass="Pos93" style="z-index: 101"/>
<asp:Image ID="Pos44"  runat="server"  ImageUrl="~/DesktopModules/AFIPing/Images/test.gif" CssClass="Pos44" style="z-index: 102"/>
    <radA:AjaxLoadingPanel ID="AjaxLoadingPanel1" runat="server" Height="75px" Style="z-index: 106;
        left: 0px; position: absolute; top: 0px" Width="75px">
        &nbsp;
            <asp:Image ID="Image1" runat="server" AlternateText="Loading..." ImageUrl="~/DesktopModules/AFIPing/Images/LoadingProgressBar.gif" style="z-index: 100; left: 35px; position: absolute; top: 139px" />
     </radA:AjaxLoadingPanel>
<asp:Image ID="Pos69"  runat="server"  ImageUrl="~/DesktopModules/AFIPing/Images/test.gif" CssClass="Pos69"  style="z-index: 104"/>
<asp:Image ID="Pos13"  runat="server"  ImageUrl="~/DesktopModules/AFIPing/Images/test.gif" CssClass="Pos13" style="z-index: 105"/>

</div>
</radA:RadAjaxPanel>

 

Bon comme tu le vois j'utilise les controle RadTelerik pour ajaxifier mon machin.

</radA:RadAjaxPanel> est le panel qui va etre raffraichi en Ajax 

<radA:AjaxLoadingPanel> est une image qui s'affiche pendant le raffraichissement du panel. (On ne la voit pas car c'est trop rapide, mais c'est obligatoire pour utiliser un RadAjaxPanel)

 
Nouveau message
27/07/2007 14:38
 
Déjà à première vue tes balises se chevauchent, la div Wrapper devrait se terminer après le AjaxPanel.
Essaie d'ajouter Style="position:relative" à tous tes AjaxPanel ou au pire une valeur en inherit.

seb
 
Nouveau message
27/07/2007 15:30
 

Bon bien vu pour le chevauchement. Une fois cela corrigé, le container arrive bien en dessous de la carte. C'est déjà ca.

Par contre cela ne change rien concernant les points. J'ai essayé pas mal de manips, y compris les positions relatives... en vain.

Ce qui est bizare, c'est que quand on regarde la capture que j'ai publié, on voit bien que les points sont correctements positionnés sur l'axe Y.

Mais pas sur l'axe X ! En fait sur cet axe, les points viennent s'aligner a coter de l'image mais pas sur l'image.

Je suspecte donc le #map {overflow:hidden;} Enfin j'ai l'impression que le overflow ne fonctionne pas

Mais si je supprime ma carte de france, dans ce cas les points sont alignés a gauche (toujours avec les bonnes coordonnées Y)

Je n'y comprends plus rien.

Je vais essayé d'imbriquer des div...

 
Nouveau message
27/07/2007 15:59
 

Essaie ça :

Affiche la page sur laquelle se trouve ton contrôle, puis affiche sa source (sous Firefox > Ctrl + U). Enregistre le tout dans un fichier texte et envoie moi tout ça sur mon mail sebastien.fichot /*/Arobase/*/ aricie.fr

seb

 
Précédente
 
Suivante
HomeHomeForums DNNForums DNNDéveloppementDéveloppementPositionnement des controles. Comment Faire ?Positionnement des controles. Comment Faire ?