Shop-Hilfe.com
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 22.04.2008, 13:49   #1
TP-Newbie
 
Registriert seit: Apr 2008
Raisis macht alles soweit korrekt

Problem mit ypSlideOutMenu


Hallo zusammen,

ich bin der Neue hier und habe gleich mal eine Frage und hoffe, mir kann dabei jemand helfen

Ich würde gerne mit dem ypSlideOutMenu-Script arbeiten, welches auch beispielsweise auf der Seite looki.de angewendet wird. Mit dem Erstellen und Anpassen des Menus habe ich soweit keine Probleme.

Mein Problem ist etwas anderes: die Breite des Menus. Mit allen menu-Punkten komme ich auf eine Breite von etwa 950 Pixeln. Nun ist dies ja mit den gängien Auflösungen ab 1024x768 Pixeln kein Problem. Nur haben einige meiner Besucher (etwa 2 Prozent laut Google-Analytics) eine Bildschirmauflösung von 800x600 Pixeln. Bei dieser Auflösung verschieben sich bei mir die ganzen Unterpunkte, da ich deren Position ausgehend von der Mitte des Bildschirms in Pixeln angeben muss.

Da ich mit Javascript noch nicht die großen Erfahrungen habe, weiß ich nicht so wirklich, wie/ob ich das Script ändern kann, sodass ich dieses Problem mit dem Verschieben umgehen kann. Ich habe mir schon die Codes von looki.de angeschaut und auch testweise einfach mal kopiert, um deren Änderungen zu verstehen, doch bei mir ruft das nur Fehelr hervor, und zwar dass die Menus, die sich eigentlich ausklappen sollen, untereinander aufbauen.

Hier habe ich noch die beiden Scripte, in der Hoffnung, dass da jemand von euch sieht, was man ändern kann/sollte, damit das Problem behoben wird:

PHP-Code:
/*****************************************************
 * ypSlideOutMenu
 * 3/04/2001
 * 
 * a nice little script to create exclusive, slide-out
 * menus for ns4, ns6, mozilla, opera, ie4, ie5 on 
 * mac and win32. I've got no linux or unix to test on but 
 * it should(?) work... 
 *
 * --youngpup--
 *****************************************************/

ypSlideOutMenu.Registry = []
ypSlideOutMenu.aniLen 250
ypSlideOutMenu
.hideDelay 400
ypSlideOutMenu
.minCPUResolution 10

// constructor
function ypSlideOutMenu(iddirlefttopwidthheight)
{
    
this.ie  document.all 0
    this
.ns4 document.layers 0
    this
.dom document.getElementById 0

    
if (this.ie || this.ns4 || this.dom) {
        
this.id             id
        this
.dir         dir
        this
.orientation dir == "left" || dir == "right" "h" "v"
        
this.dirType     dir == "right" || dir == "down" "-" "+"
        
this.dim         this.orientation == "h" width height
        this
.hideTimer     false
        this
.aniTimer     false
        this
.open         false
        this
.over         false
        this
.startTime     0

        
// global reference to this object
        
this.gRef "ypSlideOutMenu_"+id
        
eval(this.gRef+"=this")

        
// add this menu object to an internal list of all menus
        
ypSlideOutMenu.Registry[id] = this

        
var document

        
var strCSS '<style type="text/css">';
        
        
strCSS += '#' this.id 'Container { text-align:left; visibility:hidden; '
        
strCSS += 'left:' left 'px; '
        
strCSS += 'top:' top 'px; '
        
strCSS += 'overflow:hidden; z-index:1000; }'
        
strCSS += '#' this.id 'Container, #' this.id 'Content { position:absolute; '
        
strCSS += 'width:' width 'px; '
        
strCSS += 'height:' height 'px; '
        
strCSS += '}'
        
strCSS += '</style>';

        
d.write(strCSS)

        
this.load()
    }
}

ypSlideOutMenu.prototype.load = function() {
    var 
document
    
var lyrId1 this.id "Container"
    
var lyrId2 this.id "Content"
    
var obj1 this.dom d.getElementById(lyrId1) : this.ie d.all[lyrId1] : d.layers[lyrId1]
    if (
obj1) var obj2 this.ns4 obj1.layers[lyrId2] : this.ie d.all[lyrId2] : d.getElementById(lyrId2)
    var 
temp

    
if (!obj1 || !obj2window.setTimeout(this.gRef ".load()"100)
    else {
        
this.container    obj1
        this
.menu        obj2
        this
.style        this.ns4 this.menu this.menu.style
        this
.homePos    = eval("0" this.dirType this.dim)
        
this.outPos        0
        this
.accelConst    = (this.outPos this.homePos) / ypSlideOutMenu.aniLen ypSlideOutMenu.aniLen 

        
// set event handlers.
        
if (this.ns4this.menu.captureEvents(Event.MOUSEOVER Event.MOUSEOUT);
        
this.menu.onmouseover = new Function("ypSlideOutMenu.showMenu('" this.id "')")
        
this.menu.onmouseout = new Function("ypSlideOutMenu.hideMenu('" this.id "')")

        
//set initial state
        
this.endSlide()
    }
}
    
ypSlideOutMenu.showMenu = function(id)
{
    var 
reg ypSlideOutMenu.Registry
    
var obj ypSlideOutMenu.Registry[id]
    
    if (
obj.container) {
        
obj.over true

        
// close other menus.
        
for (menu in reg) if (id != menuypSlideOutMenu.hide(menu)

        
// if this menu is scheduled to close, cancel it.
        
if (obj.hideTimer) { reg[id].hideTimer window.clearTimeout(reg[id].hideTimer) }

        
// if this menu is closed, open it.
        
if (!obj.open && !obj.aniTimerreg[id].startSlide(true)
    }
}

ypSlideOutMenu.hideMenu = function(id)
{
    
// schedules the menu to close after <hideDelay> ms, which
    // gives the user time to cancel the action if they accidentally moused out
    
var obj ypSlideOutMenu.Registry[id]
    if (
obj.container) {
        if (
obj.hideTimerwindow.clearTimeout(obj.hideTimer)
        
obj.hideTimer window.setTimeout("ypSlideOutMenu.hide('" id "')"ypSlideOutMenu.hideDelay);
    }
}

ypSlideOutMenu.hide = function(id)
{
    var 
obj ypSlideOutMenu.Registry[id]
    
obj.over false

    
if (obj.hideTimerwindow.clearTimeout(obj.hideTimer)
    
    
// flag that this scheduled event has occured.
    
obj.hideTimer 0

    
// if this menu is open, close it.
    
if (obj.open && !obj.aniTimerobj.startSlide(false)

}

ypSlideOutMenu.prototype.startSlide = function(open) {
    
this[open "onactivate" "ondeactivate"]()
    
this.open open
    
if (openthis.setVisibility(true)
    
this.startTime = (new Date()).getTime()    
    
this.aniTimer window.setInterval(this.gRef ".slide()"ypSlideOutMenu.minCPUResolution)
}

ypSlideOutMenu.prototype.slide = function() {
    var 
elapsed = (new Date()).getTime() - this.startTime
    
if (elapsed ypSlideOutMenu.aniLen)
    {
        
        
this.endSlide()
    }
    else {
        var 
Math.round(Math.pow(ypSlideOutMenu.aniLen-elapsed2) * this.accelConst)
        if (
this.open && this.dirType == "-")        = -d
        
else if (this.open && this.dirType == "+")    = -d
        
else if (!this.open && this.dirType == "-")    = -this.dim d
        
else                                        this.dim d

        this
.moveTo(d)
    }
}

ypSlideOutMenu.prototype.endSlide = function() {
    
this.aniTimer window.clearTimeout(this.aniTimer)
    
this.moveTo(this.open this.outPos this.homePos)
    if (!
this.openthis.setVisibility(false)
    if ((
this.open && !this.over) || (!this.open && this.over)) {
        
this.startSlide(this.over)
    }
        
}

ypSlideOutMenu.prototype.setVisibility = function(bShow) { 
    var 
this.ns4 this.container this.container.style
    s
.visibility bShow "visible" "hidden"
}
ypSlideOutMenu.prototype.moveTo = function(p) { 
    
this.style[this.orientation == "h" "left" "top"] = this.ns4 "px"
}
ypSlideOutMenu.prototype.getPos = function(c) {
    return 
parseInt(this.style[c])
}

// events
ypSlideOutMenu.prototype.onactivate    = function() { }
ypSlideOutMenu.prototype.ondeactivate    = function() { } 
PHP-Code:
// the number you pass to initLeft doesn't matter since it will get
        // changed onactivate
        
var myMenu1 = new ypSlideOutMenu("menu1""down", -100027180200)
        var 
myMenu2 = new ypSlideOutMenu("menu2""down", -100027180400)
        var 
myMenu3 = new ypSlideOutMenu("menu3""down", -100027180200)
        var 
myMenu4 = new ypSlideOutMenu("menu4""down", -100027180200)
        var 
myMenu5 = new ypSlideOutMenu("menu5""down", -100027180400)
        var 
myMenu6 = new ypSlideOutMenu("menu6""down", -100027180200)
        var 
myMenu7 = new ypSlideOutMenu("menu7""down", -100027180200)
        var 
myMenu8 = new ypSlideOutMenu("menu8""down", -100027180200)
        var 
myMenu9 = new ypSlideOutMenu("menu9""down", -100027180200)
        var 
myMenu10 = new ypSlideOutMenu("menu10""down", -100027180200)
        
        
// for each menu, we set up hte onactivate event to call repositionMenu with the amount offset from center, in pixels
        
myMenu1.onactivate = function() { repositionMenu(myMenu1, -512); }
        
myMenu2.onactivate = function() { repositionMenu(myMenu2, -448); }
        
myMenu3.onactivate = function() { repositionMenu(myMenu3, -373); }
        
myMenu4.onactivate = function() { repositionMenu(myMenu4, -298); }
        
myMenu5.onactivate = function() { repositionMenu(myMenu5, -165); }
        
myMenu6.onactivate = function() { repositionMenu(myMenu6, -55); }
        
myMenu7.onactivate = function() { repositionMenu(myMenu72); }
        
myMenu8.onactivate = function() { repositionMenu(myMenu895); }
        
myMenu9.onactivate = function() { repositionMenu(myMenu9170); }
        
myMenu10.onactivate = function() { repositionMenu(myMenu10239); }

    
// this function repositions a menu to the speicified offset from center
        
function repositionMenu(menuoffset)
        {
      
// the new left position should be the center of the window + the offset
            
var newLeft getWindowWidth() / offset;

      
// setting the left position in netscape is a little different than IE
            
menu.container.style menu.container.style.left newLeft "px" menu.container.left newLeft;
        }
         
    
// this function calculates the window's width - different for IE and netscape
        
function getWindowWidth()
        {
            return 
window.innerWidth window.innerWidth document.body.offsetWidth;
        } 

Ich hoffe, irgendjemand weiß Rat. Gegoogelt habe ich schon, das Forum habe ich ebenfalls schon durchsucht, aber nichts passendes gefunden.
Raisis ist offline   Mit Zitat antworten
Linktipp

Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > HTML Puristen > Javascript
Problem mit ypSlideOutMenu Problem mit ypSlideOutMenu
« Layer-"PopUp" mit Cookie? Wie kann ich altes PopUp Script anpassen? | Wert aus einem Input Feld löschen »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:07 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 RC7 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67