Form in P Tag ignoriert CSS
    
SE
    
    
      
    
  - css
 
Hallo allerseits,
habe folgendes Problem:
auf meiner Seite sollen bestimtme <p> Tags ein Padding bekommen, was auch funktioniert.
Wenn einer der <p>s allerdings eine <form> enthält, dann ignorieren die darin enthaltenen Elemente das Padding.
Gibt es eine Möglichkeit, dies zu umgehen?
Hier die fraglichen Codeausschnitte:
HTML:
  
...  
<td id="menu_right">  
<p>  
	Dieser Text hat das gewünschte Padding.  
</p>  
<p>  
	<form method="POST" action="search.php">  
		<input type="text" name="name" value="Dieses Input Element hat das gewünschte Padding NICHT!" /><br />  
		<input type="submit" value="Suchen!" /><br />  
	</form>  
</p>  
</td>  
...  
CSS:
  
td#menu_right p{  
	padding-left:10px;  
}  
  Hallo,
form-Element sind Blockelemente. P-Elemente dürfen eigentlich nur inline-Elemente enthalten. Vielliecht solltest du das Formelement formatieren?
Gruß
jobo
Danke für den Tip, hiermit funktioniert es:
HTML:
  
<form method="POST" action="...">  
	<input type="text" name="name" value="Wird jetzt auch richtig angezeigt" /><br />  
	<input type="submit" value="Suchen!" /><br />  
</form>  
  
<p>  
	wird weiterhin richtig angezeigt  
</p>  
CSS:
  
td#menu_right p{  
	padding-left:10px;  
}  
  
td#menu_right form{  
	padding-left:10px;  
}  
  Hallo,
Wenn einer der <p>s allerdings eine <form> enthält, dann ignorieren die darin enthaltenen Elemente das Padding.
laut Spezifikation darf ein p-Element kein form-Element enthalten.
Gibt es eine Möglichkeit, dies zu umgehen?
Valides HTML schreiben und das form-Element in ein passendes Blockelement packen.
Freundliche Grüße
Vinzenz
Hallo,
Valides HTML schreiben und das form-Element in ein passendes Blockelement packen.
Echt, das Form-Element nochmal ummanteln?
Gruß
jobo
Hallo,
Valides HTML schreiben und das form-Element in ein passendes Blockelement packen.
Echt, das Form-Element nochmal ummanteln?
das body-Element ist ebenfalls ein Blockelement ;-)
Freundliche Grüße
Vinzenz
Hallo,
das body-Element ist ebenfalls ein Blockelement ;-)
ist es?
vermutlich eher nicht. Schreibe halt: "passendes Blockelement oder body" :-)
Freundliche Grüße
Vinzenz
Hallo,
vermutlich eher nicht. Schreibe halt: "passendes Blockelement oder body" :-)
Ich wollte eher darauf hinaus, dass der mögliche "Reflex", möglichst überall noch ein Blockelement (div) rumzupacken ggf. nicht nötig ist. Ein Form-Element kann ja auch ohne umgebendes Blockelement gut da stehen, oder könnte. Ich dachte früher auch immer, alles müsste (fälschlicherweise) in eine p-Tag stehen, oder dann halt ein div-Tag.
Gruß
jobo
@@SE:
nuqneH
Wenn einer der <p>s allerdings eine <form> enthält
Hier liegt dein Irrtum.
'p' darf nicht 'form' enthalten. Trifft der Tagsoup-Parser auf das <form>-Tag, schließt er implizit das noch offene 'p'-Element (dessen End-Tag optional ist).
Du hast also dasselbe, als ob du
<p>  
</p><form method="POST" action="search.php">
geschrieben hättest.
Das </p>-End-Tag nach </form> gehört zu keinem noch offenen 'p'-Element, ist somit ein HTML-Fehler. Das hätte dir der Validator auch gesagt.
Qapla'