Antworten auf deine Fragen:
Neues Thema erstellen

jquery Scrollviewer scrollt nur vertikal

susiH

Aktives Mitglied

Hallo,

ich habe mal wieder ein Problem bei einer Website.

Folgendes habe ich vor. Ich will eine Karte auf einer Website einbauen. Die Karte ist 2000 x 1000px groß. der angezeigte Ausschnitt 700 x 500 px. Nun will ich, dass man mit der Maus in die Karte klickt und sich so der Kartenausschnitt verschieben lässt. Dazu hab ich auch schon ein tolles script mit jquery gefunden, der sogar funktioniert aber einen Haken hat. Die Karte lässt sich nur vertikal verschieben und nicht horizontal.

ich habe den code aus dem skript mal hier rein kopiert zur Fehleranalyse :motz:

PHP:
(function () {
    function ScrollView() { this.initialize.apply(this, arguments) }
    ScrollView.prototype = {
        initialize: function (container, config) {
                // setting cursor.
                var gecko = navigator.userAgent.indexOf("Gecko/") !== -1;
                var opera = navigator.userAgent.indexOf("Opera/Mac OS/Mac OS") !== -1;
                var mac = navigator.userAgent.indexOf("Mac OS") !== -1;
                if (opera) {
                    this.grab = "default";
                    this.grabbing = "move";
                } else if (!(mac && gecko) && config) {
                    if (config.grab) {
                       this.grab = "url(\"" + config.grab + "\"),default";
                    }
                    if (config.grabbing) {
                       this.grabbing = "url(" + config.grabbing + "),move";
                    }
                } else if (gecko) {
                    this.grab = "-moz-grab";
                    this.grabbing = "-moz-grabbing";
                } else {
                    this.grab = "default";
                    this.grabbing = "move";
                }
                
                // Get container and image.
                this.m = $(container);
                this.i = this.m.children().css("cursor", this.grab);
                
                this.isgrabbing = false;
                
                // Set mouse events.
                var self = this;
                this.i.mousedown(function(e) {
                        self.startgrab();
                        this.xp = e.pageX;
                        this.yp = e.pageY;
                        return false;
                }).mousemove(function(e) {
                        if (!self.isgrabbing) return true;
                        self.scrollTo(this.xp - e.pageX, this.yp - e.pageY);
                        this.xp = e.pageX;
                        this.yp = e.pageY;
                        return false;
                })
                .mouseout(function(){ self.stopgrab() })
                .mouseup(function(){ self.stopgrab() })
                .dblclick(function(){
                        var _m = self.m;
                        var off = _m.offset();
                        var dx = this.xp - off.left - _m.width() / 2;
                        if (dx < 0) {
                                dx = "+=" + dx + "px";
                        } else {
                                dx = "-=" + -dx + "px";
                        }
                        var dy = this.yp - off.top - _m.height() / 2;
                        if (dy < 0) {
                                dy = "+=" + dy + "px";
                        } else {
                                dy = "-=" + -dy + "px";
                        }
                        _m.animate({ scrollLeft:  dx, scrollTop: dy },
                                "normal", "swing");
                });
                
                this.centering();
        },
        centering: function(){
                var _m = this.m;
                var w = this.i.width() - _m.width();
                var h = this.i.height() - _m.height();
                _m.scrollLeft(w / 2).scrollTop(h / 2);
        },
        startgrab: function(){
                this.isgrabbing = true;
                this.i.css("cursor", this.grabbing);
        },
        stopgrab: function(){
                this.isgrabbing = false;
                this.i.css("cursor", this.grab);
        },
        scrollTo: function(dx, dy){
                var _m = this.m;
                var x = _m.scrollLeft() + dx;
                var y = _m.scrollTop() + dy;
                _m.scrollLeft(x).scrollTop(y);
        }
    };
    
    jQuery.fn.scrollview = function(config){
        return this.each(function(){
            new ScrollView(this, config);
        });
    };
})(jQuery);

Da ich dieser Programmiersprache kaum mächtig bin, finde ich auch keinen Fehler.

Danke schon mal an euch im Voraus für eure Mühen...
 

Duddle

Posting-Frequenz: 14µHz

AW: jquery Scrollviewer scrollt nur vertikal

Ich vermute den Fehler in deiner Implementierung bzw. dem Kontext. Das Script ist sehr wahrscheinlich besser getestet als dein Versuch es einzubauen. Du solltest also, falls möglich, mal auf deine Karte verlinken.

Ansonsten würde ich auf Draggable aus der jQuery UI-Bibliothek und verweisen, in dem jemand so ziemlich genau das was du vorhast umsetzen will.


Duddle
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.476
Mitglieder
67.559
Neuestes Mitglied
hanuta
Oben