iframe标签内的页面的行内块样式和单独页面内的行内块样式差异的原因(两页面内容一模一样)?

首先上图:

clipboard.png
由图可以看出,那个checkbox没有上下居中,html的标签结构如图:

clipboard.png
每个li下面的span都有相同的样式,行内块加左浮动,只是宽度不同,做了区别处理,那么问题来了:
这是第一个span盒子(里面包了一个复选框)

clipboard.png
这是后面的span盒子(就是一个span,里面包含了文字)

clipboard.png
问题所在就是,可以看出前面的那个span盒子的高度没有继承到父元素的高,而是被内里的复选框撑高的,而后面的span盒子则继承到了父元素的高度,这就导致了后面盒子的文章内容能够正常的水平垂直居中,而第一个span盒子内的复选框则不能,只能水平居中,无法垂直居中(控制台能看到span盒子的高度是被复选框撑高的,所以尽管它能够垂直居中,效果上却并没有实现,而是如图刚好贴着顶部)。而最最蛋疼的是,同样的这个页面,我如果把他作为一个单独完整的html打开则又是正常的(出现问题的是这个页面作为一个iframe页面嵌入到一个模板页面中才出现了这个问题),下图是正常的单独页面效果(不嵌入模板页面)

clipboard.png
同时,我在控制台仔细的对比了二者的样式,发现它们二者并没有因为样式继承而不同(就是嵌套进那个模板页面后,该页面的这个盒子内容也没有继承其他的一些样式,和单独页面的样式一样的)。
说了这么多,图片对比也很明显了,我就是先问问有没有人知道造成这二者区别的因素是什么?是一个页面作为iframe标签嵌套进另一个页面后,checkbox标签就不正常了嘛?(可是如我前面所说的,我仔细对比了二者,包括他们对应的父元素span盒子,他们二者的样式是一样的,继承的样式也是一样的,也就是说可以排除因样式继承的差别而导致的差别这样假设)

这里我补充一点:有兴趣的大神,想要写页面来亲自调试该效果的,可以直接复制:
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>盒子在父元素内居中</title>

<style>

body,html{
            width: 100%;
            height: 100%;
            clear: both;
            padding: 0;
            margin: 0;
        }
        ul{
            list-style: none;
            margin: 0;
            padding: 0;
        }

.list_item{

            overflow: hidden;
            text-align: center;
            height: 35px;
            line-height: 35px;
            border-bottom: 1px solid #999999;
            color: #555555;
            font-weight: 500;
        }
        .list_item_td{
            display: inline-block;
            float: left;
            overflow: hidden;
        }
        .o{
            width: 5%;
        }
        .t{
            width: 10%;
        }
        .th{
            width: 20%;
        }
        .f{
            width: 15%;
        }
        .fi{
            width: 25%;
        }
        .s{
            width: 25%;
        }
        .t a{
            color: #2299DD;
        }

</style>
</head>

<body>
    <ul class="list_area">
                <li class="list_item">
                    <span class="list_item_td o">
                        <input type="checkbox"/>
                    </span>
                    <span class="list_item_td t"><a>停用</a>|<a>维修</a></span>
                    <span class="list_item_td th">bz0001</span>
                    <span class="list_item_td f">ght</span>
                    <span class="list_item_td fi">187****1065</span>
                    <span class="list_item_td s">1234567890123456</span>
                </li>
            </ul>
</body>
</html>

那个嵌套的直接可以一个新页面,下面一个iframe标签,在引用这个测试页面,就能发现问题所在了,人多力量大

现在我自己也从新建了一个页面,iframe标签引用这个页面,确实又是正常的,但是在项目上,还是不正常,我马上贴出那个span盒子和它内里的checkbox的控制台样式图:

clipboard.png
这里是span盒子的样式,它唯一在这个模板里继承的就一个body样式(它没有继承父元素的高)

clipboard.png
这是checkbox的控制台样式,它仍然只继承了一个body的模板样式,

clipboard.png
这是span盒子的父元素样式图,它也只继承了模板的body样式(但是从这里可以看出,它没有继承到父元素的高,height:45px;)

clipboard.png
这是最外层盒子的样式,div和span盒子的高度等样式都是继承它的,它有高度45px,同时,它也只继承了模型的body样式
我直接把每个Body样式注销,让body成默认,仍然无效的,所以说我一开始就说了,这个页面受模板的样式影响非常小,但在这里,它就是存在差异!!!!蛋疼啊。不知道大神们注意到那个list_head的样式没有?在它的子元素div和div的子元素span盒子都是没有引用到它的高height:45px的,我就是不明白,这个属性到底是怎么被丢失了的。从我的控制台样式截图也可以看出来,这个页面就继承了模型的一个body属性,这是毫无影响的,但是它就是丢失了这个类的高度属性

阅读 4.8k
2 个回答

谢邀。是我测试的不对吗?

clipboard.png

这个问题还是无法解决,只能用其他方式避开这个坑:我自己换了另一种思路,用定位布局的方式,这样就消除了该span盒子受的不明样式影响,也算是达到了效果了(当然,这算是我再次遇到了一个不知其几何的问题,我还是没有搞明白,它父元素的高度为何丢失了,只能选择低头绕道,将它抛开...也许未来的某一天我能幸运的找到这个问题的原因,毕竟幸运的是,我还目前还有替代方案)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题