HTML+CSS+JavaScript 学习中遇到问题汇总

1.在display:inline-block;的a中添加文字导致下移

查阅相关资料可知,在将元素display设置为inline-block的时候,元素即同时具有行内元素和块级元素的属性,既排列在同一行又可以设置宽高。

对于行内元素,都具有vertical-align属性,那这里就牵涉到vertical-align的默认对齐方式。 它的默认方式是baseline,基线对齐。

css规范中写道:

baseline:Align the baseline of the box with the baseline of the parent box.  If the box does not have a baseline, align the bottom margin edge with the parent's baseline.(将方框的基线与父方框的基线对齐。如果方框没有基线,请将底边距与父元素的基线对齐。)

举例:代码如下: 

    <style>
        * {
            margin: 0;
            padding: 0;
        }

        /* 无文字 */
        .a1 {
            display: inline-block;
            width: 200px;
            height: 100px;
            background-color: #efafaf;
        }

        /* 有文字,大小0px */
        .a2 {
            display: inline-block;
            width: 200px;
            height: 100px;
            background-color: #efafaf;
            /* 给文字设置大小 */
            font-size: 0px;
        }

        /* 有文字,大小10px */
        .a3 {
            display: inline-block;
            width: 200px;
            height: 100px;
            background-color: #efafaf;
            /* 给文字设置大小 */
            font-size: 10px;
        }
        /* 有文字,大小20px */
        .a4 {
            display: inline-block;
            width: 200px;
            height: 100px;
            background-color: #efafaf;
            font-size: 20px;
        }
    </style>
</head>

<body>
    <a href="#" class="a1"></a>
    <a href="#" class="a2">文字pjv</a>
    <a href="#" class="a3">文字pjv</a>
    <a href="#" class="a4">文字pjv</a>

</body>

</html>

 代码对应结果:

 

第一个a内没有文字,默认的基线是margin下边缘;

第二,三,四个a里有文字,基线为文字(英文)的下边缘。


那么怎么解决这个问题,让它们并排对齐呢?

  • 法一:给每个a添加vertical-align对齐方式就可以了,在这里将其均设置为top,效果如下:

  • 法二: vertical-align的默认值是baseline。当a2,a3,a4设置了属性overflow:hidden后,baseline会设置在bottom margin的边缘。详情戳css规范

翻译:'inline-block'的基线是它在标准流中的最后一个行盒的基线,除非它没有流中的行盒,或者它的'overflow'属性有一个计算值而不是'visible',在这种情况下基线是底边距。

注意:如果元素内部只有脱离标准流的行盒,如被设置了float 除了none以外的值,position为fixed和absolute,也会出现同样的情况

2.未完待续……

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值