Zum Inhalt springen

Feste Breite für GMENU?

Erstellt am 1. April 2004 · 6 Antworten · letzte Antwort am 25. Mai 2004

Tags: Frage

aaalexxx ·

Hallo!

Ich würde meinem GMENU gerne eine feste Breite von 750 Pixeln geben, da es eine 750 Pixel breite Table (mit einem 750 Pixel breiten Kopfbild) komplett füllen soll.

Da die einzelnen Buttons immer verschiedene Breiten haben (Textbreite + X) kann ich das nicht vorher ausrechnen. Bis jetzt habe ich das X immer per Ausprobieren ungefähr angepasst, damit ist das Menü z.B. jetzt eben 752 Pixel breit - zwei zu viel!

Ich dachte, dass ich mittels .max und .min die Maximalbreite/Minimalbreite festlegen kann. Bei .min wird leider nur ein blindgif zusätzlich eingesetzt, welches die Table dehnt. Bei .max wird bei mir nur noch der erste Manüpunkt dargestellt.

Gibt es denn keine Möglichkeit die Gesamtbreite des Menüs festzulegen?

Hier mein Versuch:

temp.mainmenu            = HMENU
temp.mainmenu.entryLevel = 0

temp.mainmenu.wrap     =  <table width="750" border="0" cellpadding="0" cellspacing="0"><tr><td nowrap="nowrap">|</td></tr></table>
temp.mainmenu.1         = GMENU
temp.mainmenu.1.imgNamePrefix = mainmenu
#temp.mainmenu.1.min = 750, 26
temp.mainmenu.1.max = 750, 26
temp.mainmenu.1.NO {
   XY           = [10.w] + 37, 26 
   offset = 0, 18
   backColor = #000000
   reduceColors = 32
   10              = TEXT
   10.text.field = title
   10.align      = center
   10.fontFile   = fileadmin/template/fonts/ROCCB.TTF
   10.fontSize = 14.5
   10.fontColor  = #FFFFFF
   10.niceText  = 1
   10.spacing = 0.7
}

# Rollover pics
temp.mainmenu.1.RO < temp.mainmenu.1.NO
temp.mainmenu.1.RO = 1
temp.mainmenu.1.RO {
   backColor = #FFFFFF
   10.fontColor  = #000000
}

Tausend Dank für jedwede Hilfe!

TW ·
aaalexxx schrieb

Hallo!

Ich würde meinem GMENU gerne eine feste Breite von 750 Pixeln geben, da es eine 750 Pixel breite Table (mit einem 750 Pixel breiten Kopfbild) komplett füllen soll.

Da die einzelnen Buttons immer verschiedene Breiten haben (Textbreite + X) kann ich das nicht vorher ausrechnen. Bis jetzt habe ich das X immer per Ausprobieren ungefähr angepasst, damit ist das Menü z.B. jetzt eben 752 Pixel breit - zwei zu viel!

Ich dachte, dass ich mittels .max und .min die Maximalbreite/Minimalbreite festlegen kann. Bei .min wird leider nur ein blindgif zusätzlich eingesetzt, welches die Table dehnt. Bei .max wird bei mir nur noch der erste Manüpunkt dargestellt.

Gibt es denn keine Möglichkeit die Gesamtbreite des Menüs festzulegen?

Hier mein Versuch:

temp.mainmenu            = HMENU
temp.mainmenu.entryLevel = 0

temp.mainmenu.wrap     =  <table width="750" border="0" cellpadding="0" cellspacing="0"><tr><td nowrap="nowrap">|</td></tr></table>
temp.mainmenu.1         = GMENU
temp.mainmenu.1.imgNamePrefix = mainmenu
#temp.mainmenu.1.min = 750, 26
temp.mainmenu.1.max = 750, 26
temp.mainmenu.1.NO {
   XY           = [10.w] + 37, 26 
   offset = 0, 18
   backColor = #000000
   reduceColors = 32
   10              = TEXT
   10.text.field = title
   10.align      = center
   10.fontFile   = fileadmin/template/fonts/ROCCB.TTF
   10.fontSize = 14.5
   10.fontColor  = #FFFFFF
   10.niceText  = 1
   10.spacing = 0.7
}

# Rollover pics
temp.mainmenu.1.RO < temp.mainmenu.1.NO
temp.mainmenu.1.RO = 1
temp.mainmenu.1.RO {
   backColor = #FFFFFF
   10.fontColor  = #000000
}

Tausend Dank für jedwede Hilfe!

hi
hab mir damals so geholfen, dass ich im html template eien tabelle von der benötigten grösse gebaut habe.....
dann das menü von der breite her anpassen und fertig

cu
thorsten

aaalexxx ·

Hi Thorsten!

Leider löst das nicht mein Problem, denn ich weiß halt vorher einfach nicht, wie breit die einzelnen Menüpunkte werden. Jetzt passt es eben um zwei Pixel nicht (die einzelnen Menüpunkte ergeben zusammen 752 Pixel und Tabelle, sowie Bild sind nur 750 Pixel breit).

Außerdem ist es doch nicht gerade geschickt, wenn man (z.B. bei einer Änderung im Menü, oder viell. bei einer anderen Sprache) immer per Trial and Error die Breite suchen muss?

Aleks.

PS. So in etwa sieht mein Menü aus:

|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|
|                                                       |
|                        IMAGE                          |
|_______________________________________________________|
| menu1 |  menu2  |menu3| menu4 |  menu5  | menu6 |menu7|
JuergenW ·

Hi aaalexxx,

hast Du inzwischen Dein Problem gelöst?
Falls ja, so würde mich die Lösung brennend interessieren.

Danke und Gruß
Jürgen

aaalexxx ·

Hi Jürgen!

Tja, leider scheint es nicht wirklich eine Lösung für dieses Problem zu geben. Man kann einfach dem kompletten Menü keine Maximalbreite zuweisen. Leider.

Ich habe es nun so gelöst:

temp.mainmenu.wrap     =  <table width="750" border="0" cellpadding="0" cellspacing="0"><tr>|</tr></table>
temp.mainmenu.1         = GMENU
temp.mainmenu.1.NO {
   XY           = [10.w]+56, 26 
   maxWidth = 139
   wrap          = <td>|</td>
   backColor = #000000
   10              = TEXT
   10.text.field = title
   10.align      = center
   10.fontFile   = fileadmin/template/fonts/arial.ttf
   10.fontSize = 14
   10.fontColor  = #FFFFFF
   10.niceText  = 1
}

Damit das Menü nun in die 750 Pixel exakt reinpasst muss ich etwas probieren. Dazu deaktiviere ich maxWidth und passe bei XY die Breite so lange an, bis das Menü die exakte Größe hat, bzw. etwas übersteht (sagen wir mal, einen Pixel). Dann suche ich mir auf der Seite das breiteste Element und gebe für maxWidth einen Pixel weniger an. Sollten hier allerdings zwei Elemente die gleiche Breite haben, dann könnte es Schwierigkeiten geben. Aber die Wahrscheinlichkeit ist doch recht gering.

Dieser Vorgang hat leider erhebliche Nachteile, denn, wenn man einen Menüpunkt ändert/hinzufügt/entfernt, dann darf man das ganze Spielchen von neuem beginnen und die Seite siht für ein paar Minuten hässlich aus.

Aus diesem Grunde hatte ich ja auch gedacht, dass so etwas implementiert sei, aber da habe ich mich wohl geirrt. Wäre vielleicht mal eine Idee für Kasper...

Grüße,
Aleks.

JuergenW ·

Habe Deine Lösung übernommen. Vielen Dank!

Wirklich schön ist sie aber nicht. Hat jemand noch eine Idee???

Gruß
Jürgen

aaalexxx ·

Hi!

Tja, da hast Du leider recht: Diese Lösung ist alles andere als schön. Ich werde wohl auch über kurz oder lang ein eigenes php-Skript basteln, welches das dann für mich erledigt. Dann würde das Menü halt nicht von Typo3, sondern von dem eigenen Skript erzeugt, aber was solls. Wird aber wohl noch ein Weilchen dauern. Warum es übrigens so nicht geht: Soweit ich weiß arbeitet der GIFBUILDER einfach ein Element nach dem anderen ab. Von weiteren Elementen weiß er - naturgemäß - nichts. Man müsste eben ein PHP Skript basteln welches a) Alle Menüpunkte in der Schriftbreite erstellt, dann b) errechnet, wie viel Pixel noch übrig sind, bzw. wie viele Pixel das Menü bereits zu breit ist und dann c) Jeden Menüpunkt noch einmal erstellt mit der Schriftbreite + Rest/Anzahl Menüpunkte, bzw. eben die Menüpunkte verkleinert um Rest/Anzahl Menüpunkte.

Alles gaaanz einfach 🙂

Aleks.