display:inline-block;在这里面的作用,当不加这句的时候背景图片文字整体下移50%

来源:2-6 编程练习

Di1860

2019-04-09 18:29:47

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>背景</title>
    <style>
       div{
            width:558px;
            height:559px;
            background-image:url(http://climg.mukewang.com/58dc9d360001d65806500650.jpg);
            text-align:center;
            display:inline-block;
        }
        p{margin-top:50%;} 
    </style>
</head>
<body>
    <div>
        <p>《长歌行》
        <br>
        <br>青青园中葵,朝露待日晞。
        <br>阳春布德泽,万物生光辉。
        <br>常恐秋节至,焜黄华叶衰。
        <br>百川东到海,何时复西归。
        <br>少壮不努力,老大徒伤悲。
        <br>
        </p>
    </div>
</body>
</html>


写回答

3回答

好帮手慕慕子

2019-04-10

同学你好,这里可以这样理解

  1. 首先为什么会出现设置margin-top导致父子元素一起下落。 因为所有相邻的两个或更多盒元素的margin将会合并为一个margin发生折叠。这里相邻的定义为:同级或者嵌套的盒元素,并且它们之间没有非空内容、padding或Border分隔。

  2. 折叠规则是(1)两个相邻的外边距都是正数时,折叠结果是它们两者之间较大的值。(2)两个相邻的外边距都是负数时,折叠结果是两者绝对值的较大值。(3)两个外边距一正一负时,折叠结果是两者相加的和。

  3. 使用display: inline-block; 会为这个盒子的内容创建新的BFC(块级格式上下文)。创建了新的BFC的元素与它的子元素的外边距不会折叠

  4. BFC是一个独立的布局环境,BFC中的元素布局是不受外界的影响,并且在一个BFC中,块级盒子与行盒(行盒由一行中所有的内联元素所组成)都会垂直的沿着其父元素的边框排列

  5.  这里的父元素设置了display:inline-block;导致父元素创建了新的BFC。所以子元素(文字)设置的margint-top不会影响到父元素

同学这里只需要先了解一下这个概念, 随着同学更深入的学习,对这里理解就会更加明白了。

如果帮助到到了你,欢迎采纳

祝学习愉快~~~

0

好帮手慕慕子

2019-04-09

同学你好, 这里是由于浏览器的bug造成设置子元素的margin-top值,导致父子元素一起下落。

这里也可以使用其他方法消除这种影响, 示例:

  1. 为div设置overflow:hidden;

    http://img.mukewang.com/climg/5cac7e960001495c09620205.jpg

  2. 为div设置内边距padding-top

    http://img.mukewang.com/climg/5cac7e810001950909250247.jpg

同学学习的过程中, 对于这种问题可以积累下来,总结一下,方便自己以后做布局的时候使用

如果帮助到了你,欢迎采纳

祝学习愉快~~~



0
hi1860
h 老师你好,在这段代码中我不明白为什么加上display:inline-block;可以实现只移动文字而父元素不动,原理是什么?
h019-04-10
共1条回复

好帮手慕慕子

2019-04-09

同学你好, 效果实现正确,继续努力

欢迎采纳,祝学习愉快~~~

0
hi1860
h 老师你好,我的意思是为什么必须要加入这句话,如果不加入效果不对,背景图和文字会一起下移,请问是什么原因,不太理解
h019-04-09
共1条回复

0 学习 · 36712 问题

查看课程