Multi: Vererbung begrenzen

Mahlzeit,

folgende Situation:

  
	<div id="content">  
  
		<h2>{$page_title}</h2>  
		<p>  
			  
			{if $module_name}  
				{include file=$module.template}  
			{else}  
				{$page_content}  
			{/if}  
				  
		</p>  
	</div>  

im CSS:

  
div#content p {  
	margin: 0;  
	padding: 0 10px 5px 10px;  
	border: 1px solid red;  
}  

Wie kann ich es bewerkstelligen, dass nur dieses <p/> formatiert wird, aber alle <p/> innerhalb von der Formatierung ausgenommen werden?

div#content p p {

wäre eine Lösung, will ich aber vermeiden, da ich die Verschachtelungstiefe nicht kenne. Der Inhalt wird mit TinyMCE erzeugt und ist dadurch nicht wirklich sauberer HTML-Code.
Eine weitere Lösung wäre, dem <p/> eine Klasse oder ID zu geben, aber ohne das wäre es mir lieber.

Das ganze sollte natürlich browserübergreifend funktioneren, also keine Lösung, die ein komplett neues Layout für andere Browser erfordert sondern maximal mit Hacks oder CCs umzusetzen ist.
Relevant ist FF2, FF3, IE6-8.

  1. Hi,

    Wie kann ich es bewerkstelligen, dass nur dieses <p/> formatiert wird, aber alle <p/> innerhalb von der Formatierung ausgenommen werden?

    Da p kein p enthalten darf, stellt sich die Frage gar nicht.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hi,

      Da p kein p enthalten darf, stellt sich die Frage gar nicht.

      Mal davon abgesehen, sehe ich hier zm 2ten Mal heute sowas:

      div#content p {

      und auch hier:
      https://forum.selfhtml.org/?t=183239&m=1213418

      Ich würde ja sowieso nichts vor der raute setzen, weil als ID ja einmalig,
      aber warum macht man das, bzw. ist das richitg oder müsste das, wenn schon, nicht eher mit leerzeichen sein?

      div #content p

      Timo

      1. Hallo,

        div#content p {
        Ich würde ja sowieso nichts vor der raute setzen, weil als ID ja einmalig, aber warum macht man das

        es gibt mehrere Gründe, den Elementnamen noch vor die ID zu setzen:
         * übertriebener Sinn für Korrektheit.
         * man verwendet dasselbe Stylesheet für mehrere HTML-Dokumente, und das
           Element #content ist einmal ein div, einmal ein table (pfui!), einmal
           nur ein p. So kann man das auch noch unterscheiden.
         * Erhöhung der Spezifizität, falls mehrere CSS-Definitionen für dasselbe
           Element zutreffen.

        bzw. ist das richitg oder müsste das, wenn schon, nicht eher mit leerzeichen sein?
        div #content p

        Das ist etwas anderes! Was du hier skizzierst, selektiert p-Elemente innerhalb eines beliebigen Elements mit der ID content, das seinerseits wieder Nachfahre eines div-Elements ist.

        Ciao,
         Martin

        --
        Noch Fragen? - Ich weiß es auch nicht.
      2. Mahlzeit,

        aber warum macht man das, bzw. ist das richitg oder müsste das, wenn schon, nicht eher mit leerzeichen sein?

        Ich persönlich mache das aus zwei Gründen:

        1. finde ich die entsprechende Stelle im Quelltext leichter, weil ich weiss, nach welchen Element ich suchen muss.
        2. ich habe keine Ahnung, wer an den Templates rumbastelt, da sie zu meinem CMS gehören, was jeder kostenlos einsetzen kann. Da stelle ich halbwegs sicher, dass die Darstellung passt. Ist allerdings nur ne kleine "Sicherheit"

      3. Mal davon abgesehen, sehe ich hier zm 2ten Mal heute sowas:
        div#content p {
        und auch hier:
        https://forum.selfhtml.org/?t=183239&m=1213418
        Ich würde ja sowieso nichts vor der raute setzen, weil als ID ja einmalig,
        aber warum macht man das, bzw. ist das richitg oder müsste das, wenn schon, nicht eher mit leerzeichen sein?

        div #content p

        Das ist ein gänzlich anderer Selektor.

        Es beeinflusst die Gewichtung.
        Wenn du ein Fefaultwert in einem Defaultstylesheet hast
        #someid {}
        kann ein Userstylesheet dies überschreiben
        div#someid {}

        mfg Beat;

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
    2. Mahlzeit,

      Da p kein p enthalten darf, stellt sich die Frage gar nicht.

      Ok, schlechtes Beispiel. Da muss ich eh ein anderes Element um den Inhalt setzen, da vom Editor immer ein <p/> kommen wird.

      Und wie sieht es bei verschachtelten divs o.ä. aus?

  2. Hi,

    abgesehen von der Ungueltigkeit des HTMLs, aber da deine Frage ja weiterhin zu bestehen scheint:

    div#content p p {

    wäre eine Lösung, will ich aber vermeiden, da ich die Verschachtelungstiefe nicht kenne.

    Welche Verschachtelungsebene?

    Da der Nachfahren-, und nicht der Kind-Selektor verwendet wird, kann es dir doch egal, in welcher Verschachtelungstiefe sich das befindet?

    Es wuerde, (um beim Beispiel zu bleiben) alle Elemente vom Typ P selektieren, die sich in einem weitere Element P inerhalb des Divs mit der ID content befinden, selektieren.

    Da du doch nur das "aeusserte" P gesondert von den darin liegen formatieren willst, sehe ich (noch) nicht, wo die Verschachtelungstiefe zum Problem wird.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“