Avatar billede runeneesgaard Nybegynder
18. februar 2013 - 20:52 Der er 11 kommentarer og
1 løsning

Bevægelig if/else boks med varierende størrelse

Hej!

Jeg har en boks, som (alt efter, hvor stort browservinduet er) kan have 4 forskellige bredter (den er 100% høj).

Jeg har en knap i venstre side, som skal trigge denne boks. Jeg vil gerne kunne:

Trykke på denne knap, så boksen slider frem fra venstre (hvor den er gemt udenfor browservinduet) og ind til syne. Hvor langt den skal ind, er afhængigt af, hvilken størrelse, boksen har. Lad os sige, den er 500px bred ved en pågældende browserstørrelse. Her skal den så gå fra left: -500px til left: 500px (eller hvordan man nu skal skrive det).

Når denne boks så er inde i syne, skal den samme knap ved endnu et tryk, gemme boksen væk igen, altså den modsatte bevægelse.

Jeg tænker, at det er noget med at finde ud af, om boksen er ude eller ej, for at kunne gøre disse to ting med samme knap, men jeg kan ikke finde ud af at få det skrevet, så det virker. Jeg har også kigget på "toggle"-funktionen, men den fungerer ikke rigtig for mig og den giver mig ikke helt de muligheder, jeg gerne vil have (f.eks. kunne jeg også godt tænke mig, at indeholdet i denne boks, som skal komme frem, skal kunne komme frem lidt forskudt af boksen, men i første omgang er det ikke så vigtigt).

Håber, jeg har forklaret mig ordentligt!
Avatar billede olebole Juniormester
18. februar 2013 - 23:04 #1
<ole>

Du skal nok først forholde dig til dine [url=http://www.eksperten.dk/list/aabnespoergsmaal/runeneesgaard]åbne tråde[/div]  *o)

Dernæst skal du nok forklare, hvad det er, du skal bruge. Du skriver, du ikke kan bruge 'toggle' (går udfra, du taler om jQuery-metoden), men du er nødt til at fortælle præcist, hvorfor du ikke kan bruge den

/mvh
</bole>
Avatar billede olebole Juniormester
18. februar 2013 - 23:05 #2
- prøver igen  =)

... åbne tråde
Avatar billede runeneesgaard Nybegynder
19. februar 2013 - 00:07 #3
Jeg ved ikke, hvordan du fandt dem, jeg kan kun se én åben tråd (som jeg så også burde have lukket), når jeg trykker på mine indlæg. Men jeg kan se dem via dit link og de er lukket nu :)

Ja, det glemte jeg at sige, det er jQuery, jeg snakker om. Jeg ved ikke helt, hvorfor toggle ikke virker, men den har ikke reageret, som ventet, jeg har prøvet mange forskellige koder, som jeg har forsøgt at Google mig frem til. Ydermere kunne jeg godt tænke mig at have lidt kontrol over både animationen ind og animationen ud, så animationen ud (f.eks.) kunne gå hurtigere end den ind.

Derfor kunne jeg godt tænke mig at have kontrol over både animationen ind og animationen ud og være i stand til at sætte dem i gang med den samme knap.

Jeg beklager, hvis mine forklaringer er lidt vage, jeg gør mit bedste :)
Avatar billede olebole Juniormester
19. februar 2013 - 00:55 #4
Prøv at kikke på jQuery's Effects - ikke mindst animate
Avatar billede runeneesgaard Nybegynder
19. februar 2013 - 14:41 #5
Jeg har været inde på den side før og kigget på .animation, men det er stadig ikke lykkes mig at få formuleret noget kode, som virker.

Men tak for linket ellers.
Avatar billede olebole Juniormester
19. februar 2013 - 15:10 #6
Der er ellers masser af virkende eksempler på siden, så det burde ikke være svært at få noget til at fungere. Du må nok lægge et link til siden, så vi kan se, hvad koden skal virke i
Avatar billede runeneesgaard Nybegynder
19. februar 2013 - 18:33 #7
Det tætteste, jeg er kommet, kan ses, hvis man klikker på den sorte bjælke med @'et på ude til venstre på testsiden her: www.runeneesgaard.dk/wauw :)

Men som det kan ses, så resizer den boksen istedet for at flytte den og jeg har ingen kontrol over, hvordan bevægelsen tilbage igen skal være. Den jQuery, jeg har brugt, ser sådan her ud:


$('#about').click(function(event) {
    $('#about_box').stop().animate({
        top: '0px',
        width: 'toggle'
    }, 400, 'swing');
   
    setTimeout(function() {
      $('#image_profile').stop().animate({
        top: '0px',
        width: 'toggle'
        }, 400, 'swing');
    }, 150);

});

$('#about_box').hide();
$('#image_profile').hide();
Avatar billede olebole Juniormester
19. februar 2013 - 19:27 #8
Det kan vel være ligegyldigt, om containeren resizes eller flyttes. Sætter du en fast bredde på indholdet, kan ingen i denne verden se, containeren resizes.

Så vidt jeg kan se, har du masser af kontrol over animationen - både frem og tilbage. Hvad synes du, du mangler kontrol over?
Avatar billede runeneesgaard Nybegynder
21. februar 2013 - 09:37 #9
Nej, det kan det ikke, for man kan godt se, om ting bliver "revealed" eller flyttet, især, hvis vi snakker om en række add-this-ikoner, som f.eks. sidder ude i højre del af boksen.

Derudover kan jeg ikke umiddelbart se, at jeg har kontrol over bevægelsen, når boksen skjules igen, hvis jeg nu eksempelvis ville have den til at gå hurtigere ind end den går ud, men det er meget muligt, at det er mig, som tager fejl?
Avatar billede olebole Juniormester
21. februar 2013 - 15:45 #10
"Nej, det kan det ikke, for man kan godt se, om ting bliver "revealed" eller flyttet, især, hvis vi snakker om en række add-this-ikoner, som f.eks. sidder ude i højre del af boksen."

Nej, ikke hvis du gør, som jeg skriver: Sæt en fast bredde på indholdet  =)

Jeg tvivler på, du har misforstået dokumentationen - ligesom jeg tvivler på, du har læst den. Med animate har du jo både duration, easing og specialEasing til rådighed, hvilket er mere, end du beder om
Avatar billede runeneesgaard Nybegynder
21. februar 2013 - 18:00 #11
Arh, okay, beklager, jeg kan godt se, hvad du mener nu. Men det, som jeg oprindelig efterspurgte, hvor man man tjekke, om boksen er inde eller ude, fik jeg langt om længe formuleret mig frem til:

$(document).ready(function() {
   
    var itemWidth = $("#about_box").outerWidth();
       
    var itemOut = false;
   
    $("#about").click(function(){
       
        var value1 = 30;
        var value2 = -itemWidth;
       
        if (itemOut == false) {
            $("#about_box").stop();
            $("#about_box").animate({left: value1}, 350);
            itemOut= true;
        } else {
            $("#about_box").stop()
            $("#about_box").animate({left: value2}, 150);
            itemOut = false;
        }
    });
});

Jeg synes personligt, at denne løsning fungerer bedst, men du har ret i, at "togglingen" også ville kunne bruges. Og tak for svarene, smid gerne et svar, hvis du vil have nogle point.
Avatar billede olebole Juniormester
21. februar 2013 - 18:50 #12
Det kommer lidt anpå, hvad du vil vide. Koden siger ikke, om boksen er ude eller inde - men om den er ude/på vej ud eller inde/på vej ind  =)

Vil du vide, om den er ude eller inde, sætter du variablen på complete.

Ellers tak, jeg samler ikke point. Du accepterer bare dit eget svar, så tråden lukkes  =)
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