我在
.error
类中使用了
:empty
选择器。问题是,即使在带有 error 类的 div 中没有内容,error 类也不会被完全删除。
当我在 firebug 中进行测试时,我发现 div 中仍有一些空白,而当我删除这些额外的空格时,div 就会消失。
.error{ border:solid 1px #ff0000; color:#ff0000;}
.error:empty{ display:none;}
调试时,div 会这样显示:
<div class="error"> </div>;
您所看到的额外空格就是问题所在。
有什么办法可以让我在 css 中将
显示为 display:none 吗?
可以使用 CSS 中的
white-space
属性来控制元素内的空白字符的处理方式。
为了确保
.error:empty
选择器在 div 内有空格时也能正常工作,可以将
white-space
属性设置为
nowrap
,并将
.error
类的
margin
设置为 0,以删除任何可能存在的默认边距:
.error {
border: solid 1px #ff0000;
color: #ff0000;
white-space: nowrap; /* 防止空格扩展元素 */
margin: 0; /* 移除默认边距 */
}
.error:empty {
display: none;
}
这将使
.error
div 中的所有空格字符(包括不间断空格
)都被忽略,并且只有在 div 中没有任何内容(包括空格)时才会隐藏该元素。
此外,还可以考虑使用以下方法来避免这个问题:
- 在服务器端清理 HTML 输出: 如果能够控制 HTML 的生成方式,最好在服务器端清理 HTML 输出,并删除任何不必要的空格或空行。
-
使用 JavaScript 删除空格:
如果无法控制 HTML 输出,可以使用 JavaScript 来删除
.error
div 中的空格。
希望这些解决方案能帮到!
标签:css,css-selectors From: 18313689