为何location-bar 内的行内块元素不用vertical-align会偏移?

为何location-bar 内的行内块元素不用vertical-align会偏移?

为何location-bar 内的行内块元素不用vertical-align会偏移?而不是在父元素内

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

4回答
好帮手慕粉 2020-04-21 18:02:17

同学你好,因为纵向也有间隙啊:

http://img1.sycdn.imooc.com//climg/5e9ec49109728fe704460292.jpg

老师只是给同学举了横向的例子,纵向上也是一样的。

祝学习愉快~

好帮手慕粉 2020-04-21 16:25:26

同学你好,关于同学的问题回答如下:

1、我们可以举个例子看下:

<!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>
        * {
            margin: 0;
            padding: 0;
        }
        .father {
            width: 200px;
            height: 200px;
            background-color: red;
        }
        .one,
        .two {
            width: 100px;
            height: 100px;
            display: inline-block;

        }
        .one {
            background-color: pink;
        }
        .two {
            background-color: gray;
        }
    </style>
</head>

<body>
    <div class="father">
        <div class="one"></div>
        <div class="two"></div>
    </div>
</body>

</html>

按正常来说,两个子div应该是在一行显示,但是由于行内块有默认的间隙,实际宽度超过了100px,所以第二个子元素会被撑到下一行:

http://img1.sycdn.imooc.com//climg/5e9eace409df76d002700239.jpg

这个间隙是由文本节点造成的:

http://img1.sycdn.imooc.com//climg/5e9ead0e0930e6a806120137.jpg

所以我们可以给父元素设置font-size:0,将这些间隙去掉:

http://img1.sycdn.imooc.com//climg/5e9ead2f0908f74104430148.jpg

http://img1.sycdn.imooc.com//climg/5e9ead350969a9fb03910215.jpg

2、在这也是一样的,由于文本节点造成的间隙,子元素超出了父容器。所以即使同学增加了父容器的高度,这个间隙也还是存在的,要把父元素的高度调整的更高一点:

http://img1.sycdn.imooc.com//climg/5e9eadee096beb8317000296.jpg

祝学习愉快~

  • 提问者 lcyjerry #1
    为啥是加高度而不是宽度呢?
    2020-04-21 17:37:24
好帮手慕粉 2020-04-21 09:36:33

同学你好,在把vertical-align去掉的情况下,子元素会超出父元素是因为图片和文字设置的是行内块:

http://img1.sycdn.imooc.com//climg/5e9e4d8c099ffd0f13070263.jpg

而行内块之间有默认的间隙。我们可以给父元素设置font-size:0消除这个间隙:

http://img1.sycdn.imooc.com//climg/5e9e4e0c09a67bb014340271.jpg

祝学习愉快~

  • 提问者 lcyjerry #1
    为什么通过消除间隙就可以让行内元素在父容器内部了,为什么让父容器的宽度增加不行?
    2020-04-21 11:44:48
好帮手慕粉 2020-04-20 19:23:09

同学你好,因为这块的内容继承了body的行高,所以内容被撑了下去,我们可以先把vertical-align属性去掉看下:

http://img1.sycdn.imooc.com//climg/5e9d8565093ecc7315680554.jpg

这是继承的body的行高:

http://img1.sycdn.imooc.com//climg/5e9d85840944f56603750101.jpg

因为设置行高时没有加单位,设置的是1,那么就是页面根元素的大小的1倍,也就是页面根元素字体大小的一倍:

http://img1.sycdn.imooc.com//climg/5e9d85d5091db5bc16340682.jpg

所以在这个页面,是继承了32px的行高。

视频老师就通过设置vertical-align属性对这两个元素进行了调整。

祝学习愉快~

  • 提问者 lcyjerry #1
    我用的是iphone678的模拟器,行高应该是37.5吧?高度也够啊
    2020-04-20 19:36:59
  • 提问者 lcyjerry #2
    为什么会被撑下去啊?我的子元素高度都小于父容器的高度啊?
    2020-04-20 20:06:01
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师