Avatar billede hypofysen Nybegynder
23. august 2009 - 10:52 Der er 4 kommentarer og
1 løsning

scrollto problemer

Findes der en nem måde til at få dette script til at scrolle i et div istedet for at scrolle hele skærmen?

window.onload = function() {
    HtinyScrolling.init(); scrollTips.init();
}

function gotoit(target){
    HtinyScrolling.scrollToIt(target);
}

var HtinyScrolling = {
    speed : 5,      //set here the scroll speed: when this value increase, the speed decrease.
    maxStep: 150,    //set here the "uniform motion" step for long distances
    brakeK: 3,        //set here the coefficient of slowing down
    hash:null,       
    currentBlock:null,
    requestedX:0,
    init: function() {
        var lnks = document.getElementsByTagName('a'); 
        for(var i = 0, lnk; lnk = lnks[i]; i++) { 
            if ((lnk.href && lnk.href.indexOf('#') != -1) &&  ( (lnk.pathname == location.pathname) ||
            ('/'+lnk.pathname == location.pathname) ) && (lnk.search == location.search)) { 
            addEvent(lnk,'click',HtinyScrolling.initScroll,false);
            lnk.onclick=function(){return false;} // Safari
            } 
        }   
    },
    getTarget: function(target) {
        while(target.tagName.toLowerCase() != 'a')
            target = target.parentNode;
        return target;
    },
    getElementXpos: function(el){
        var x = 0;
        while(el.offsetParent){ 
            x += el.offsetLeft;   
            el = el.offsetParent;
        }    return x;
    },       
    getScrollLeft: function(){
        if(document.all) return (document.documentElement.scrollLeft) ? document.documentElement.scrollLeft : document.body.scrollLeft;
        else return window.pageXOffset; 
    },   
    getWindowWidth: function(){
        if (window.innerWidth)    return window.innerWidth;
        if(document.documentElement && document.documentElement.clientWidth) return document.documentElement.clientWidth;
    },
    getDocumentWidth: function(){
        if (document.width) return document.width;
        if(document.body.offsetWidth) return document.body.offsetWidth;
    },
    initScroll: function(e){
        var targ; 
        if (!e) var e = window.event;
        if (e.target) targ = e.target;
        else if (e.srcElement) targ = e.srcElement; 
        targ = HtinyScrolling.getTarget(targ);  //a fix by Skid X
        HtinyScrolling.hash = targ.href.substr(targ.href.indexOf('#')+1,targ.href.length);
        HtinyScrolling.currentBlock = document.getElementById(HtinyScrolling.hash); 
        if(!HtinyScrolling.currentBlock) return;
        HtinyScrolling.requestedX = HtinyScrolling.getElementXpos(HtinyScrolling.currentBlock);
        HtinyScrolling.scroll(targ);
        return false;
    },
    scrollToIt: function(targ){ //thanks to Michael Ionita-Ganea
        target = document.getElementById(targ);
        HtinyScrolling.currentBlock = document.getElementById(targ);
        if(!HtinyScrolling.currentBlock) return;
        HtinyScrolling.requestedX = HtinyScrolling.getElementXpos(HtinyScrolling.currentBlock);
        HtinyScrolling.scroll(target);
        return false;
       
    },
    scroll: function(targ) {
        var left  = HtinyScrolling.getScrollLeft();
        if(HtinyScrolling.requestedX > left) { //a fix by Michael Ionita-Ganea
            var endDistance = Math.round((HtinyScrolling.getDocumentWidth() - (left + HtinyScrolling.getWindowWidth())) / HtinyScrolling.brakeK);
            endDistance = Math.min(Math.round((HtinyScrolling.requestedX-left)/ HtinyScrolling.brakeK), endDistance);
            var offset = Math.min(Math.abs(Math.round((HtinyScrolling.requestedX-left)/ HtinyScrolling.brakeK)), HtinyScrolling.maxStep);
        }else {
                var offset = - Math.min(Math.abs(Math.round((HtinyScrolling.requestedX-left)/ HtinyScrolling.brakeK)), HtinyScrolling.maxStep);
        }
        window.scrollTo(left + offset, 0);
        if(Math.abs(left-HtinyScrolling.requestedX) <= 1 || HtinyScrolling.getScrollLeft() == left) {
            HtinyScrolling.hash = null;
        } else     setTimeout(HtinyScrolling.scroll,HtinyScrolling.speed);
    }
}


var scrollTips = {
    dx : null,
    init : function() {   
        if (window.addEventListener) {
        window.addEventListener("DOMMouseScroll", this.mouseScroll, false);
        } else document.attachEvent("onmousewheel", this.mouseScroll);
        var left = document.getElementById('left');
        addEvent(left,'mouseover', function() {this.dx=setInterval('scrollTips.arrowScroll(0)',100);return false;});
        addEvent(left,'mouseout', function() { clearInterval(this.dx); return false;});
        var right = document.getElementById('right');
        addEvent(right,'mouseover', function() {this.dx=setInterval('scrollTips.arrowScroll(1)',100);return false;});
        addEvent(right,'mouseout', function() { clearInterval(this.dx); return false;});
    },
    mouseScroll : function(e) {
        if (!e) var e = window.event;
          var scroll = e.detail ? e.detail * 20 : e.wheelDelta / -20;
        if (scroll>=0 ){ 
        window.scrollBy(80,0);
        } else  window.scrollBy(-80,0) ;
    },   
    arrowScroll: function(val) {
        if(val==1) {
            window.scrollBy(70,0);
        } else {
            window.scrollBy(-70,0)
        }
    }
}


function addEvent( obj, type, fn ) {
    if (obj.addEventListener)
        obj.addEventListener( type, fn, false );
    else if (obj.attachEvent) {
        obj["e"+type+fn] = fn;
        obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
        obj.attachEvent( "on"+type, obj[type+fn] );
    }
}

function removeEvent( obj, type, fn ) {
    if (obj.removeEventListener)
        obj.removeEventListener( type, fn, false );
    else if (obj.detachEvent) {
        obj.detachEvent( "on"+type, obj[type+fn] );
        obj[type+fn] = null;
        obj["e"+type+fn] = null;
    }
}
Avatar billede olebole Juniormester
23. august 2009 - 12:43 #1
<ole>

Glem et øjeblik det script, du viser og forklar, hvad du gerne vil opnå  =)

/mvh
</bole>
Avatar billede hypofysen Nybegynder
23. august 2009 - 13:10 #2
Jeg vil gerne at jeg kan bruge dette galleri, men at det kun er divet med billederne der scroller og ikke som nu både menu og billeder

http://www.webnordica.dk/galleri
Avatar billede olebole Juniormester
23. august 2009 - 13:19 #3
Der er tusinder af galleriscripts 'derude'. Prøv at finde et, der passer til dine ønsker. Svaret på dit spørgsmål er: "Nej, der findes ikke en nem måde"  =)
Avatar billede hypofysen Nybegynder
23. august 2009 - 13:20 #4
det var ellers det script jeg havde fundet der passede bedst.. :(
de fleste andre jeg har fundet scroller nemlig med samme width hele tiden eks. coda-slider
Avatar billede hypofysen Nybegynder
21. november 2009 - 07:33 #5
lukker
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