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

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

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>背景</title>
    <style>
       div{
            width:558px;
            height:559px;
            background-image:url(http://img1.sycdn.imooc.com/climg//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>


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

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

3回答
好帮手慕慕子 2019-04-10 12:10:21

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

  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不会影响到父元素

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

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

祝学习愉快~~~

好帮手慕慕子 2019-04-09 19:17:00

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

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

  1. 为div设置overflow:hidden;

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

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

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

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

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

祝学习愉快~~~



  • 提问者 Di1860 #1
    老师你好,在这段代码中我不明白为什么加上display:inline-block;可以实现只移动文字而父元素不动,原理是什么?
    2019-04-10 11:15:12
好帮手慕慕子 2019-04-09 18:56:42

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

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

  • 提问者 Di1860 #1
    老师你好,我的意思是为什么必须要加入这句话,如果不加入效果不对,背景图和文字会一起下移,请问是什么原因,不太理解
    2019-04-09 18:58:14
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

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

在线咨询

领取优惠

免费试听

领取大纲

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