空元素不占用位置处理

一. 问题场景:

如果将一个元素的CSS设置为margin-right: 10px,即使这个元素为空,那么这10px依然存在,效果如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        span {
            margin-right: 10px;
        }
    </style>
</head>
<body>
    <span>你好</span><span></span><span>helloWord</span>
</body>
</html>

渲染效果如下:
在这里插入图片描述

二. 解决方案:

利用伪元素:empty,如果该元素为空,则设置display为none掉。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        span {
            margin-right: 10px;
        }
        span:empty {
            display: none;
        }
    </style>
</head>
<body>
    <span>你好</span><span></span><span>helloWord</span>
</body>
</html>

 

渲染效果如下:
在这里插入图片描述