开发者社区> 问答> 正文

负的margin值为什么可以改变块状元素的宽度?

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>CSS负边距测试</title>
<style type="text/css">
    #test-width, #test-width2 {
        text-align: center;
        margin-right: auto;
        margin-left: auto;
        width: 400px;
        height: 80px;
        background-color: purple;
    }
    #test-block, #test-block2 {
        background-color: blue;
    }
    #test-block2 {
        margin-right: -100px;
        margin-left: -100px;
    }
</style>
</head>
<body>
<div id="test-width">No2父元素
    <p id="test-block">我是No2子元素 </p>
</div>
<hr />
<div id="test-width2">No2父元素
    <p id="test-block2">我是No2子元素 </p>
</div>
</body>
</html>

screenshot

展开
收起
a123456678 2016-05-27 16:05:17 2114 0
1 条回答
写回答
取消 提交回答
  • 因为P为block元素且没有指定width,则p的width+padding+border+margin=父级div的width(这里都是说的水平方向)。

    这里假定padding,border为0。父级div width为400px。p的width为inherit。不设置margin,则p的width为400px。正如text-block。

    当margin-left:-100px;,p.width + (-100px) = 400px。So, p的width就变成了500px。

    这里说的p都是假定为inherit width。如果指定了p的width,则margin-left,margin-top为负值会引起p元素位置的变化。

    2019-07-17 19:18:09
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载