Avatar billede c-sharp Nybegynder
02. april 2004 - 12:53 Der er 16 kommentarer og
1 løsning

Skal altid holde laget samme sted i forhold til en knap.

Jeg har en knap som viser et ekstra lag ligeunder sig når man trykker på den:

eks.

                        <div id="calDiv1" style="<%if(!calenderAkt){%>display:none;<%}%> Z-INDEX: 1; LEFT: 314px; POSITION: absolute; TOP: 114px; if: none">
                            <asp:calendar id="Calendar1" runat="server" OnVisibleMonthChanged="MonthChange1" OnSelectionChanged="Calendar1_SelectionChanged"
                                OnDayRender="Calendar1_DayRender" showtitle="true" DayNameFormat="FirstTwoLetters" SelectionMode="Day"
                                BackColor="#ffffff" FirstDayOfWeek="Monday" BorderColor="#000000" ForeColor="#00000" Height="60"
                                Width="120" CssClass="brod_txt">
                                <NextPrevStyle ForeColor="White" BackColor="Navy"></NextPrevStyle>
                                <TitleStyle ForeColor="White" BackColor="Navy"></TitleStyle>
                                <OtherMonthDayStyle ForeColor="Silver"></OtherMonthDayStyle>
                            </asp:calendar></div>


Nu er mit spørgsmål om jeg ikke kan lave så det lag altid vises samme sted i forhold til knappen, liget meget hvor knappen placeres. Dvs. jeg vil undgå at skulle ændre på top og left hvergang jeg flytter knappen.
Avatar billede roenving Novice
02. april 2004 - 13:23 #1
onclick="st=document.getElementById('calDiv1').style;st.left=event.clientX+'px';st.top=event.clientY+'px';st.display='block';"
Avatar billede roenving Novice
02. april 2004 - 13:24 #2
ie-versionen, hvis den skal fungere også med Mozilla osv. skal vi lige finde eventen på en anden måde !-)
Avatar billede c-sharp Nybegynder
02. april 2004 - 14:23 #3
Det er næsten det, men der er et problem for boksen kommer ikke frem samme sted, men bliver styrret at hvor på knappen jeg trykker. Kan man ikke få den til at komme samme sted hver gang, lige meget hvor man trykker?
Avatar billede roenving Novice
02. april 2004 - 14:42 #4
Jo, det kunne man godt, men er det ikke overkill ?-)

For det vil kræve, at du har et skema med alle mulige placeringer af boxen, og så vælger den, som passer ...

-- og det vil jo være en masse forskellige muse-placeringer, som giver mulighed for at placere den et bestemt sted !o]

En relativ simpel løsning kunne være at tænke i et grid på f.eks. 20*20 pixel, og så altid placere den i nederste højre hjørne af den aktuelle celle (hvis øverste venstre hjørne, skal +20 udelades !-)

onclick="st=document.getElementById('calDiv1').style;st.left=(event.clientX+20-event.clientX%20)+'px';st.top=(event.clientY+20-event.clientY%20)+'px';st.display='block';"
Avatar billede c-sharp Nybegynder
02. april 2004 - 14:48 #5
Den kan stadig flytte sig fra side til side, er det en fejl eller kan det ikke blive anderledes?
Avatar billede roenving Novice
02. april 2004 - 14:50 #6
Det ser ud til at det er en kalender-ting, hvor datoer kan få en popup, så har dato-felterne vel en fast størrelse, den kan vi bruge som grid !-)
Avatar billede c-sharp Nybegynder
02. april 2004 - 15:02 #7
Ja det er en kalender som skal fungere på samme måde som i eks. outlook (opgaver), hvor man trykker på en knap for få en kalender hvor i man kan vælge en dato.
Avatar billede roenving Novice
02. april 2004 - 15:05 #8
Hvis din knap kun kan forekomme et sted, så bruger vi knappens størrelse og placering som udgangspunkt, for så kan vi altid sætte den samme sted ...

Er det en ie-only applikation ?-)
Avatar billede c-sharp Nybegynder
02. april 2004 - 15:11 #9
Ja det er en ie-only
Avatar billede roenving Novice
02. april 2004 - 15:36 #10
onclick="st=document.getElementById('minDiv').style;st.left=this.offsetLeft+this.offsetParent.offsetLeft+'px';st.top=(this.offsetTop+this.offsetParent.offsetTop+25)+'px';st.display='block';"

Sådan bør den poppe op 25 px under toppen og left-alignet med knappen ...

Men offsetParent-propertyen skal du måske ikke bruge, det kommer meget an på den måde, du har designet og placeret de omgivende elementer, og vi kan også komme ud for, at der skal findes en masse parents, men det kan relativt lettere løses ved noget position-ting ...
Avatar billede c-sharp Nybegynder
02. april 2004 - 19:59 #11
Nu begynder det jo at ligne noget :-)

Lige en sidste ting, før når kalenderen blev vist, kunne man trykke på knappen igen også forsvandt kalenderen. Kan det laves på dette script?
Avatar billede roenving Novice
02. april 2004 - 20:04 #12
onclick="st=document.getElementById('minDiv').style;st.left=this.offsetLeft+this.offsetParent.offsetLeft+'px';st.top=(this.offsetTop+this.offsetParent.offsetTop+25)+'px';st.display=(st.display!='block')?'block':'none';"

-- jamen så velbekomme '-)
Avatar billede c-sharp Nybegynder
02. april 2004 - 23:33 #13
Så skal du have mange tak for hjælpen!!

Du har været en super hjælp!
Avatar billede roenving Novice
02. april 2004 - 23:58 #14
-- og tak for points ;~}
Avatar billede c-sharp Nybegynder
03. april 2004 - 00:14 #15
Ups, det virker ikke helt.

Jeg har lavet den kalender som en usercontrol i asp.net, nu har jeg prøvet at indsætte denne userkontrol midt på en side, men kalenderen står oppet venstre hjørne. Nu følger den lige pludselig ikke knappen.
Avatar billede roenving Novice
03. april 2004 - 00:21 #16
Hrmm, lyder som om vi har brug for jumpers getPos:

Indsæt dette også og ændr ovenstående:

<script type="text/javascript">
function getPos(elm) {//jumper
    for(var zx=zy=0;elm!=null;zx+=elm.offsetLeft,zy+=elm.offsetTop,elm=elm.offsetParent);
    return {x:zx,y:zy}
}
</script>

onclick="st=document.getElementById('minDiv').style;pos=getPos(this);st.left=pos.x+'px';st.top=(pos.y+25)+'px';st.display=(st.display!='block')?'block':'none';"

Det var den type problemer, jeg hentydede til @ 02/04-2004 15:36:48 ...
Avatar billede c-sharp Nybegynder
03. april 2004 - 00:29 #17
Det er jo kanon, du kan nogle tricks!!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB