Button-Breite??????
Oliver Klinger
Hallo, Leute.
Folgendes Problem:
Ich moechte in einer blinden Tabelle Klick-Buttons anzeigen, deren Aufschreift dynamisch zugewiesen wird und bis zu 20 Zeichen lang sein kann, durchschnittlich jedoch nur 8.
An die Buttons sind 2 Forderungen gestellt:
1.) Sie sollen den Text KOMPLETT anzeigen und
2.) Sollen alle Buttons EINER SPALTE gleich breit sein, wobei die Buttons in der Nachbarspalte ruhig eine andere (fuer diese Spalte jedoch gleiche) Breite haben duerfen.
Ich hab schon 2 Ansaetze ausprobiert:
1.) Ganz "normale" Input-Tags, aber dann hat jeder Button fuer sich eine unterschiedliche Breite (sieht schrecklich aus) oder
2.) Input-Tags mit einem "style"-Attribut, dann sind zwar alle Buttons gleich breit, aber eben ALLE, weil sich dann die blinde Tabelle nicht mehr automatisch an die Textbreite anpasst.
Gibts irgendeine Moeglichkeit, sowas zu loesen, von mir aus auch mit vordefinierten CSS, oder in JavaScript oder in VBScript oder ist sowas von vornherein unmoeglich?
Vielen Dank, Leute.
OLI
Hi,
Gibts irgendeine Moeglichkeit, sowas zu loesen, von mir aus auch mit vordefinierten CSS, oder in JavaScript oder in VBScript oder ist sowas von vornherein unmoeglich?
Du kannst alle Buttons einer Spalte erst mal mit dem selben Text vorbelegen, z.B. "---------- Bitte warten ----------". Dieser sollte natürlich die maximale Länge haben. OnLoad setzt Du dann den "richtigen" Text für die Buttons, bzw. besser in einem JavaScript direkt nach dem letzten Button (ohne Funktion, so daß es sofort ausgeführt wird).
Cheatah
Hallo Oliver!
Eine Frage: Hast du deinen 2. Ansatz mit Netscape getestet?
Denn NS ignoriert Style-angaben zu Breite und Farbe bei <input type="button"...>
Grüße
Thomas
Hallo Nochmal!
Ich habe etwas gestöbert und gefunden:
Die Lösungsidee stammt aus einem alten Forumbeitrag vom 19.10.1998 von Markus Peikert.
Damit kannst du die Breite des Klickbuttons sowohl mit IE, als mit NS bestimmen:
<form>
<input type="button" value="klicken" style="width:550px; height:50px;" WIDTH="550"
HEIGHT="50">
</form>
Die Style-Angaben zu Breite und Höhe werden vom NS ignoriert, WIDTH="..." und
HEIGHT="..." vom MS.
Damit sollte das Problem gelöscht sein.
Grüße
Thomas
Hallo Nochmal!
»» <form>
»» <input type="button" value="klicken" style="width:550px; height:50px;" WIDTH="550"
»» HEIGHT="50">
»» </form>
»» Damit sollte das Problem gelöscht sein.
»» Grüße
»» Thomas
Nope, leider nicht. Denn sobald ich die Style-Angaben verwende (ich moechte es NUR fuer IE optimieren), dann sind die Button-Breiten FEST. Sie sollen sich aber an der Spaltenbreite der Tabelle orientieren! Und die Spaltenbreite wiederum soll sich automatisch dem breitesten auftretenden Text anpassen. Das funktioniert naemlich OHNE Style-Angaben *grmpf*
Nur: ohne Style-Angabe orientiert sich jeder Button ganz allein fuer sich an seiner Aufschrift. Und das sieht dann aus wie Kraut und Rüben!
Die aufschriften entstammen einer Datenbank und können sich dynamisch aendern...
Hallo Oliver
Nope, leider nicht. Denn sobald ich die Style-Angaben verwende (ich moechte es NUR fuer IE optimieren), dann sind die Button-Breiten FEST. Sie sollen sich aber an der Spaltenbreite der Tabelle orientieren!
Hast Du mal probiert: style="width:100%" ?
viele Gruesse
Stefan Muenz
Hallo Oliver
Nope, leider nicht. Denn sobald ich die Style-Angaben verwende (ich moechte es NUR fuer IE optimieren), dann sind die Button-Breiten FEST. Sie sollen sich aber an der Spaltenbreite der Tabelle orientieren!
Hast Du mal probiert: style="width:100%" ?
viele Gruesse
Stefan Muenz
Hallo, Stefan.
Ja, hatte ich auch schon probiert:
Same procedure. Die Tabelle schert sich ab da einen ... um die Textbreite sondern nimmt brav die eingestellte Spaltenbreite.
Gruss
Oliver
Hallo Oliver!
Ja, hatte ich auch schon probiert:
Same procedure. Die Tabelle schert sich ab da einen ... um die Textbreite sondern nimmt brav die eingestellte Spaltenbreite.
Ich habe den Faden verloren!
also: du hast eine Tabelle mit fester Breite, dann hast du in dieser Tabelle Spalten mit fester Breite. In diesen Spalten hast du dann Tabellenzellen in denen du Klickbuttons mit dynamisch zugewiesenen Text definieren möchtest. Ist das in etwa zutreffend?
Nun das folgende Beispiel funktioniert bei mir einwandfrei (NUR MS IE!) alles ist so breit wie es soll und so hoch wie es soll!
<html>
<head>
<title>Untitled</title>
<style type="text/css">
<!--
.lang {
width:100%;
color:red;
background-color:yellow;
font-family:Arial;
font-size:12pt;
font-weight:bold;
font-style:italic;
}
.mittel {
width:100%;
height:100%;
color:lime;
background-color:blue;
font-family:Arial;
font-size:10pt;
font-weight:bold;
font-style:italic;
}
.kurz {
width:100%;
height:100%;
color:black;
background-color:lime;
font-family:Arial;
font-size:8pt;
font-weight:bold;
font-style:italic;
}
-->
</style>
</head>
<body>
<table width="900" border="0" cellpadding="0" cellspacing="0">
<tr align="center">
<td width="500"><input type="button" class="lang" value="ein sehr langer, wirklich langer text-1"></td>
<td width="300"><input type="button" class="mittel" value="ein nicht so langer text-1"></td>
<td width="100"><input type="button" class="kurz" value="ein text-1"></td>
</tr>
<tr align="center">
<td width="500"><input type="button" class="lang" value="lang"></td>
<td width="300"><input type="button" class="mittel" value="mittel"></td>
<td width="100"><input type="button" class="kurz" value="kurz"></td>
</tr>
<tr align="center">
<td width="500"><input type="button" class="lang" value=""></td>
<td width="300"><input type="button" class="mittel" value=""></td>
<td width="100"><input type="button" class="kurz" value=""></td>
</tr>
</table>
</body>
</html>
Die Angabe "height:100%;" kannst du weglassen, (schaut dann witzig aus) aber bei ".lang" dafst du es nicht angeben wenn bei ".mittel" und ".kurz" sie angegeben ist. Wenn du "font-size" überall gleich setzt kann "height:100%" ganz wegbleiben.
Ich habe es natülich etwas übertrieben mit den Farben & Font, aber ich hoffte damit zu zeigen, daß du fast alles machen kannst was du willst.
Lass uns wissen ob es jetzt funktioniert!
Grüße
Thomas
Hi, Thomas.
Ich habe den Faden verloren!
also: du hast eine Tabelle mit fester Breite, dann hast du in dieser Tabelle Spalten mit fester Breite. In diesen Spalten hast du dann Tabellenzellen in denen du Klickbuttons mit dynamisch zugewiesenen Text definieren möchtest. Ist das in etwa zutreffend?
Nun das folgende Beispiel funktioniert bei mir einwandfrei (NUR MS IE!) alles ist so breit wie es soll und so hoch wie es soll!Lass uns wissen ob es jetzt funktioniert!
Ist ein gute Idee, setzt aber voraus, dass ich weiss, ob der lange Text in der LINKEN Spalte steht oder in der RECHTEN. Was ich aber nicht vorher wissen kann, da ich die Beschriftungen aus einer Datenbank auslese.
Der Gag an der Sache ist ja der, dass ein "normales" <td>-Tag, sprich OHNE style, eine WIDTH-Angabe nur dann befolgt, wenn der Text im Fels KUERZER ist als die Spalte breit, wenn der Text aber laenger wird, ignoriert er diese Angabe und macht auch das entsprechende Feld bzw. gleich die GANZE SPALTE breiter. Wenn jedoch irgendwo in der Tabelle eine STYLE-Angabe auftaucht, macht er genau das, was ich mir vorher ja zunutze gemacht hatte, NICHT MEHR, sondern dann haelt er sich ploetzlich an die vorgegebene Spaltenbreite ohne Ruecksicht auf Verluste (im wahrsten Sinn des Wortes :-) )
Tja. Ich hab mich jetzt aber mittlerweile damit abgefunden, dass mein Problem weder mit NS noch mit IE zu lösen sein dürfte. Deswegen hab ich ein Programm geschrieben, das vor dem Aufbau der Tabelle fuer jede Spalte den längsten vorliegenden Text feststellt und dann die Spaltenbreite entsprechend anpasst :-) Also von hinten durch die Brust ins Auge...
Vielen Dank fuer die Hilfsbereitschaft aller User hier im Forum.
Viele Gruesse
Oliver
Hi,
Die aufschriften entstammen einer Datenbank und können sich dynamisch aendern...
wird die Seite entsprechend dynamisch erstellt?
Dann finde doch zunächst den längsten Text heraus, setze diesen als Text für alle Buttons und ändere anschließend per JavaScript die Aufschriften mit document.forms[0].elements[x].value! Funktioniert theoretisch, ob es praktikabel ist mußt Du selbst entscheiden.
Cheatah
Hi,
Die aufschriften entstammen einer Datenbank und können sich dynamisch aendern...
wird die Seite entsprechend dynamisch erstellt?
Dann finde doch zunächst den längsten Text heraus, setze diesen als Text für alle Buttons und ändere anschließend per JavaScript die Aufschriften mit document.forms[0].elements[x].value! Funktioniert theoretisch, ob es praktikabel ist mußt Du selbst entscheiden.Cheatah
Ja, so ähnlich hab ichs jetzt auch gelöst. Allerdings setze ich die Spaltenbreite jetzt dynamisch. Seltsam ist nur, dass es in 90% der Fälle funktioniert und dann plötzlich wieder nicht. Mit dem selben Script, an genau der selben Stelle (am Bildschirm) wos schon 100x geklappt hat. Tja, die Wege des Browsers sind bisweilen unergruendlich.
Gruss
Oliver
»» Hallo Oliver!
Eine Frage: Hast du deinen 2. Ansatz mit Netscape getestet?
Denn NS ignoriert Style-angaben zu Breite und Farbe bei <input type="button"...>Grüße
Thomas
Nein, ich habs mit IE4 getestet.
Gruss
Oliver