通过CSS折叠div和p

时间:2009-08-20 04:48:16

标签: css html visibility collapse

如果div和p -elements是空的,如何在源代码中没有为用户显示标记,那么如何折叠它们?

这些元素在我的源代码中,尽管它们是空的。 这会导致网站其他部分出现错误。

我运行不成功

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

这表明我显然不能通过CSS做这样的事情。 也许,需要其他工具,如PHP。

5 个答案:

答案 0 :(得分:5)

CSS对实际HTML代码没有影响,因此无法完成。在(即将出现的)CSS3中,您可以使用:empty伪类来阻止它们的呈现:

div:empty {
    display: none;
}

这当然不是一回事,但它可能会解决您遇到的问题......如果只有浏览器实际支持它,那么它们还没有。

最好的选择是使用像PHP这样的脚本语言在服务器上删除它们。我想你可以使用JavaScript在客户端做它,但这是一个可怕的解决方案,imo。

话虽这么说,你对这些空标签有什么问题?他们为什么一开始就在那里?在我看来,有些重新设计是为了防止不必要的标签首先被生成。

另外,要小心。空标签并不总是毫无意义。事实上,删除每个空<div>可能被视为有害。

答案 1 :(得分:1)

是的,如果您想阻止他们进入,您需要在服务器代码中进行适当的考虑。或者,您也可以在JavaScript中设置HTML,但这可能不是推荐的解决此问题的方法。你可能想多说一点,关于你想要做什么。

答案 2 :(得分:1)

div { display: none; }

从页面中完全删除元素。

无论您使用CSS做什么,它仍会显示在您的源代码中。浏览器将HTML源和CSS指令组合到可显示的页面中,不修改原始源。 CSS只能影响元素的可视化显示,它不能改变元素。要从DOM中实际删除元素,您需要使用Javascript(或者不首先将元素放在那里)。

答案 3 :(得分:1)

Visibility属性用于设置是否显示对象的内容。它不会从DOM内部删除元素。

  

折叠Windows Internet的新功能   资源管理器8

     

在表中用于删除行和列;所有其他元素,与隐藏相同。

另外你为什么要这样做?

答案 4 :(得分:0)

是的,您必须使用服务器端处理来向用户显示或不显示某些代码:

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

无论你尝试什么技巧,在客户端(HTML,Javascript,CSS)完成的任何事情都可以改变和播放。