CSS中单位PX的大小好像不一样?

这是w3school上的一个例子,代码如下:

<html>
    <head>
<style type = "text/css">
div.container {
    float: left;
    width: 100%;
    margin: 0px;
    border: 1px solid gray;
    line-height: 150%;
}
div.header, div.footer {
    padding: 0.5em;
    color: white;
    background-color: gray;
    clear: both;
}
h1.header {
    padding: 0;
    margin: 0;
}
div.left {
    float: left;
    width: 160px;
    margin: 0;
    padding: 1em;
    border-right: 1px solid gray;
}
div.content {    
    margin-left:190px;
    padding: 1em;
}
</style>
    </head>

    <body>
        
        <div class = "container">
            
            <div class = "header"><h1 class = "header">W3school.com</h1></div>
            <div class = "left"><p>"Never increase, beyond what is necessary, the number of entities required to explain anything."William of Ockham(1285-1349)</p></div>

            <div class = "content">
                <h2>Free WebBuilding Tutorials</h2>
                <p>At W3school.com.cn you will find all the Web-building tutorials you need, from basic HTML and XHTML to advanced XML, XSL, Multimedia and WAP.</p>
                <p>W3School.com.cn - The Largest Web Developers Site On The Net!</p></div>

            <div class = "footer">Copyright 2008 by YingKe Investment.</div>
        </div>
    </body>
</html>

其中div.left的宽度是160px,而div.content的左边距是190px,但是视觉上div.left的宽度要比div.content的左边距宽很多啊。如下图:
图片描述

请问这是为什么?

阅读 5.2k
5 个回答

那个190px其实是包括左边的160px算进去了 因为left浮动了 可以用控制台具体看元素大小

padding: 1em;

div.left有个padding:1em样式,em指字体高,浏览器默认字体高为16px,再加上div.left本来宽度设置了160px,和右边框1px,所以加起来160+16+16+1=193px,而样式中div.content设置的是190px并没有完全超过div.left,因为它浮动了,把div.content设置margin-left:193px就可以看出来
图片描述

clipboard.png

实际上190px是从这里开始算的.你右边的div.content并没有浮动.

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