为什么添加上border后margin失效了

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <link rel="stylesheet" href="css/index.css" />
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        ul {
            width: 800px;
            margin: 0 auto;
            background-color: pink;
            border: 1px solid black;
        }
        ul li {
            width: 100px;
            height: 50px;
            margin-top: 50px;
            list-style: none;
            background-color: seagreen;
        }
    </style>
</head>
<body>
    <ul>
        <li>linear</li>
        <li>ease</li>
        <li>ease-in</li>
        <li>ease-out</li>
        <li>ease-in-out</li>
    </ul>
</body>
</html>

如题,没给ul添加border的时候,li标签的margin-top会使得整个ul有margin-top但是给ul添加上border后,margin-top就不对ul产生影响了呢?

阅读 2.2k
2 个回答

这个属于语法规则了:
嵌套的父子结构ul和li在垂直方向上的margin值,会取父子中较大的然后统一作用到父元素上面,如果你给父元素ul加了border之后,这个规则就发生了变化,垂直方向上margin就各管各的了

其实这是一个逻辑问题。
你没有设置border的时候,ul的上边和li的上边重合,所以出现就好像ul上边有个margin-top。
设置border之后,li是ul的内元素,所以margin-top跑到了ul里面。

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