2009-08-20 9 views
1

Wie können Sie div und p-Elemente ausblenden, wenn sie von CSS leer sind, so dass die Tags für den Benutzer im Quellcode nicht angezeigt werden?Um div und p durch CSS zu reduzieren

Diese Elemente sind in meinem Quellcode, obwohl sie leer sind. Dies verursacht Fehler mit dem Rest der Website.

Ich laufe dies erfolglos

div.unsuccessful, 
div.unsuccessful p { 
    visibility: collapse;                                              
} 

Das bin ich darauf hin, dass Sie anscheinend nicht so etwas von CSS tun können. Vielleicht wird ein anderes Tool wie PHP benötigt.

Antwort

5

CSS hat keinen Einfluss auf den eigentlichen HTML-Code, daher kann dies nicht durchgeführt werden. In der (kommenden) CSS3, könnte man sie davor gemacht mit der :empty Pseudo-Klasse zu stoppen:

div:empty { 
    display: none; 
} 

Das ist natürlich nicht dasselbe ist, aber es wäre wahrscheinlich die Probleme beheben Sie haben .. wenn nur Browser es tatsächlich unterstützen, was sie noch nicht tun.

Die beste Option ist, sie auf dem Server mit einer Skriptsprache wie PHP zu entfernen. Ich nehme an, Sie könnte es Client-Seite mit JavaScript, aber das ist eine schreckliche Lösung, IMO.

Das gesagt, welche Probleme haben Sie mit diesen leeren Tags? Warum sind sie überhaupt dort? Es scheint mir, dass ein Redesign in Ordnung ist, um zu verhindern, dass unnötige Tags überhaupt generiert werden.

Seien Sie auch vorsichtig. Leere Tags sind nicht immer bedeutungslos. In der Tat kann das Entfernen jeder leeren <div> da draußen als schädlich angesehen werden.

1

Ja, wenn Sie sie in die Quelle stoppen möchten, müssen Sie die entsprechenden Überlegungen in Ihrem Server-Code vornehmen. Alternativ können Sie den HTML-Code auch in JavaScript festlegen, aber es ist wahrscheinlich nicht der empfohlene Ansatz für dieses Problem. Vielleicht möchten Sie etwas mehr darüber sagen, was Sie vorhaben.

1
div { display: none; } 

entfernt ein Element vollständig von der Seite.

Es wird immer noch in Ihrem Quellcode angezeigt, egal was Sie mit CSS tun. Der Browser kombiniert die HTML-Quelle und die CSS-Anweisungen zu einer anzeigbaren Seite, die ursprüngliche Quelle wird nicht geändert. CSS kann nur die visuelle Darstellung von Elementen beeinflussen, es kann keine Elemente verändern. Um Elemente aus dem DOM zu entfernen, benötigen Sie Javascript (oder legen Sie die Elemente nicht an erster Stelle).

1

Visibility-Eigenschaft soll festlegen, ob der Inhalt des Objekts angezeigt wird oder nicht. Das Element wird nicht aus dem DOM entfernt.

Zusammenbruch Neu für Windows Internet Explorer 8

in Tabellen Zeilen und Spalten zu entfernen; für alle anderen Elemente, gleich wie versteckt.

Auch warum möchten Sie das tun?

0

Ja, Sie müssen Server-Seite der Verarbeitung verwenden zu zeigen oder nicht-Show einen Code für den Benutzer:

if ($showAdminLink) { 
    echo "<p><a href=\"admin.php\">Admin panel</a></p>"; 
} 

Egal welchen Tricks, die Sie versuchen, auf der Client-Seite etwas getan (HTML, Javascript , CSS) kann verändert und gespielt werden.