ERLEDIGT
JA
JA
ANTWORTEN
20
20
ZUGRIFFE
11284
11284
EMPFEHLEN
-
Hallo,
ich steh vor einem Problem beim Coden eines Kontaktformulars.
Die Idee ist aus den langweiligen Standardschaltflächen eine etwas ansprechendere Variante zu erzielen.
Es stellt kein Problem dar, die einzelnen inputs, textareas und co. optisch zu gestalten und zu positionieren (z.b feiner Rand statt dem klobigen, oder was auch immer).
Nun aber zum eigentlichen Problem:
Ich möchte, dass sich die Hintergrundgrafik ändert, wenn ein User das Feld "aktiviert".
Ist dies nur mit CSS möglich?
Eine Lösung der Art (onmouseover="...", onkeypress="...", onfocus="..." und co.) scheiden aus, da diese auf Javascript beruhen. Ich möchte die Seite aber ohne! JS funktional und optisch "sauber" halten.
3 Zustände:
1) Hintergrundbild des Inputs vorhanden
2) User "aktiviert" das Feld (durch "keypress", a:active oder was auch immer) -> Hintergrundbild verschwindet bzw. wird weiss (gesamte Fläche)
3) Wenn der User etwas eingegeben hat bleibt die Hintergrundgrafik auf weiss
-> wenn er nichts eingegeben hat (und das Feld wieder verlässt)ändert sich die Grafik wieder auf den im Pkt. 1) genannten Hintergrund
Alternativ kann Pkt 3) auch auf dem weissen Hintergrund von Pkt 2 bleiben (was die Sache wohl deutlich vereinfacht bzw. überhaupt mit CSS realisierbar macht
)
Hat jemand ne Idee oder ein Link mit einem Lösungsvorschlag?
Grüsse
-
Meines Wissens ist das nicht mit CSS alleine möglich.
Da es sich aber um ein rein optisches Feature handelt, welches bei Abwesenheit die Verwendung der Seite nicht einschränkt, halte ich JavaScript für ein "zulässiges" Mittel.
Gruß hpvwWarum gibt (fast) keiner im Datenbankforum an, welches DBMS er benutzt?
Ich gehe im Zweifelsfall ohne Nachfrage von MySQL > 4.1 i.V.m. PHP aus.
Gewöhnt euch bitte auch an, die Fehlermeldung von mysql_error() zu posten.
-
hab leider schon mit dieser Antwort gerechnet
Rein "theoretisch" müsste es machbar sein, wenn das Input-Feld Hover-Eigenschaften (und damit auch a.active) annehmen würde.
Hab auch schon versucht, den Input in ein div zu packen und dieses zu ändern, doch leider kann man ein div nur bei einem Link verändern
-> "toten" Link eingefügt <a href="#"></a> und gehofft auf diesem Weg zu den Hover-Eigenschaften zu gelangen, doch leider hat es auch nicht funktioniert.
... aber therotisch
-
23.11.05 14:48 #4
Probiers mal so:
HTML-Code:<input type="text" class="blubb">Edit:Klappt aber auf jeden Fall nicht im IE, der kennt :active nur bei a.Code :1 2 3
.xyz:active{ background-color=#0060FF; }
-
Ich muss das mal teilweise zurücknehmen.
Mit focus kann man zumindest das gerade editierte Feld hervorheben. Im IE funktioniert das natürlich nicht.
Hier ein Beispiel:Mit Attributselektoren zum value-Attribut hätte ich gedacht, lässt sich noch mehr machen, aber das wollte nicht so richtig.HTML-Code:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" /> <title>Eingabefelder mit wechselndem Hintergund</title> <style type="text/css" media="screen"> .bgChanging { color:#000; background:#fff; border:1px #363 solid; } .bgChanging:focus { color:#000; background:#cfc; } </style> </head> <body> <h1>Eintrag</h1> <div> <form action="./send.php" method="post"> <p> <input type="text" name="title" class="bgChanging" /> </p> <p> <textarea name="message" class="bgChanging" cols="40" rows="10"></textarea> </p> <p> <input name="send" type="submit" value="Senden" /> </p> </form> </div> </body> </html>
Gruß hpvwWarum gibt (fast) keiner im Datenbankforum an, welches DBMS er benutzt?
Ich gehe im Zweifelsfall ohne Nachfrage von MySQL > 4.1 i.V.m. PHP aus.
Gewöhnt euch bitte auch an, die Fehlermeldung von mysql_error() zu posten.
-
Ihr bringt den Stein wieder ins Rollen
War eben auf der Suche nach einem Hack für den IE mit seinem Problem die Hovereigenschaften nur dem a - Tag zu "gönnen". Und ich wurde fündig
http://www.xs4all.nl/~peterned/csshover.html
Damit scheint es möglich allen! Elementen seine Hover-Eigenschaften zu geben (was ja in FF schon länger ging).
Aber dennoch funktioniert das Element :focus nicht. Oder mach ich irgendwas falsch?
Laut deren "Anleitung":
#inputfeld:focus {
background-color: green; }
und die Einbindung von Version 2.01.050927 (1.41 and :focus) einbinden.
body {
behavior: url(csshover2.htc);
}
mit hover klappt es, aber nicht mif focus.. vllt. ist es auch noch ein "Bug" der aktuellen Version.
Aber hab mich doch eben sehr über das hilfreiche *.htc gefreut
Oder funktioniert es bei jemand?
@hpvw:
Hab in deinem Code das *.htc mal eingebunden, Doch :focus funktioniert lieder nicht, aber das mouseover schon... komisch
-
23.11.05 16:33 #7Maik Tutorials.de GastzugangDer von dir genannte Behavior-Hack mit der csshover2.htc beruht aber auf Javascript.
Zitat von Rexo
Zitat von csshover2.htc
Geändert von Maik (23.11.05 um 16:54 Uhr)
-
Hi,
ist das Skript wirklich in Javascript geschrieben?
Es taucht der Tag "language="JavaScript" type="text/JavaScript"" nicht auf, und wenn ich im Browser Javascript manuell deaktiviere funktioniert das Skript weiterhin.
Grüsse,
Rexo
-
23.11.05 19:12 #9Maik Tutorials.de Gastzugang
In dem <script> -Element fehlen zwar die Attribute language='JavaScript' und type='text/javascript', aber die Syntax erinnert doch sehr an Javascript
-
Das unsichtbare Javascript
-
wenn ich im Browser Javascript manuell deaktiviere funktioniert das Skript weiterhin.
Hab mich ein wenig über htc (HTML Component) schlauch gemacht.
Ein paar Fakten:
- "Limitation
At present, only IE 5.0 or later browsers support this HTC technology. Microsoft is still waiting for World Wide Web Consortium adoption. So, to successfully deploy this control on a Web site, a browser detection routine is required to ensure the user is running a version of IE 5.0 or later before launching the components. "
- mit JS deaktivert, funktioniert das Skript weiterhin
-Introduced in Internet Explorer 5, HTCs provide a simple mechanism to implement DHTML behaviors in script. An HTC file is nothing but an HTML file, saved with an .htc extension, that contains scripts and a set of HTC-specific custom elements that expose properties, methods, and events that define the component.
Ein paar Links:
http://msdn.microsoft.com/library/de...o/creating.asp
http://msdn.microsoft.com/library/de...s/overview.asp
Nun zurück zu meinem Problem:
Funktioniert bei jemand die :focus-Eigenschaft für ein beliebiges Element mit der obigen *.htc Erweiterung?
Grüsse,
Rexo
-
Probier mal Folgendes, um den Elementen temporär die Klasse „foobar“ zuzuweisen:
Ist bisher jedoch ungetestet.Code :1 2 3 4 5 6 7 8 9 10 11
window.onload = function() { var inputElements = document.getElementsByTagName("input"); for(var i=0; inputElements.length; i++) { var inputType = inputElements[i].getAttribute("type"); if( !inputType || inputType.toLowerCase() != "text" || inputType.toLowerCase() != "password" ) { continue; } inputElements[i].onfocus = new Function("this.className += ' foobar'"); inputElements[i].onblur = new Function("this.className = this.className.replace(/\bfoobar\b/s, '')"); } }Markus Wulftange
-
Hi Gumbo,
hab deinen Code direkt im body-Bereich eingefügt.
<body hier_steht_dein_Code >
Ich hab das htc-File als behavior behalten und dein Code eingefügt - hat aber nicht funktioniert, oder hab ich dich falsch verstanden?
Grüsse,
Rexo
PS: Ich hab das Testfile von hpvw mit deinem Code + htc-File mal zu einem neuen File zusammengefasst. So kann jeder "schneller" experimentieren
Code :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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" /> <title>Eingabefelder mit wechselndem Hintergund</title> <style type="text/css" media="screen"> .bgChanging { color:#000; background:#fff; border:1px #363 solid; } .bgChanging:focus { color:#000; background:#cfc; } [b] img, div { behavior: url(csshover2.htc) }[/b] </style> </head> <body [i]window.onload = function() { var inputElements = document.getElementsByTagName("input"); for(var i=0; inputElements.length; i++) { var inputType = inputElements[i].getAttribute("type"); if( !inputType || inputType.toLowerCase() != "text" || inputType.toLowerCase() != "password" ) { continue; } inputElements[i].onfocus = new Function("this.className += ' foobar'"); inputElements[i].onblur = new Function("this.className = this.className.replace(/\bfoobar\b/s, '')"); } } [/i] > <h1>Eintrag</h1> <div> <form action="./send.php" method="post"> <p> <input type="text" name="title" class="bgChanging" /> </p> <p> <textarea name="message" class="bgChanging" cols="40" rows="10"></textarea> </p> <p> <input name="send" type="submit" value="Senden" /> </p> </form> </div> </body> </html>
PS: csshover2.htc kann man sich hier herunterladen
http://www.xs4all.nl/~peterned/htc/csshover2.htc
-
24.11.05 19:16 #14Maik Tutorials.de Gastzugang
Wenn du Gumbos Lösungsvorschlag verwenden willst, dann solltest du den Script-Code in einem <script> -Element notieren:
HTML-Code:<script type="text/javascript"> window.onload = function() { var inputElements = document.getElementsByTagName("input"); for(var i=0; inputElements.length; i++) { var inputType = inputElements[i].getAttribute("type"); if( !inputType || inputType.toLowerCase() != "text" || inputType.toLowerCase() != "password" ) { continue; } inputElements[i].onfocus = new Function("this.className += ' foobar'"); inputElements[i].onblur = new Function("this.className = this.className.replace(/\bfoobar\b/s, '')"); } } </script>
-
Hab den Code verbessert:
Code :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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" /> <title>Eingabefelder mit wechselndem Hintergund</title> <style type="text/css" media="screen"> .bgChanging { color:#000; background:#fff; border:1px #363 solid; } .bgChanging:focus { color:#000; background:#cfc; } img, div { behavior: url(csshover2.htc) } </style> <script type="text/javascript"> window.onload=function() { var inputElements = document.getElementsByTagName("input"); for(var i=0; inputElements.length; i++) { [b]var inputType = inputElements[i].getAttribute("type");[/b] if( !inputType || inputType.toLowerCase() != "text" || inputType.toLowerCase() != "password" ) { continue; } inputElements[i].onfocus = new Function("this.className += ' foobar'"); inputElements[i].onblur = new Function("this.className = this.className.replace(/\bfoobar\b/s, '')"); } } </script> </head> <body> <div> <form action="./send.php" method="post"> <p> <input type="text" name="title" class="bgChanging" /> </p> <p> <textarea name="message" class="bgChanging" cols="40" rows="10"></textarea> </p> <p> <input name="send" type="submit" value="Senden" /> </p> </form> </div> </body> </html>
Es kommt die Fehlermeldung: "'undefined' ist Null oder kein Objekt". Ich hab oben die Zeile markiert, in der laut dem Debugger der Fehler auftauch (wobei der Fehler ja oft eine Zeile darüber auftaucht..).
Da ich mich mit der Syntax von JS leider wenig bis gar nicht auskenne, bin ich auf eure Hilfe angewiesen
Ähnliche Themen
-
THW Site neu gestalten
Von Alexander Groß im Forum Content Management Systeme (CMS)Antworten: 12Letzter Beitrag: 31.07.09, 23:19 -
Access Formular dynamisch gestalten
Von deusfalsus im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 30.05.07, 09:03 -
kontextmenu gestalten
Von thunderbirdnils im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 30.04.07, 16:50 -
Design mit php gestalten ?
Von draGY im Forum PHPAntworten: 7Letzter Beitrag: 25.12.02, 09:10





Login





