CSS - tables als button
fleshmark 05.02.2004 - 23:37 820 12
fleshmark
GameDev
|
hab folgendes problem: ich möchte eine tabelle mit einem link mittels css zu einem button umfunktionieren. also einfaches bsp: tabelle mit einem link drin. wenn user mit der maus auf die tabelle fährt, soll sich der hintergrund (und evtl. der rahmen) der zelle ändern. Es soll auch nix herumspringen (zb. tabelle grösser werden oä.) zusätzlich soll das ganze flexibel bleiben, dh. sobald ich die höhe der tabelle ändere soll das ganze auch noch fehlerfrei funktionieren. und für alle browser sollts auch noch gehn  bin bei css noch ganz am anfang und komm auch mit div. tutorials nicht wirklich weiter  hoff ihr könnt mir helfen. edit: erwähnt soll auch noch sein, ich hab bereits schon herumgespielt aber alles was rausgekommen ist - schaut shize aus
|
Rektal
Here to stay
|
Geht nicht "in allen Browsers" mit CSS. Das koennen vermutlich nur Gecko basierte, Opera und vielleicht Safari. Normalerweise sieht das so aus: CSS .actAsButton {
border: 2px solid black;
}
.actAsButton:hover {
border: 2px solid orange;
}
HTML <table class="actAsButton">
<tbody>
<tr>
<td><a href="target.html">This is my link</a></td>
</tr>
</tbody>
</table>
Wie unschwer zu erkennen liegt der "Trick" in der Verwendung der CSS Pseudo-Klasse ":hover"; dank M$ unterstuetzt der IE das aber nicht. Hier kann man sich nur mit Javascript helfen, z.B. <script type="text/javascript">
function onmouseoverTable() {
this.style.border = '2px solid orange';
}
function onmouseoutTable() {
this.style.border = '2px solid black';
}
window.onload = function() {
if (!document.getElementsByTagName) {
return;
}
var tableButtons = document.getElementsByTagName('table');
var i;
for(i = 0; i < tableButtons.length; i++) {
if (tableButtons[i].className == 'actAsButton') {
tableButtons[i].onmouseover = onmouseoverTable;
tableButtons[i].onmouseout = onmouseoutTable;
}
}
}
Ist jetzt nur ausm Kopf geschrieben, aber so gehts prinzipiell.
|
funka
Legend ex-prophet(down below)
|
ist es nicht moeglich den table komplett zu kuebeln und einfach den a wie einen button aussehen zu lassen? maybe noch ein div rundherum
|
da wisna
Big d00d
|
die pseudo-classe :hover funzt beim IE doch.....
zumindest läufts bei mir ohne irgendwelche probleme
|
funka
Legend ex-prophet(down below)
|
afair funkts nur bei a tags obs 6.0 schon bei mehr tags versteht weiss ich jetzt spontan nicht
|
orpheus
in a nutshell
|
afair funkts nur bei a tags obs 6.0 schon bei mehr tags versteht weiss ich jetzt spontan nicht iirc gibt's beim IE ab v6.0 ja einen standards-compliant mode oder irre ich mich da!? Ich persönlich würde wenn's überhaupt nötig ist tables zu verwenden  das Menu als Liste schreiben (das dann in eine Zelle geschissen wird  ) und den Rest CSS machen lassen. also z.B. <ul id="navlist">
<li><a href="#">Maus</a></li>
<li><a href="#">Haus</a></li>
<li><a href="#">Aus</a></li>
</ul>
#navlist
{
width: 200px;
margin-left: 0;
padding-left: 0;
list-style-type: none;
}
#navlist a
{
display: block;
padding: 3px;
width: 160px;
background-color: #036;
border-bottom: 1px solid #eee;
}
#navlist a:link, #navlist a:visited
{
color: #EEE;
text-decoration: none;
}
#navlist a:hover
{
background-color: #369;
color: #fff;
}
Anregungen zum dementsprechenden CSS gibt's bei List-O-Matic
Bearbeitet von orpheus am 06.02.2004, 12:49
|
Mr. Zet
Vereinsmitgliedresident spacenerd
|
CSS (ich weiß, es is ned optimal  ) td { text-align:center; }
.orange { background-color:#FF9000; text-align:center; }
a.menu { width:100%; height:100%; display:block; }
a.menu:link { text-decoration:none; font-weight:bold; color:#000000; }
a.menu:visited { text-decoration:none; font-weight:bold; color:#000000; }
a.menu:hover { text-decoration:none; font-weight:bold; background-color:#FFB100; }
a.menu:active { text-decoration:none; font-weight:bold; background-color:#D45C00; }
HTML (nur eine zelle der menü-tabelle) <td class="orange">
<a class="menu" href="main.htm" target="content">H o m e</a>
</td>
und so sieht das aus -> http://mrzet.randoom.netbrowser-unterschied: im IE bleibt :active solange aktiv, bis ma wo anders hinklickt -> man sieht wo man gerade ist im mozilla (bzw. gecko based) sieht man :active nur solange man die maustaste drückt.
Bearbeitet von Mr. Zet am 06.02.2004, 12:51
|
Murph
Nerd
|
edit: pf, a blödsinn den ich da schreib!  del plz
|
fleshmark
GameDev
|
thx für die replies! @orpheus, mr.zet: lösungen wie eure hätt ich eh schon gehabt, nur hier ist das problem (soweit ich das sehn kann) dass wenn ich die zelle vergrössere, das ganze nicht mehr schön aussieht, weil sich euer background-color nur auf die schrift bzw. den link selbst auswirkt und nicht auf die zelle. hoff das stimmt was ich sag  @rektal: genau javascript wollt ich vermeiden, wenns geht.
|
Rektal
Here to stay
|
wird der film wirklich um so vieles besser wenn man das buch gelesen hat?
Nicht optimal? Das ist ja schlimm  Wenn du ein a.menu zuweist, es hat "text-decoration: none; font-weight: bold;", wird das automatisch (!) fuer die pseudo-klassen vererbst. D.h. fuer den hover, active und visited code brauchst nur die veraenderten Farben setzen und nicht wieder alle Attribute nochmal angeben. That's the cascading part of CSS.
|
Rektal
Here to stay
|
wird der film wirklich um so vieles besser wenn man das buch gelesen hat?
Ah, um das gehts. Solltest du vielleicht gleich sagen. Du kannst dem a-Element sagen, es soll sich wie ein block-Element (z.B. DIV) verhalten, d.h. den ganzen platz (zumindest horizontal) aufbrauchen. Mit der Hoehe ist das so eine Sache. Die Frage ist, warum sollte sich die auf einmal aendern? Beispiele waren im obrigen eigentlich schon, hier nochmal kurz: CSS a {
display: block;
background-color: black;
color: white;
font-weight: bold;
}
a:hover {
background-color: red;
color: yellow;
}
HTML <html>
<body>
<a href="">Foo</a>
<a href="">Bar</a>
</body>
</html>
|
fleshmark
GameDev
|
hm, werd das ganze mit der höhe jetzt mit padding, padding-bottom lösen. danke an alle helfenden
|
Mr. Zet
Vereinsmitgliedresident spacenerd
|
thx rektal für aufklärung
|