Guten Tag Forengemeinde,
ich bin recht neu im HTML-"Geschäft" und erstelle gerade ein Theme für mein privates Wordpress-Blog. Ein Feature dieses (sonst sehr schlichten) Themes soll sein, dass je nach dem, welche Seite angezeigt wird, der entsprechende Eintrag in der Navigation markiert wird. Ist blöd zu beschreiben, deshalb ein Bild meiner Navigationsleiste:
In dem Bild befindet sich der Besucher gerade auf der Seite "Archiv Mai 2011", was daran erkennbar ist, dass vor diesem Menüpunkt ein Pfeil statt eines X zu sehen ist.
Realisiert werden die Menüpunkte als Liste. Hierbei bekommt der gerade aktive Menüpunkt (wird über PHP und Wordpress-Funktionen ermittelt) die Klasse "current_page_item". Diese Klasse bekommt im style.css ein entsprechendes list-style-image zugewiesen. In meinem Fall also einen Pfeil für die Klasse "current_page_item"; Listenpunkte ohne spezielle Klasse bekommen das X als list-style-image.
Soweit hoffentlich verständlich erklärt.
Dieser Effekt soll nun auch mit der Suchfunktion laufen, wird also gerade eine Suchseite angezeigt, soll vor dem Suchfeld ein Pfeil statt eines X stehen. Genau hier gibt es Probleme. Zunächst einmal der von mir verwendete Code:
(Das "if (is_search() )" ist eine Wordpress-Funktion, bitte darüber nicht wundern. Ich überprüfe damit lediglich, ob derzeit eine Suchseite angezeigt wird oder nicht um so die entsprechende Klasse und damit wiederrum das entsprechende list-style-image zu setzen (X oder Pfeil))
Und der Code der searchform.php:
Der ganze Spaß funktioniert so, wie er hier steht.
Aber: Um gleich auf die richtige Karte zu setzen möchte ich nach XHTML Strict arbeiten und lasse meinen Code durch den Validator laufen. Dieser meldet allerdings zu den beiden <input>-Tags jeweils einen Fehler:
Viel entscheidender aber ist für mich natürlich der Fehler, der auftritt, wenn ich mich an diese Vorschrift halte und einen entsprechenden Tag setze. Dann nämlich machen manche Browser (IE 9, FF 4) einen Zeilenumbruch vor das Suchfeld, das list-style-image (das "x" oder der Pfeil) sind dann nicht mehr vor dem Suchfeld sondern darüber. Es ist dabei egal, ob ich "p", "hx", "div", "pre" oder "fieldset" verwende. Auch hierzu ein Bild:
Die Browser scheinen das unterschiedlich zu interpretieren, Chrome 11, Opera 11 und Safari 5 machen diesen Umbruch nicht, IE9 und FF4 wie erwähnt leider schon. Dummerweise also ausgerechnet die Browser mit hohem Marktanteil...
So ist zwar der Validator zufrieden aber die Darstellung ist natürlich nicht akzeptabel.
Meine Frage ist nun, wie ich dieses Verhalten abstellen kann. Gibt es eine CSS-Eigenschaft, die den Umbruch verhindert? Oder ein HTML-Tag? Oder muss ich an die Sache ganz anders ran? Vielleicht ohne Liste? Aber wie dann (mit vertretbarem Aufwand)?
Ich bedanke mich im Voraus bei allen, die sich die Arbeit machen, mir einen hilfreichen Kommentar zu posten.
Beste Grüße,
DeltaB
PS: Googeln hat mich auch nach längerer Suche nicht weitergebracht... Kann natürlich sein, dass ich mit den falschen Begriffen gesucht habe, dann tut es mir Leid und es war keine böse Absicht ;)
ich bin recht neu im HTML-"Geschäft" und erstelle gerade ein Theme für mein privates Wordpress-Blog. Ein Feature dieses (sonst sehr schlichten) Themes soll sein, dass je nach dem, welche Seite angezeigt wird, der entsprechende Eintrag in der Navigation markiert wird. Ist blöd zu beschreiben, deshalb ein Bild meiner Navigationsleiste:

In dem Bild befindet sich der Besucher gerade auf der Seite "Archiv Mai 2011", was daran erkennbar ist, dass vor diesem Menüpunkt ein Pfeil statt eines X zu sehen ist.
Realisiert werden die Menüpunkte als Liste. Hierbei bekommt der gerade aktive Menüpunkt (wird über PHP und Wordpress-Funktionen ermittelt) die Klasse "current_page_item". Diese Klasse bekommt im style.css ein entsprechendes list-style-image zugewiesen. In meinem Fall also einen Pfeil für die Klasse "current_page_item"; Listenpunkte ohne spezielle Klasse bekommen das X als list-style-image.
Soweit hoffentlich verständlich erklärt.
Dieser Effekt soll nun auch mit der Suchfunktion laufen, wird also gerade eine Suchseite angezeigt, soll vor dem Suchfeld ein Pfeil statt eines X stehen. Genau hier gibt es Probleme. Zunächst einmal der von mir verwendete Code:
HTML:
<h3> Suche </h3>
<ul>
<?php if ( is_search() ) { ?>
<li class="current_page_item"> <?php include (TEMPLATEPATH . '/searchform.php'); ?> </li>
<?php } else { ?>
<li> <?php include (TEMPLATEPATH . '/searchform.php'); ?> </li>
<?php } ?>
</ul>
(Das "if (is_search() )" ist eine Wordpress-Funktion, bitte darüber nicht wundern. Ich überprüfe damit lediglich, ob derzeit eine Suchseite angezeigt wird oder nicht um so die entsprechende Klasse und damit wiederrum das entsprechende list-style-image zu setzen (X oder Pfeil))
Und der Code der searchform.php:
HTML:
<form class="suche" method="get" id="searchform" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input class="suche" type="text" value="<?php echo wp_specialchars($s, 1); ?>" name="s" id="s" />
<input type="hidden" id="searchsubmit" />
</form>
Aber: Um gleich auf die richtige Karte zu setzen möchte ich nach XHTML Strict arbeiten und lasse meinen Code durch den Validator laufen. Dieser meldet allerdings zu den beiden <input>-Tags jeweils einen Fehler:
Zum einen ist mir nicht ganz klar, warum überhaupt eines der genannten Start-Tags benötigt wird. Man wird sich dabei ja irgendwas gedacht haben, nur was?document type does not allow element "input" here; missing one of "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address", "fieldset", "ins", "del" start-tag
Viel entscheidender aber ist für mich natürlich der Fehler, der auftritt, wenn ich mich an diese Vorschrift halte und einen entsprechenden Tag setze. Dann nämlich machen manche Browser (IE 9, FF 4) einen Zeilenumbruch vor das Suchfeld, das list-style-image (das "x" oder der Pfeil) sind dann nicht mehr vor dem Suchfeld sondern darüber. Es ist dabei egal, ob ich "p", "hx", "div", "pre" oder "fieldset" verwende. Auch hierzu ein Bild:

Die Browser scheinen das unterschiedlich zu interpretieren, Chrome 11, Opera 11 und Safari 5 machen diesen Umbruch nicht, IE9 und FF4 wie erwähnt leider schon. Dummerweise also ausgerechnet die Browser mit hohem Marktanteil...
So ist zwar der Validator zufrieden aber die Darstellung ist natürlich nicht akzeptabel.
Meine Frage ist nun, wie ich dieses Verhalten abstellen kann. Gibt es eine CSS-Eigenschaft, die den Umbruch verhindert? Oder ein HTML-Tag? Oder muss ich an die Sache ganz anders ran? Vielleicht ohne Liste? Aber wie dann (mit vertretbarem Aufwand)?
Ich bedanke mich im Voraus bei allen, die sich die Arbeit machen, mir einen hilfreichen Kommentar zu posten.
Beste Grüße,
DeltaB
PS: Googeln hat mich auch nach längerer Suche nicht weitergebracht... Kann natürlich sein, dass ich mit den falschen Begriffen gesucht habe, dann tut es mir Leid und es war keine böse Absicht ;)