• inlineblock 之 “幽灵空白节点”


    1. 问题&现象

    上代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title></title>
        <style>
            .box {
                width: 200px;
                height: 200px;
                overflow-x: auto;
            }
            .box::-webkit-scrollbar {
                background-color: aqua;
            }
            .box1 {
                display: inline-block;
                height: 100%;
                width: 100%;
                background-color: antiquewhite;
            }
        </style>
    </head>
    <body>
        <div class="box">
            <div class="box1"></div>
        </div>
    </body>
    </html>

    效果展示:

      问题1:看效果图,子元素box1的高度是100%,计算出来应该200px,为什么纵轴还多了个滚动条呢?

    2. “幽灵空白节点”的产生&解决

    上代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title></title>
        <style>
            .box {
                background-color: antiquewhite;
            }
            .box1 {
                display: inline-block;
            }
        </style>
    </head>
    <body>
        <div class="box">
            <div class="box1"></div>
        </div>
    </body>
    </html>

    效果图:

                从效果图中我们可以看出:父子元素都未设置高度,但是父元素box明显有高度

    原因:

      将子元素box1设置成inline-block后,子元素box1同级其实多出来了一个所谓的“空白节点”,而父元素的高度是由这个“空白节点”撑开的, 这个“空白节点”永远透明,不占据任何宽度,看不见也无法通过脚本获取,就好像幽灵一样,但又确确实实地存在,表现如同文本节点一样。 这个“空白节点”我们称之为“幽灵空白节点”

    解决方案:

    1. 子元素box1设置 display: block;
    2. 父元素box:font-size: 0;(font-size是有继承性的,子元素需要重新设置一下font-size)

    回答上边的问题1:

      因为box1的display设置成inline-block,父元素下边其实多了一个有一定高度的空白节点,父元素高度200px,子元素box1高度也是200px,那父元素下边实际内容高度其实是 子元素内容高度+空白节点高度,内容高度大于父元素高度,又因为父元素设置了overflow-x设置了auto(overflow-y也会变成auto),所以就出现了纵向滚动条

  • 相关阅读:
    jdk git maven Jenkins的配置
    jar包部署脚本
    Mybaits和Spring的那点事
    HashMap三两事
    排序算法学习
    MySQL杂谈
    一个最简单的微服务架构
    SpringBoot全家桶
    nginx上传
    使用xshell在linux服务器上部署node项目
  • 原文地址:https://www.cnblogs.com/yyh1/p/16385243.html
Copyright © 2020-2023  润新知