1

如果 div 和 p 元素被 CSS 为空,那么如何在源代码中不为用户显示标签?

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

我运行这个不成功

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

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

4

5 回答 5

5

CSS 对实际的 HTML 代码没有影响,因此无法做到这一点。:empty在(即将推出的)CSS3 中,您可以使用伪类阻止它们被渲染:

div:empty {
    display: none;
}

这当然不是一回事,但它可能会解决你遇到的问题..如果只有浏览器真正支持它,他们还不支持。

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

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

另外,要小心。空标签并不总是毫无意义。事实上,把每一个空<div>的东西都移走可能被认为是有害的。

于 2009-08-20T05:07:18.533 回答
1

是的,如果你想阻止它们出现在源代码中,你需要在你的服务器代码中做出适当的考虑。或者,您也可以在 JavaScript 中设置 HTML,但这可能不是解决此问题的推荐方法。不过,您可能想多说一点,关于您正在尝试做的事情。

于 2009-08-20T04:50:36.197 回答
1
div { display: none; }

从页面中完全删除一个元素。

不管你用 CSS 做什么,它仍然会出现在你的源代码中。浏览器将 HTML 源代码和 CSS 指令组合成一个可显示的页面,原始源代码没有被修改。CSS 只能影响元素的视觉显示,不能改变元素。要真正从 DOM 中删除元素,您需要 Javascript(或者首先不将元素放在那里)。

于 2009-08-20T04:51:47.053 回答
1

可见性属性旨在设置是否显示对象的内容。它不会从 DOM 中删除元素。

折叠 Windows Internet Explorer 8 的新功能

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

另外你为什么要这样做?

于 2009-08-20T04:52:16.147 回答
0

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

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

无论您尝试什么技巧,在客户端(HTML、Javascript、CSS)所做的任何事情都可以更改和使用。

于 2009-08-20T04:55:54.190 回答